程序員都應該了解哪些安全知識

fmms 12年前發布 | 9K 次閱讀 程序員

        導讀:本文來自 StackOverflow 上的一個問答貼。網友 M.H 提問: 我是一名 IT 專業學生,現在是大三,直到現在我們才開始學習很多計算機相關的課程(編程、算法、計算機體系結構、數學等……)。

        但是還有一個叫“安全”的世界離我們很遠,我是指:計算機安全、互聯網安全、網絡安全、Hacking、破解等。 

        我很確信沒有人可以知曉所有安全知識,但我確信,肯定有一定的“最低限度”知識,是每個程序員或 IT 學生應當了解的。我的問題是,那些“最低限度”知識包括了哪些?希望您能給我建議一些電子書,或課程,或任何有助于我探索這條路的東西。

        目前這個問題得分最高的回復是由 bignum 提供的,如下:

        如果想要你的程序是安全的,請記住如下原則:

        ● 不要信任用戶的輸入信息!

        ● 驗證所有來自非信任源的輸入信息,是使用白名單,不是黑名單。

        ● 從一開始就要策劃安全。安全并不是可以在最后來做的。

        ● 保持簡單。復雜性會增加安全漏洞的可能性。

        ● 最低限度保持你程序的攻擊面(attack surface)。

        ● 確保程序有“自動防故障裝置”(Fail-safe

        ● 采用深度防御(defence in depth

        ● 堅持最小特權原則(least privilege

        ● 采用威脅建模(threat modelling)(Web 程序更應如此)

        ● 權限分離(Compartmentalize

        ● 沒有不透風的墻,在代碼中隱藏秘密都無法長久。

        ● Don’t write your own crypto / 不要自己編寫一種加密方法 (譯注:見下文另外一位網友的回復)

        ● 采用加密(crypto),并不意味著你就安全了(攻擊者會尋找弱點)

        ● 注意緩沖區溢出,并了解如何防范

        下面是一些優秀書籍和在線文章:

        ●《 Writng Secure Code   編寫安全的代碼 (第二版)》- 我認為每個程序員都該讀讀這本書 (譯注:第二版還沒有中文,據說在翻譯中……)

程序員都應該了解哪些安全知識

        ● Building Secure Software: How to Avoid Security Problems the Right Way 構建安全的軟件:避免產生軟件安全問題的正確方法

程序員都應該了解哪些安全知識

        ● Secure Programming Cookbook for C and C++: Recipes for Cryptography, Authentication, Input Validation & More

程序員都應該了解哪些安全知識

        ● Exploiting Software (譯注:在線電子書)

        ● Security Engineering (an excellent read,在線電子書)

        ● Secure Programming for Linux and Unix HOWTO (譯注:在線電子書)

        Tyler McHenry 也給出了他認為程序員做安全的第一原則:Don’t roll your own。除非你是安全專家或密碼破譯專家,否則就采用現有的成熟安全平臺、框架、或庫。這些東西都經過了專家和黑客們深思熟慮、修補、更新和檢測。你得利用這些優勢,而不是忽視,試圖推到重來

        英文原文:StackOverflow    編譯:伯樂在線 – 黃利民

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!