用哪種程式語言寫的應用漏洞最嚴重 Java還是Python

2021-01-08 電子發燒友
用哪種程式語言寫的應用漏洞最嚴重 Java還是Python

機器之心 發表於 2021-01-06 16:19:26

靜態代碼分析安全公司 Veracode 近日發布了一份應用程式分析報告,結果發現比起 JavaScript 和 Python 等語言,C++ 和 PHP 的安全漏洞要嚴重得多。

如果你是一位靠 .NET、C++、Java、JavaScript、PHP 或 Python 吃飯的開發者,那要注意了:一項新研究揭示了這些程式語言的主要安全漏洞。   靜態代碼分析安全公司 Veracode 近期發布了這些語言的漏洞類型數據,這是該公司掃描了 13 萬應用程式的安全問題後得到的報告。   該公司調查了用 .NET、C++、Java、JavaScript、PHP 或 Python 編寫的應用程式的漏洞趨勢。這些數據整合在 Veracode 的《軟體安全狀態第 11 卷(State of Software Security Volume 11)》報告中: https://www.veracode.com/sites/default/files/pdf/resources/ipapers/security-flaw-heatmap/index.html。  

  Veracode 掃描 13 萬個應用程式後得到的漏洞類型數據。 對於最常用的前端開發語言 JavaScript,Veracode 發現 31.5% 的應用至少有一個跨站腳本(XSS)漏洞,而用 PHP 寫的應用中有 74.6% 至少有一個 XSS 漏洞。此外,71% 的 PHP 應用存在加密問題。 對於用 .NET 寫的應用,最主要的問題是信息洩露——62.8% 的 .NET 應用存在該問題。C++ 應用最大的問題是錯誤處理,佔到了 66.5%。

  至於 Java 應用,首要問題是 CRLF 注入(回車或換行注入),佔受調查應用的 64.4%。Python 應用中最嚴重的安全問題與加密相關,出現在 35% 的受調查應用中。 每種語言的漏洞嚴重性也存在很大差別。Veracode 發現用 C++ 寫的應用中有 59% 存在非常嚴重的漏洞;而對於 PHP,這一數字為 52%。但是,用 JavaScript 寫的應用僅有 9.6% 有非常嚴重的漏洞,Java 應用的數據為 24%。 Veracode 首席研究官 Chris Eng 解釋了不同語言漏洞趨勢不同的原因,以及如何修復它們以避免嚴重損失。

  「從整體數據上看,我們這個行業過去十年來沒能消除任何一種漏洞類別。」Eng 說,「沒有任何問題完全消失。很多事情都在波動,但看看平均情況,你會發現相比於其它指標,這些數據更能反映語言選擇和語言流行程度的變化。我們看到 C++ 常見的緩存溢出問題有下降的趨勢,但這並不是因為開發者處理這些問題的能力更強了,而是因為使用 C++ 進行開發的人變少了。」

  另一方面,影響 JavaScript 和 Python 的問題則有所增長,原因是這兩種語言現在非常流行。在企業層面上,Java 和 .NET 依然備受歡迎。 PHP 依然是網頁應用開發最常用的腳本語言之一,但 Eng 指出 PHP 漏洞數量更高的原因是該語言提供了大量不安全的原語以及大量錯誤開發的方式。

  「有些語言會盡力避免開發者考慮不周而把事情搞砸,.NET 就是其中最早的語言之一。」Eng 解釋說,「相比於使用 PHP,使用 .NET 時,你會發現大量 API 都有更安全的默認設置,使得出現跨站腳本錯誤或 SQL 注入錯誤會困難得多。在 PHP 中,這些錯誤幾乎是默認的——除非你剛好在使用一種能為你提供更多保護的更現代框架。使用 PHP 出錯的情況實在太多了。」

  Veracode 在其分析的 JavaScript 應用中發現的漏洞遠遠更少,但即使 JavaScript 有更安全的默認設置,龐大的 npm 生態系統中的 JavaScript 和 node.js 開源軟體庫是潛在的薄弱環節。 「即使你能修復自己寫的代碼中的所有漏洞,你使用的第三方軟體庫仍會帶來諸多變數。」Eng 說,「打補丁實際上並不如你期望的那麼好。現在的趨勢是開發者在需要時才會去下載這些軟體庫的最新版本,然後他們就再也不更新了,除非這個軟體庫又增加了什麼新功能。」

  工程開發和產品團隊應該如何降低為關鍵應用程式打補丁的麻煩和成本?Eng 的建議是保持更新並且清晰地跟蹤構建應用的技術和安全成本隨時間的變化情況。在某個時間,該應用將需要得到修復或打補丁,其中包括語言更新和關鍵軟體庫的補丁。

  Eng 說:「如果我現在在使用 4.5 版,而 4.6 版已經出來了,我可以使用該補丁,同時幾乎不會產生功能方面的影響。開源軟體庫不會在小版本更新中對軟體庫進行重大修改。但如果你現在使用的是 2.0 版,那麼你就必須得更新到 4.6 版,這個過程會很痛苦」。 對於使用龐大 npm 生態系統的 JavaScript 來說,更新軟體庫這個問題可能會更嚴重一點,但 Java 和 Python 都有各自的大型生態系統:Maven 和 PyPI。

  Eng 表示 JavaScript 應用平均有大約 400 個依賴關係。如果來看第 90 百分位數的 JavaScript 應用程式,它們的依賴關係數量可達 1000 或 2000 個。 應用安全公司 Snyk 曾解釋說影響 JavaScript、Ruby、Java、PHP 和 Python 的大多數安全漏洞都源自項目中加載的主要組件之間的間接依賴關係。 還有一點,某些 JavaScript 軟體庫非常受歡迎,多達 80%-90% 的 JavaScript 應用在使用它們。

  Eng 說:「只要這些軟體包中某一個包裡有一個漏洞,你就繼承了該風險。而且這不只是安全風險。」 他指的是 JavaScript 軟體庫 left-pad 曾出現過的情況:2016 年的一場爭吵之後,一個開發者將該軟體庫移出了 npm。 「它從 GitHub 上消失了,然後突然之間,三分之二的網際網路崩潰了,因為它們全都依賴這個幾行代碼的軟體庫來確定一個數是否在左側填充了零。」 原文連結:https://www.zdnet.com/article/programming-language-security-these-are-the-worst-bugs-for-each-top-language/

