程式語言安全漏洞:C++、PHP、Java、Python、.Net 和 JavaScript

2020-12-17 開源中國

在當下的市場環境中,除了掌握困擾軟體的最常見安全問題外,開發人員還應該了解到底是什麼問題在影響他們正在使用的程式語言。靜態代碼分析安全公司 Veracode 最近發布了一份年度軟體安全狀態(SOSS)報告,其中的第 11 卷則揭示了用 .NET、C++、Java、JavaScript、PHP 或 Python 編寫的應用程式中所存在的主要安全漏洞類型(基於掃描的 13 萬個應用程式)。

Veracode 的高級內容營銷經理 Meghan McBee 稱,「在你坐下來編寫代碼之前,了解這些應用程式的安全趨勢意味著你準備好快速修復它們,或者甚至是完全阻止它們。如果你選擇的是 C++、PHP、.Net 或 Java 語言,請注意,它們很容易出現一些風險最高的漏洞。實際上,高達 59% 的 C++ 應用具有嚴重程度非常高的缺陷,PHP 則緊隨其後。」

Veracode 發現,用 JavaScript 編寫的應用中,有 31.5% 的應用至少存在一個跨站腳本(XSS)缺陷;用 PHP 編寫的應用中,有 74.6% 的應用至少存在一個 XSS 缺陷。此外,還有 71% 的 PHP 應用存在加密問題。

用 .NET 編寫的應用程式中存在的主要問題是信息洩露,佔比 62.8%;其他還包括有代碼質量(53.6%)、輸入驗證不足(48.8%)等。C++ 的問題有:錯誤處理(66.5%)、緩衝區管理錯誤(46.8%)、數值錯誤(45.8%)、目錄遍歷等。

Java 的問題包括:CRLF 注入(64.4%)、代碼質量(54.3%)以及信息洩露(51.9%)等。而對於 Python apps,其中發現的主要問題則與加密有關,佔比 35%。

值得注意的是,在每種語言的應用程式中發現的缺陷的嚴重性也有很大的區別。Veracode 發現,有 59% 用 C++ 編寫的應用程式和 52% 用 PHP 編寫的應用程式存在高嚴重性缺陷。用 JavaScript 編寫的應用程式中,只有 9.6% 存在高嚴重性缺陷。Java 的高嚴重性缺陷數據則為 24%。

針對這些數據,Veracode 首席研究官 Chris Eng 分別作出了解讀。他指出,例如,C++ 中常見的緩衝區溢出問題出現了下降的趨勢,這並不是因為開發者的進步,而是在於 C++ 的流行度的下降。另一方面,受語言流行度上升的影響,影響 JavaScript 和 Python 的問題則正在一點點爬升。

Java 和 .NET 在企業中仍然很受歡迎,PHP 也仍然是 Web 應用開發中最受歡迎的腳本語言之一。Eng 認為,PHP 代碼中的漏洞較多的原因主要在於,該語言提供了很多不安全的 primitives 和錯誤地處理方法 。

而相較之下,儘管 JavaScript 應用中發現的缺陷較少,但 JavaScript 和 node.js 開源庫的龐大 npm 生態系統仍是其一個潛在的弱點。Eng 建議工程和產品團隊保持更新,以降低打補丁的麻煩程度和關鍵應用的成本。

此外,應用程式安全公司 Snyk 此前則發表觀點稱,影響 JavaScript、Ruby、Java、PHP 和 Python 的大多數安全漏洞是由於項目內部加載的主要組件之間的間接依賴性引起的。

報告詳情可查看:https://www.veracode.com/sites/default/files/pdf/resources/ipapers/security-flaw-heatmap/index.html

