用哪種程式語言寫的應用漏洞最嚴重 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閱讀更多精彩內容

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

相關焦點

  • 程式語言學哪個比較好?2019年最實用的程式語言
    (毫無疑問,你應該熟悉這四種語言。)第二大類語言包括Java、C#、PHP和Swift。Java 和 PHP 是主要的 Web 開發語言。C# 是微軟的程式語言,而 Swift 是蘋果新推出的主力語言。基本上來說,它們是平臺相關的。第三類語言則是Objective-C和R。1、java-大眾化的程式語言Java是歷史最悠久的程式語言之一。
  • 推薦幾款可以直接在手機上編程的app(包含Java、C、Python等)
    app,分別是:1.java和Android:AIDE集成開發環境。2.C語言:c語言編譯器、C4droid。3.python:QPython3、Termux。大部分都不需要root,可以直接編寫程序並運行,下面我簡單介紹一下這3個app的安裝和簡單使用,主要內容如下:一.AIDE集成開發環境:這個主要是用來寫java代碼(創建工程、寫小遊戲等),當然也可以寫c++代碼,只不過需要安裝對應的插件才行,自帶自動補全的功能,界面乾淨、整潔,使用起來不錯,下面我介紹一下這個app的安裝和簡單使用:
  • 人工智慧機器人研發的十大熱門程式語言:不死 Java、不朽 C/C ++,以及新貴 Python
    流水的程式語言,鐵打的 Java、C/C++。進行人工智慧機器人研發,應該選擇哪種程式語言?這是很多機器人專家在自身的職業生涯中都會存在的一個入門級思考。畢竟,在學習一門程式語言時,需要花費大量的時間及精力,如果掌握了這門語言卻又不發揮其真實的價值,又有什麼用呢?但不幸的是,到目前為止,也沒有一個確切而直接的答案出現。
  • Perl還是Python或者R
    從事生物信息工作,至少要一門程式語言,那麼到底該選擇哪門程式語言呢?
  • 自學python程式語言都有哪些免費網站值得收藏?
    python是未來人工智慧最好的程式語言,很多程式設計師在有其她編程基礎的情況選擇學習python是比較容易的,當然現在很多想進入編程界的新手選擇python開始接觸學習編程,但是由於經費有限,只能選擇最便宜的學習方式就是自學成才,不管是新手還是有編程經驗的程式設計師自學最好的選擇就是網上直接看視頻看資料
  • 為什麼編程要學這門語言?因為它是編程界的易烊千璽啊
    就像python程式語言一樣,這幾年飛速發展,甚至一度超越java成為最受歡迎的程式語言,也是最受歡迎的人工智慧程式語言。python作為一門簡單易上手的程式語言,非常便於書寫,程式設計師可以騰出身來把大部分精力放在業務本身,而不是被繁瑣的程序語法絆住腳。
  • 人生苦短,我用Python
    2017年python排第一也無可爭議,比較AI第一語言,在當下人工智慧大數據大火的情況下,python無愧第一語言的稱號,至於C、C++、java都是萬年的老大哥了,在代碼量比較方面,小編相信java肯定是完爆其它語言的。
  • 深圳Python培訓班打造行業高標準Python人才
    我們都知道Web前端一直都是不可忽視的存在,我們離不開網絡,離不開Web前端,利用Python的框架可以做網站,而且都是一些精美的前端界面,另外我們需要掌握一些數據的應用。Python火的原因1、python相比別的高級語言集成度更高,除了執行的效率低些,開源可以調用的類庫實在太多了,要實現一個功能,如果換作傳統的程式語言,需要實現基本的功能模塊,但直接調用類庫很方便的搞定,特別適合零基礎的學習, 幾行代碼就能實現很強大的功能。
  • python與c語言的語法有哪些不一樣的
    在眾多程式語言之中,想必很多人都聽說過Python和C語言,在進行編程學習之前,大家都會問:python和c語言的區別有哪些?我該如何選擇?接下來我們來看看吧。2、內存管理:Python使用自動垃圾收集器進行內存管理;在C語言中,程式設計師必須自己進行內存管理。3、應用:Python是一種通用程式語言,多範式的,支持面向對象編程、程序編程以及函數編程;C是結構化程式語言,允許使用函數、選擇、迭代,主要用於硬體相關的應用程式。
  • 無編程基礎,無計算機基礎都能看懂的零基礎入門Python
    雲計算: 雲計算最火的語言, 典型應用OpenStackWEB開發: 眾多優秀的WEB框架,眾多大型網站均為Python開發,Youtube, Dropbox, 豆瓣。。。(1)動態類型語言:動態類型語言是指在運行期間才去做數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其他的各種腳本語言如VBScript也多少屬於動態類型語言。
  • Python和C語言的語法有什麼不同?
    隨著經濟發發展,網際網路精英的缺乏越來越嚴重了,尤其是編程工程師,市場缺乏率極高,所有對於準備即將學習編程朋友,是一個非常的好時機 python與C的區別如下: 1、語言類型:Python是一種基於解釋器的語言,會逐行讀取代碼,將Python編譯為字節碼,由大型C程序解釋;C是一種編譯語言,完整的原始碼將直接編譯為機器代碼,由CPU直接執行。
  • 初學者入門大數據,為什麼要先學習一門程式語言?
    首先,0基礎入門大數據,先從一門程式語言入手。加米谷大數據建議,如果你想往大數據開發方向走,學習Java,想學數據分析或者數據挖掘,那就選Python。為什麼一開始的入門要學習編程呢?學習大數據,不能只看數據,不能只設計算法,關鍵是要通過編程把算法來實現,看算法是否對數據有一定的效果。如果不學一門語言,你就不能和計算機對話,就沒有辦法讓計算機來處理數據,也就不能證明你的想法和算法的有效性和準確性。既然編程是基礎,重要性就不用加米谷在多說了吧,一定要學好哦。
  • 揭 秘 | 用Python寫了自動化交易程序,2年躺著賺了200萬?!
    2017年7月:Python榮獲2017年最流行程式語言。「Python 是一門新手友好、功能強大、高效靈活的程式語言,進入火熱的 AI 人工智慧時代後,它也逐漸取代 Java,成為編程界的頭牌語言。在程式語言中, Python 長期穩居前五,不僅已經成為數據分析、人工智慧領域必不可少的工具,還被越來越多地公司用於網站搭建。Python 方向崗位的薪水在水漲船高,成為目前最有潛力的程式語言之一。」
  • 工控上位機編程學習技巧
    對於讀者來說,如果能夠找到該領域中的「四書五經」,則無論在時間上還是金錢上都是最經濟的選擇。好書幾本,勝過爛書幾捆,這個體會想必大家都有。在此,幫助大家遴選各個技術領域裡的「四書五經」。編程的書可謂汗牛充棟,其中經典也是不泛其數,但絕大多數的過來人,都一致認為,要想很快地入門並儘快地投入到編程實踐中,只要其中的四到五本也就夠了,即只看經典中的經典,聖經級的書就可以了。
  • 手機APP都是用什麼程式語言寫的呢
    打開APP 手機APP都是用什麼程式語言寫的呢 C語言與程序設計 發表於 2020-12-24 17:05:28   今天想和大家分享的內容是和我們手機上APP相關的,它們都是用什麼程式語言寫的呢?
  • 未來學習三要素之一「編程」掌握21世紀的外語
    學習編程程序能拓展你的思維,能幫你更好地思考,並訓練出一種思維方式,我認為這種思維方式在任何領域都有用——比爾·蓋茨。編程,又名計算機編程,是一種技術語言。我從業IT培訓行業多年,我任務額,不論孩子年齡多大,都應該學編程,這非常重要,現在市面上,幼兒階段都有遊戲化的編程、圖形化界面的編程,都是為各個年齡階段的孩子精心設計的。我這樣說,並不是讓所有的孩子都能像託馬斯這樣的專業應用程式開發人員,而是因為學習編程的過程不僅對那麼像當程式設計師或計算機工程師的人有益,它對每個人都友誼。
  • 高級爬蟲實踐|記錄一次自動登錄淘寶網站 By Java
    一點廢話接上一篇文章(https://wenda.shukaiming.com/article/54),猿哥嘗試了很多種方式(包括切換瀏覽器和程式語言),暫時放棄使用 Facebook 的 PHP webdriver了。
  • 2020年頂級大數據程式語言有哪些?
    科技市場由大數據主導,因此,如果作為大數據專業人士,必須學習最重要的程式語言。大數據中最喜歡的程式語言:PythonPython在全球擁有500萬用戶,目前被其視為開發人員最常用的程式語言之一。Python由Guido van Rossum於1991年開發,Python成為程式設計師第一個學習入門級程式語言。Python最適合針對大數據職業的技術專業人員,將在數據分析,Web應用程式或統計代碼與生產資料庫集成一起時,Python成為了最佳選擇。
  • 少兒編程有什麼好處?線上學習好還是線下學習好?
    少兒編程有什麼好處?線上學習好還是線下學習好? 這並沒有一個絕對的答案,各有利弊。培訓最重要的不是品牌,而是老師,名師是最好的保障。很多中小培訓班的老師都是程式設計師退休或轉型的,如果有積累了一定的教學經驗以後,這樣的培訓質量是最好的。
  • 2021年Java和Python的應用趨勢會有什麼變化
    首先,在雲計算、人工智慧時代,影響後端程式語言流行程度的關鍵因素可能並不在IT網際網路領域,而是在傳統行業領域,因為在工業網際網路的推動下,大量傳統行業領域需要藉助於雲計算、大數據、人工智慧等平臺來實現創新,所以大量的開發人員將走向傳統行業領域,這對於程式語言的應用會產生比較直接的影響。