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

2021-01-07 電子發燒友
打開APP
用哪種程式語言寫的應用漏洞最嚴重 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閱讀更多精彩內容

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

相關焦點

  • 月入過萬的程式語言PHP、Python、Java到底該選擇哪一個
    是太陽系最好的語言php?還是在編程江湖名稱響噹噹的Python?還是很早就玩起對象模式的java?同學們是不是已經一頭霧水了呢?下面我們來分析下各個語言的優劣勢說到php,大家第一反應是「世界上最好的語言」,沒毛病,它就是啊,php是開發最快速的語言,很多中小型創業公司首選的第一語言。別的語言還在搭架構,php開發的項目已經上線了,what?
  • python和java哪個好
    python和java哪個好?書聲琅琅Python培訓老師介紹,這兩年來IT教育發展迅速,程式語言隨著發展也日益月異,比較火的Python語言發展迅速,與傳統使用的JAVA語言來說,火爆程度差不多,就有同學問了,python和java這兩個語言到底哪個好呢?
  • 軟體程式語言這麼多,為什麼淄博小夥伴選擇Java呢
    大數據 01|Java(Java是大數據的基礎程式語言) 02|Scala(你可以把Scala理解成Java的兒子、和Java相似至極,用Scala開發比用Java開發會顯得更簡潔) 03|Python
  • java、php、python誰更容易學習呢?
    IT開發是公認的高薪行業吸引了很多人的加入,目前市場上受歡迎的程式語言很多,其中java是老牌程式語言,擁有很高的市場佔有率,php被看做是Web後端開發的主要語言,而python隨著人工智慧時代的到來而備受關注。
  • 日常疑惑:編程學Java還是學C語言?
    這兩門程式語言都是IT行業的寵兒,Java與和C語言各自的技術特點、應用方向上有所不同,沒有伯仲之分,所以這也讓初學者們覺得很難選:應該選擇哪個做為入門語言呢?從學習的難易度上來說,java語言比C語言要簡單。
  • 《小灰教你零基礎學python》-Python入門語言
    二、什麼是程式語言程序(軟體)是使用程式語言編寫的,比如咱們日常使用的微信、qq、瀏覽器、播放器都是使用程式語言編寫的,程式語言有哪些:javapython>c語言php(有人稱php是最好的程式語言)這裡包括咱本套課程需要學習的python,其實理解咱這麼理解就行:咱們和外國人交流需要說英語,那麼咱們必須要學會英語才能和對方溝通;咱們需要讓電腦進行「溝通」就必須要使用程式語言。
  • 最適合單片機編程的高級語言,除了C語言,別無選擇!
    單片機為什麼還在用C語言編程?答案是:C語言是最適合單片機編程的高級語言。 這個問題的意思應該是:現在有很多很好用的高級語言,如java,python,VC等等,為什麼這些語言不能用來編寫單片機程序呢?那麼這個問題的答案就是:不能不能,而是不合適。
  • 90%的公司都在用!百萬開發者最需要的程式語言
    對於很多想通過學習程式語言,進入IT行業發展的人來說,最大的困難是不知從何入手?不知道應該選擇哪門程式語言?有人告訴你要學java,因為現在用的人比較多;也有人告訴你要先學python,簡單易學,它是人工智慧時代的首選語言;有人會告訴你先學習JavaScript,掌握他便可無敵。
  • 程式語言那麼多,選擇學習C語言的三大理由!
    都2020年了,為什麼大學裡教的第一門語言還是C?最近在網上看到很多同學都在吐槽這個問題。程式語言那麼多,C語言到底有何優勢值得大家選擇呢?首先作為一門已經問世50年的老語言了,C語言已經很老了,但不可否認的是它仍然很能打,無論是曾經風靡一時的java還是現在火熱的python,在風口過後,屹立不倒的還是C語言。根據最新的TOIBE排名,C語言高居榜首,而且縱觀近20年程式語言的排名變化,C語言也一直都是前三甲,這充分說明了它的江湖地位!
  • Python入門指南教程:10天學會使用python做爬蟲!免費領取!
    從去年開始,公眾號鋪天蓋地的python廣告,讓很多行外人也知道了python這個東西,python語言開始變得無所不能,剛畢業的新手用python能做什麼?前些天我弟弟突然聊天,推薦我學python,我把聊天截圖給了學計算機的楊先生。楊先生的解釋:python和C語言、java一樣是一門程式語言。學會了或許可以三分鐘做好excel的數據分析。但是,為了寫這個三分鐘的程序,你可能要花一個星期的時間。
  • 北大青鳥:2020年5月中國程式語言排行榜,哪種編程工資最高呢?
    :0.71% 簡介:Scala是一門多範式的程式語言,一種類似java的程式語言 ,設計初衷是實現可伸縮的語言 、併集成面向對象編程和函數式編程的各種特性。Swift是一款易學易用的程式語言,而且它還是第一套具有與腳本語言同樣的表現力和趣味性的系統程式語言。Swift的設計以安全為出發點,以避免各種常見的編程錯誤類別。
  • 反序列化漏洞詳解 一文了解反序列化漏洞
    本篇總結歸納反序列化漏洞 包括php、java、python三種語言一、什麼是序列化和反序列化1、序列化和反序列化序列化是將複雜的數據結構(如對象及其欄位)轉換為「更平坦」格式的過程 這種格式可以作為連續的字節流發送和接收 序列化數據使以下操作更簡單:反序列化是將字節流還原為原始對象的過程
  • 腳踢java,拳打php,年薪百萬的python!該擔心找工作嗎?我勸你冷靜
    >針對上面的問題我就打算先對比下幾個點,數據來源於職友集,拉鉤等各大網站對比之前,請讓我先喊一聲1、職位的問題這裡展示了前10名城市的職位個數,毫無疑問,北京、上海這種一線城市是職位最多的,但是一些二線城市也不少但是沒有對比就沒有傷害,我們用老牌語言
  • Python和Java哪個更適合做自動化測試?
    因為Python化繁為簡,給程式設計師們減輕了很多壓力,以至於業界衍生出:人生苦短,我用Python。Java:寫一次代碼,在哪裡都可以用Java誕生於1995年,這是一門以Class為單位,高度面向對象的高級程式語言。
  • 最適合兒童的程式語言 - Python
    我們知道我們經常用的電腦,裡面裝的作業系統,軟體,以及我們使用的手機,裡面裝的各種應用,還有生活中的智能電視,智能手錶,掃地機器人等等裡面其實最基礎的就是程序。程序就是一段一段指令,跟計算機進行交流的語言,描述計算機該使用什麼數據,該做什麼。自從有了計算機,就有了程序,因為控制計算機就是依賴的各種各樣的程序。
  • python與c語言的語法有哪些不一樣的
    在眾多程式語言之中,想必很多人都聽說過Python和C語言,在進行編程學習之前,大家都會問:python和c語言的區別有哪些?我該如何選擇?接下來我們來看看吧。2、內存管理:Python使用自動垃圾收集器進行內存管理;在C語言中,程式設計師必須自己進行內存管理。3、應用:Python是一種通用程式語言,多範式的,支持面向對象編程、程序編程以及函數編程;C是結構化程式語言,允許使用函數、選擇、迭代,主要用於硬體相關的應用程式。
  • 編程應該選什麼語言作為入門?Java?Python?C/C++?還是PHP……
    經常有人問我,想學習編程,要學什麼語言好呢?什麼語言最有前景?什麼語言工資高?什麼語言最好?通常遇到這樣的問題我都會反問一句你為什麼要學編程?其實語言沒有最好,只有最適合,你的興趣點在哪,你學習的目標是什麼?
  • 0基礎入門Python學習步驟如何安排?
    只有這樣才能朝著目標持續前進,少走彎路,從學習中得到不斷的提升,享受python學習計劃的過程。 雖然目前的程式語言有很多,但是基礎語法上的概念,本質上都是相通的。可以做到一通百通。所以沒有必要為了學哪門語言糾結太多。
  • 如何入門中學生編程
    相信很多同學對編程很感興趣,但是卻不知道如何入門以及入門難度如何,廢話少說,直接進入主題。首先,學習編程不難,難的是自己的想法(如果有同學學習過就知道了)。其次,如何入門。對於零基礎的同學推薦學習 python ,語法簡單,可以做的事情很多(視個人能力而定)。
  • Python 一舉超越 Java,最新程式語言流行度排名來啦
    京東數科編譯自tiobe.com TIOBE 涉足程式語言排名已經快 20 年了,這麼多年裡,Java 和 C 語言一直霸榜前兩名,但今年形勢變了——C 語言依然拿下頭把交椅,但 Python 卻搶走了第二名的寶座。