天天看點

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

對于程式員和軟體開發人員來說,網絡論壇提供了一個交流知識和尋找具體編碼難題答案的好地方。遺憾的是,他們并不總是準确資訊的來源。

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

弗吉尼亞理工大學的一組研究人員分析了數百篇關于Stack Overflow的文章,(Stack Overflow是一個很受歡迎的開發者論壇或者說Q&A網站)發現許多提供答案的開發人員并沒有意識到編碼選項的安全含義,并顯示出了缺乏網絡安全教育訓練。

他們發現的另一件事是,有時,最熱門的文章或答案包含了一些不安全的建議,這些建議會在軟體中引入安全漏洞,而正确的修複程式不那麼受歡迎,也不容易看到,因為它們是使用者提供的,其信譽分數較低。

是以,提問者和回答者之間的社會動态肯定會對人們的安全選擇産生影響。

<b>獲得正确的安全性</b>

研究人員集中研究與Java安全性相關的文章,從軟體工程和安全角度考慮,針對的是Spring Security的問題上發表的文章,Spring Security是一個第三方Java架構,為企業應用程式提供身份驗證、授權和其他安全特性。

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

“此外,多語言支援擷取資料的能力相當弱。在安全應用程式中,多語言的情況是很常見的,因為通常資料是用一種程式設計語言加密的(比如:Python)并在另一個程式設計語言解密(例如:Java)。這些問題會嚴重阻礙開發人員的生産力。”

開發人員在花太多時間解決APIs的正确用法時常感到沮喪,并且常常選擇了完全不安全的修補程式,比如使用過時的加密哈希函數,禁用了跨站點請求僞造保護,信任了HTTPS驗證中的所有證書,或者使用了過時的通信協定。

建議每個人都參與

“這項工作的意義在于,我們為大量令人擔憂的安全編碼問題提供了經驗證據,而這些問題之前并沒有被報道過。這些問題是由于各種原因,包括企業安全應用的快速增長,軟體開發人員缺乏安全教育訓練,以及設計了糟糕的安全庫,”研究人員指出。

他們建議設計人員删除或棄用弱安全性的APIs,設計簡化的APIs,并在預設情況下實作強大的安全性防禦,并設計幹淨且有幫助的錯誤報告接口,其中還包括可能的根本原因和解決方案。

另一方面,開發人員絕對應該需要安全檢查,并進行安全測試,以檢查實作的功能是否如預期的那樣工作。在Stack Overflow和其他類似的社群網站和論壇上流行和接受的答案應該像一粒鹽,如果可能的話,它們的準确性應該是獨立的。

最後,工具生成器應該考慮使它們能夠自動診斷安全錯誤,并建議安全更新檔或解決方案。

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

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

本文由阿裡聚安全編譯自https://www.helpnetsecurity.com/2017/10/03/secure-coding-java/