責任編輯:xj

原文標題:用哪種程式語言寫的應用漏洞最嚴重?

文章出處:【微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請註明出處。

 

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 用哪種語言寫的應用漏洞最嚴重?六大主流語言代碼漏洞分析報告出爐
    靜態代碼分析安全公司 Veracode 近日發布了一份應用程式分析報告,結果發現比起 JavaScript 和 Python 等語言,C++ 和 PHP 的安全漏洞要嚴重得多。
  • Python與Java:你應該學習哪種語言,他們有什麼區別?
    Python與Java:你應該學習哪種語言,他們有什麼區別? 在企業招聘中, Python和Java經常是需求比較大的程式語言。這兩種編程功能強大,靈活且面向對象的語言,通常在組織中和各種其他設置中使用。
  • 相比於Java,python到底有哪些優勢?
    談到編程,首先不可避免的是程式語言。由於在AI的帶動下python更是異軍突起,撼動了許多老大哥的地位。可唯獨java穩如泰山,不可動搖!自然而然的就會出現python與Java的討論聲。本文的目的在於討論python和java相比到底有哪些優勢,至於缺點暫且不提!
  • 《小灰教你零基礎學python》-Python入門語言
    二、什麼是程式語言程序(軟體)是使用程式語言編寫的,比如咱們日常使用的微信、qq、瀏覽器、播放器都是使用程式語言編寫的,程式語言有哪些:javapython>c語言php(有人稱php是最好的程式語言)這裡包括咱本套課程需要學習的python,其實理解咱這麼理解就行:咱們和外國人交流需要說英語,那麼咱們必須要學會英語才能和對方溝通;咱們需要讓電腦進行「溝通」就必須要使用程式語言。
  • 慢步學習,python語言編程,來扯扯語言的學習理解
    語言的學習,就是不斷的累積相應情景下的語言表達。程式語言的學習,也在於累積程式語言語句的使用情景和效果。因此學習編程最有效的方式就是編寫實例程序。不在於程序的完備,在於理解程序原始碼的適用場景和效果。這部分是python編程學習的主體內容,但這部分內容,無法一口吃個大胖子,還是需要一點一滴累積。程式語言與自然語言的差異程式語言,困擾人們的是,它需要通過恰當的途徑轉達給計算機閱讀理解。
  • Python成程式語言首選,人工智慧是其最大推力
    2018年,python程式語言榮獲「年度程式語言」稱號!在2018年獲得了最多的排行積分,贏得了3.62%佔比,其次是VisualBasic .NET和Java。Python如今確實已經成為大型程式語言的一部分。
  • C/C++、Java、JavaScript、PHP、Python分別用來開發什麼?
    首先,我們先普及一下程式語言的基礎知識。用任何程式語言來開發程序,都是為了讓計算機幹活,比如編寫一篇文章,下載一首MP3等,而計算機幹活的CPU只認識機器的指令,所以,儘管不同的程式語言差異極大,最後都得「翻譯」成CPU可以執行的機器指令。理論上任何語言幹任何事情幾乎都可以,但是主要幹什麼那就不一樣了。
  • Python為什麼這麼火?小孩子適合學習python編程嗎?
    Python出現的時間也就短短幾年,但就是在這短短幾年內,它打破了長久以來程式語言被三巨頭(C/JAVA/C++)統治的局面,蟬聯各大編程熱門語言排行榜榜首,成為當下最熱門的明星級程式語言之一。IEEE Spectrum 2017程式語言排行榜為何Python能迅速火起來?今天咱們就來好好聊聊最直接的幾個原因。
  • 機器人10大流行程式語言對比 你掌握了哪種?
    在本文中,我們將會審視在機器人學中最流行的10種程式語言,深入探討它們各自的優缺點以及使用和棄用它們的原因。  這實際上是個很有道理的問題——畢竟,如果你從不付諸實踐,那為什麼要花大量的時間和精力去學習一種新的程式語言呢?如果作為一名機器人學新人,你當然會想學習一種確實對你的職業生涯很有用的程式語言。
  • 最適合兒童的程式語言 - Python
    所以在需要找到Scratch圖形編程到高級語言圖形編程的過渡,Python就是最適合的程式語言。首先讓我們一起聊聊為什麼開始學習Python?Python就是一門程式語言。什麼叫程式語言?我們知道我們經常用的電腦,裡面裝的作業系統,軟體,以及我們使用的手機,裡面裝的各種應用,還有生活中的智能電視,智能手錶,掃地機器人等等裡面其實最基礎的就是程序。程序就是一段一段指令,跟計算機進行交流的語言,描述計算機該使用什麼數據,該做什麼。
  • 開課吧:學習編程,該學什麼語言?Python如何?
    編程編程如果是興趣方面的可以選擇比較簡單的入門語言入手,然後再慢慢切入到新的程式語言,目前相對來說比較好入門的程式語言是python,這門語言的集成度非常高,適合零基礎的入門學習,集成度高的語言在短時間能看到很不錯的效果,能在短時間內讓自己有成就感,但真要深入的學習還得腳踏實地的學習內在的東西。
  • 墮落Java vs 新貴 Python,2018 年最應該學習哪一門程式語言?
    不過因 Google 而火的 Kotlin,從開發者角度來看,確實讓代碼更加簡潔,並減輕了開發人員的代碼量,為 Android 編程提升了效率。但是還處於滲透 Android 開發階段的 Kotlin,只能說值得一試,具體還是需要根據項目來判斷是否適合。
  • 過去50年間,十大熱門語言及發明者大盤點
    因此本文收集了十大熱門程式語言背後的程式設計師和設計者的名字和大家分享。以下是十大熱門程式語言及其創建者,排名不分先後。1. Java——詹姆斯·高斯林Java是最流行、最成功的程式語言。詹姆斯·亞瑟·高斯林博士發明了Java,被譽為Java程式語言之父。
  • 編程應該選什麼語言作為入門?Java?Python?C/C++?還是PHP……
    經常有人問我,想學習編程,要學什麼語言好呢?什麼語言最有前景?什麼語言工資高?什麼語言最好?通常遇到這樣的問題我都會反問一句你為什麼要學編程?其實語言沒有最好,只有最適合,你的興趣點在哪,你學習的目標是什麼?
  • 世界排行第一的程式語言:java迎來25歲生日
    作為全球排名第一的程式語言,本周末Java將迎來 25 歲生日。Java起源於 1991 年的「 Oak」項目,由James Gosling領導。面向對象的Java以其「一次編寫,隨處運行」的可移植性而聞名,因為Java虛擬機支持多種硬體平臺和作業系統以及Java applet可以從網頁上運行。
  • 業界| 四大機器學習程式語言對比:R、Python、MATLAB、Octave
    作者列出了這些語言(工具)的優缺點,希望對想開始學習它們的人有用。它是一個 GNU 項目,與貝爾實驗室的 John Chambers 及其同事開發的 S 語言及環境類似。R 可以視為 S 的一種不同實現。二者存在一些重要差異,但使用 S 寫的很多代碼在 R 下運行時無需修改。
  • Python 程式語言的發展簡史
    用他的話說,儘管擁有數學和計算機雙料資質,他總趨向於做計算機相關的工作,並熱衷於做任何和編程相關的活兒。在那個時候,Guido接觸並使用過諸如Pascal、C、 Fortran等語言。這些語言的基本設計原則是讓機器能更快運行。在80年代,雖然IBM和蘋果已經掀起了個人電腦浪潮,但這些個人電腦的配置很低。
  • Python能否超越Java成為「邁入未來」的程式語言
    程式語言領域Python成為了一個耀眼的新星,Python崛起的原因與其本身特點有關,也許它是更加符合開發者的習慣和口味。現在有一種聲音說Python將會超越Java成全球最流行程式語言,你又是怎麼認為的呢?
  • 2021發展前景好的程式語言,Python、Java上榜,第一實至名歸
    無論是Web開發,機器學習,數據科學還是任何其他領域,程式語言都是幾乎所有學科的最重要前提。而且,每年,我們都會看到這些程式語言的排名如何根據它們在開發人員中的需求和受歡迎程度而變化。同時,您需要了解所有最新的程式語言趨勢和索引,以保持與技術市場的相關性。特別是,強烈要求初學者在選擇特定的程式語言之前,先考慮幾個關鍵方面,例如需求和受歡迎程度,工作機會,應用程式等。 1.
  • 開發崗位這麼多,為什麼選Java?你學Java了嗎-開課吧
    TIOBE編程排行榜根據全球工程師、課程和搜尋引擎數量為指數得出,在一定程度上反映了程式語言的發展趨勢。程式語言排行榜目前很多軟體都是用Java寫的,新出的系統和函數庫為了市場,也會儘量和Java兼容或者提供Java