Java安全編碼:糟糕的在線建議和令人困惑的APIs
對於程序員和軟件開發人員來說,網絡論壇提供了一個交流知識和尋找具體編碼難題答案的好地方。遺憾的是,他們並不總是準確信息的來源。
弗吉尼亞理工大學的一組研究人員分析了數百篇關於Stack Overflow的文章,(Stack Overflow是一個很受歡迎的開發者論壇或者說Q&A網站)發現許多提供答案的開發人員並沒有意識到編碼選項的安全含義,並顯示出了缺乏網絡安全培訓。
他們發現的另一件事是,有時,最熱門的帖子或答案包含了一些不安全的建議,這些建議會在軟件中引入安全漏洞,而正確的修複程序不那麼受歡迎,也不容易看到,因為它們是用戶提供的,其信譽分數較低。
因此,提問者和回答者之間的社會動態肯定會對人們的安全選擇產生影響。
獲得正確的安全性
研究人員集中研究與Java安全性相關的帖子,從軟件工程和安全角度考慮,針對的是Spring Security的問題上發表的文章,Spring Security是一個第三方Java框架,為企業應用程序提供身份驗證、授權和其他安全特性。
Spring Security旨在促進安全編碼,但很明顯,許多程序員發現它的APIs過於複雜,文檔記錄不足,運行時係統的錯誤報告令人困惑。
“此外,多語言支持獲取數據的能力相當弱。在安全應用程序中,多語言的情況是很常見的,因為通常數據是用一種編程語言加密的(比如:Python)並在另一個編程語言解密(例如:Java)。這些問題會嚴重阻礙開發人員的生產力。”
開發人員在花太多時間解決APIs的正確用法時常感到沮喪,並且常常選擇了完全不安全的修補程序,比如使用過時的加密哈希函數,禁用了跨站點請求偽造保護,信任了HTTPS驗證中的所有證書,或者使用了過時的通信協議。
研究人員指出:“這些糟糕的編碼實踐,如果在生產代碼中使用,將嚴重損害軟件產品的安全性。”
建議每個人都參與
“這項工作的意義在於,我們為大量令人擔憂的安全編碼問題提供了經驗證據,而這些問題之前並沒有被報道過。這些問題是由於各種原因,包括企業安全應用的快速增長,軟件開發人員缺乏安全培訓,以及設計了糟糕的安全庫,”研究人員指出。
他們建議設計人員刪除或棄用弱安全性的APIs,設計簡化的APIs,並在默認情況下實現強大的安全性防禦,並設計幹淨且有幫助的錯誤報告接口,其中還包括可能的根本原因和解決方案。
另一方麵,開發人員絕對應該需要安全檢查,並進行安全測試,以檢查實現的功能是否如預期的那樣工作。在Stack Overflow和其他類似的社區網站和論壇上流行和接受的答案應該像一粒鹽,如果可能的話,它們的準確性應該是獨立的。
最近的相關研究顯示,排名靠前但不夠充分的編程Web教程也將漏洞引入了軟件。
最後,工具生成器應該考慮使它們能夠自動診斷安全錯誤,並建議安全補丁或解決方案。
“構建漏洞防禦技術,比較同級應用程序使用相同係列的APIs來推斷和警告潛在的錯誤使用。探索檢查和加強安全性相關注釋、代碼和配置之間的語義一致性的方法。構建新的方法來轉換聲明性安全性和編程式安全性的實現,”研究人員總結道。
小編總結:當程序員或者軟件開發者在編碼遇到難題時,找網絡論壇,或尋大神求助,或自己探索都是可行的,但一定要意識到編碼選項的安全性,選擇了錯誤的編碼,將嚴重影響企業軟件產品,因此,安全編碼,人人有責。
本文由阿裏聚安全編譯自https://www.helpnetsecurity.com/2017/10/03/secure-coding-java/
最後更新:2017-10-09 22:34:43