Java安全編碼:糟糕的在線建議和使人困惑的APIs

對於程序員和軟件開發人員來講,網絡論壇提供了一個交流知識和尋找具體編碼難題答案的好地方。遺憾的是,他們並不老是準確信息的來源。
圖片描述
弗吉尼亞理工大學的一組研究人員分析了數百篇關於Stack Overflow的文章,(Stack Overflow是一個很受歡迎的開發者論壇或者說Q&A網站)發現許多提供答案的開發人員並無意識到編碼選項的安全含義,並顯示出了缺少網絡安全培訓。java

他們發現的另外一件事是,有時,最熱門的帖子或答案包含了一些不安全的建議,這些建議會在軟件中引入安全漏洞,而正確的修復程序不那麼受歡迎,也不容易看到,由於它們是用戶提供的,其信譽分數較低。程序員

所以,提問者和回答者之間的社會動態確定會對人們的安全選擇產生影響。編程

得到正確的安全性安全

研究人員集中研究與Java安全性相關的帖子,從軟件工程和安全角度考慮,針對的是Spring Security的問題上發表的文章,Spring Security是一個第三方Java框架,爲企業應用程序提供身份驗證、受權和其餘安全特性。網絡

Spring Security旨在促進安全編碼,但很明顯,許多程序員發現它的APIs過於複雜,文檔記錄不足,運行時系統的錯誤報告使人困惑。框架

「此外,多語言支持獲取數據的能力至關弱。在安全應用程序中,多語言的狀況是很常見的,由於一般數據是用一種編程語言加密的(好比:Python)並在另外一個編程語言解密(例如:Java)。這些問題會嚴重阻礙開發人員的生產力。」編程語言

開發人員在花太多時間解決APIs的正確用法時常感到沮喪,而且經常選擇了徹底不安全的修補程序,好比使用過期的加密哈希函數,禁用了跨站點請求僞造保護,信任了HTTPS驗證中的全部證書,或者使用了過期的通訊協議。函數

研究人員指出:「這些糟糕的編碼實踐,若是在生產代碼中使用,將嚴重損害軟件產品的安全性。」工具

建議每一個人都參與測試

「這項工做的意義在於,咱們爲大量使人擔心的安全編碼問題提供了經驗證據,而這些問題以前並無被報道過。這些問題是因爲各類緣由,包括企業安全應用的快速增加,軟件開發人員缺少安全培訓,以及設計了糟糕的安全庫,」研究人員指出。

他們建議設計人員刪除或棄用弱安全性的APIs,設計簡化的APIs,並在默認狀況下實現強大的安全性防護,並設計乾淨且有幫助的錯誤報告接口,其中還包括可能的根本緣由和解決方案。

另外一方面,開發人員絕對應該須要安全檢查,並進行安全測試,以檢查實現的功能是否如預期的那樣工做。在Stack Overflow和其餘相似的社區網站和論壇上流行和接受的答案應該像一粒鹽,若是可能的話,它們的準確性應該是獨立的。

最近的相關研究顯示,排名靠前但不夠充分的編程Web教程也將漏洞引入了軟件。

最後,工具生成器應該考慮使它們可以自動診斷安全錯誤,並建議安全補丁或解決方案。

「構建漏洞防護技術,比較同級應用程序使用相同系列的APIs來推斷和警告潛在的錯誤使用。探索檢查和增強安全性相關注釋、代碼和配置之間的語義一致性的方法。構建新的方法來轉換聲明性安全性和編程式安全性的實現,」研究人員總結道。

小編總結:當程序員或者軟件開發者在編碼遇到難題時,找網絡論壇,或尋大神求助,或本身探索都是可行的,但必定要意識到編碼選項的安全性,選擇了錯誤的編碼,將嚴重影響企業軟件產品,所以,安全編碼,人人有責。

本文由阿里聚安全編譯,原文連接:https://www.helpnetsecurity.c...

相關文章
相關標籤/搜索