相關焦點

  • 編程入門學什麼語言好?
    首先應該明確學習程式語言的目的-工作或興趣,這兩者差別比較大!如果是考慮就業問題,那麼根據2019年末的一個流行度調查,關於程式語言的排名,目前前三的分別是:Java(難)C(很難)Python(較難)
  • Python和Java語言,新手應該先學哪個
    我先表明下自己的觀點,java和python這兩門語言,都要學習,但是,要有先後順序。強烈推薦先學習java。java是個嚴謹、高效的程式語言,出道20餘年,在編程兵器排行榜上,常年佔據前三。有不少企業的大佬一開始拍腦袋決定使用腳本語言開發項目,到後來要麼是死掉了,要麼是變強大了,強大之後,就意味著人員不足,項目失控,腳本語言真心不適合後期的維護和擴展,人一多,項目就會變得失控和不可維護,坑自然就很多,整個項目就會拖死。不得已,很多項目都會遷移,從python遷到java,ruby項目遷移到java,這樣的例子每天都在上演,何必呢!
  • java和python哪個更好用?
    網際網路上的許多文章都舉例論證了Python和Java之間的比較。但是沒有人給出「 java和python哪個更好用?」的明確理由。我們都知道,如今Python正在與幾乎每種程式語言競爭。甚至它還在與世界上最強大的程式語言-Java競爭,Java是創建桌面應用程式的最佳程式語言之一。同時它也用於數據科學領域。
  • 《小灰教你零基礎學python》-Python入門語言
    二、什麼是程式語言程序(軟體)是使用程式語言編寫的,比如咱們日常使用的微信、qq、瀏覽器、播放器都是使用程式語言編寫的,程式語言有哪些:javapython>c語言php(有人稱php是最好的程式語言)這裡包括咱本套課程需要學習的python,其實理解咱這麼理解就行:咱們和外國人交流需要說英語,那麼咱們必須要學會英語才能和對方溝通;咱們需要讓電腦進行「溝通」就必須要使用程式語言。
  • 近50年來最具影響力的10種程式語言,都是誰發明的?
    軟體世界中有各種各樣的程式語言,每年還會有新的語言出現,最近發布的程式語言就有Scala、Kotlin、Go和Closure,但歷史車輪滾滾向前,浪花淘盡英雄,它們中只有少數才能夠存活下來。程式語言是軟體開發中最重要的東西,多年來伴隨著人們的討論和批評不斷改進,沒有最好的語言,只有更合適的語言。
  • Java語言和PHP語言有什麼區別
    最近,網絡上有很多網民就選擇哪種程式語言進行學習而糾結。例如,關於Java和php的優勢和不足,今天為大家分析一下Java語言和PHP語言的區別。一、Java語言的優勢和不足Java是非常熱門的程式語言,與其他高級語言相比,則是非常基礎的語言。並且Java是跨平臺的,具有Android,Swing,J2EE和J2ME等多種應用程式。就業方面比較廣泛,市場利用者的需求也很大。由於Java經常開發大型系統,因此大型企業往往需要大量的Java資源。
  • TIOBE 11 月程式語言:Python超越Java!
    每月更新的編程排行榜,如期而至。 20年間,Java和C都是交替登上第一和第二的位置。本月Python歷史性排名第二,超越了Java,可以被稱為編程歷史上的獨特事件。
  • 開課吧:自學程式語言學哪種比較好?編程學習建議!
    自學編程受到入門基礎知識的限制,不建議學習一些底層語言,比如C,C++,這兩門語言涉及到的指針,內存的知識非常抽象,很容易反措,並且這兩門語言與底層硬體密切相關,如果沒有系統的學過計算機體系結構的知識,不容易深入。
  • 四種最令人討厭的程式語言:Java、Javascript、C++ 和 Perl
    TIOBE 12 月榜單已於日前公布,在最新的排行榜中,C 語言仍高居榜首,其次分別是 Java、Python 和 C++。
  • python初學者必看的學習路線 Python是近幾年比較火的程式語言
    Python是近幾年比較火的程式語言之一,因為人工智慧的火爆,讓很多人都想從事python開發。很多零基礎學員在學習python的時候都會走一些彎路,下面小編就為大家分享python學習路線圖,幫助零基礎學員在學習的時候少走彎路。 很多人都在問Python學習步驟應該如何安排?
  • 安卓手機端編程工具
    AIDE一 、AIDE集成開發環境可以在安卓手機上運行java程序,開發安卓應用、遊戲。還有學習java、安卓開發、安卓遊戲開發的教程。c4droid二、c4droid可以在安卓手機上運行c/c++程序,開發安卓native app、Qt應用。
  • 如何在javascript中創建一個對象?
    javascript是一門基於對象而不是面向對象的語言,由於它的這個缺陷,在javascript中實現面向對象時十分彆扭,就比如創建對象,由於在ES6之前沒有class關鍵字,想要創建對象必須依賴以下幾種間接方式。
  • 自學程式語言先學Java還是python?記住這5點你就不會迷茫
    學習程式語言,首先要了解程式語言的背景,到底是做什麼的然後進行學習,怎麼去了解程式語言的背景呢,主要是解決怎麼樣的問題,比如Java語言學完了,到底Java能幹等,什麼崗位需要Java編程,你只有這樣去了解它是做什麼的之後,你才知道自己想做Java後端還、大數據還是機器學習。
  • 程式語言那麼多,選擇學習C語言的三大理由!
    都2020年了,為什麼大學裡教的第一門語言還是C?最近在網上看到很多同學都在吐槽這個問題。程式語言那麼多,C語言到底有何優勢值得大家選擇呢?首先作為一門已經問世50年的老語言了,C語言已經很老了,但不可否認的是它仍然很能打,無論是曾經風靡一時的java還是現在火熱的python,在風口過後,屹立不倒的還是C語言。根據最新的TOIBE排名,C語言高居榜首,而且縱觀近20年程式語言的排名變化,C語言也一直都是前三甲,這充分說明了它的江湖地位!
  • 世界上最好的語言PHP:OpenCV與計算機視覺已在我掌控之下
    由於更普遍使用的程式語言是:C / C ++、Python 2/3、Lua 和 Matlab,以及框架:Caffe、TensorFlow、Torch。因此在程式語言和框架上的大量細分選擇使得找到你所需要的,併集成到項目中的過程變得更加複雜。OpenCV 中添加的一個 DNN 模塊以某種方式減少了這些混亂,它使得你可以直接使用一個在基本框架中訓練過的模型。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    6套課程) 資料庫操作(1套課程) python高級編程(6套課程) 注:零基礎全能篇中,針對windows和liunx系統均有兩套課程可供選擇學習,單純學python,哪個系統都一樣,初學者只需選擇自己熟悉的系統學習相應課程即可。
  • 超硬核的Java學習路線指南,看完以後不用再問我怎麼學Java了!
    我們都知道編程技術語言很多,如當下比較火的程式語言就有java,python,javascript,php等語言,而今天我們就來講一講熱門程式語言Java,因為現階段我們的java程序還是很厲害的,不管是大型項目、高並發上億的數據量還是操作小項目,其穩定性,安全性都是數一數二的,非常nice!!
  • 學編程要知道的6個原則,都是開發者的經驗總結
    程式設計師是這幾年最熱門的職業,如果你想學編程,想當一個優秀的程式設計師,需要掌握什麼原則呢?今天給大家分享一下學編程要知道的6個原則,都是大佬們的經驗總結。
  • csdn最適合人工智慧開發的程式語言優缺點對比
    迄今為止,人工智慧已經實施了生物識別、自動駕駛車輛和人臉識別等項目。和大多數軟體應用程式開發一樣,開發人員正在用多種語言編寫人工智慧項目,但是沒有完美的程式語言能夠全速匹配人工智慧項目。程式語言的編程選擇通常取決於人工智慧應用程式的預期功能。關於最佳人工智慧程式語言的辯論從未停止過,因此本文比較了五個人工智慧項目最常用的程式語言,列出了它們的優缺點。
  • 淺談程式語言合理的學習順序
    首先,如果條件允許,時間和精力足夠充裕,正統的學習流程應該是:C 語言,之後 C#, Java, C++三選其一學一個。其中如果學 C++請選擇一個適合自己工作背景的最小的特性集學習,之後腳本語言 php , python,ruby,perl。這幾個腳本語言學下來基本上去中小型企業找工作都十拿九穩了。