深度預防
深度防禦原則是安全專業人員熟知的原則,它顯示了冗余安全措施的價值,這已被歷史所證明。
深度防禦的原理可以擴展到其他領域,而不僅僅是編程領域。用過備用傘的跳傘者可以證明,有冗余的安全措施是多麽有價值,雖然人們從來不希望主傘失效。冗余安全措施可能在主要安全措施的潛在故障中發揮重要作用。
回到編程領域,堅持深度預防的原則要求您始終有壹個備份計劃。如果壹個安全措施失敗了,另壹個必須提供壹些保護。例如,在用戶執行重要操作之前重新驗證用戶是壹個好習慣,盡管您的用戶驗證邏輯中沒有已知的缺陷。如果未經身份驗證的用戶以某種方式偽裝成另壹個用戶,提示輸入密碼可能會阻止未經身份驗證(未經驗證)的用戶執行某些關鍵操作。
雖然縱深防禦是合理的原則,但過度增加安全措施只能增加成本,降低價值。
小權力
我以前有壹輛配有仆人鑰匙的車。這把鑰匙只能用來點火,所以打不開車門,控制臺,後備箱。它只能用來發動汽車。我可以交給停車服務員(或者留在點火上),我確定這把鑰匙不能做其他用途。
給停車服務員壹把打不開控制臺或後備箱的鑰匙是有道理的。畢竟,妳可能想把貴重物品放在這些地方。但是我覺得它為什麽打不開門也說不通。當然,這是因為我的觀點在於收回權威。我在想為什麽停車服務員被剝奪了開門的權利。這是編程中非常不好的觀點。相反,妳要考慮什麽權限是必要的,只給每個人盡可能少的權限來完成他的工作。
傭人鑰匙打不開車門的壹個原因是這把鑰匙是可以復制的,而且這把復制的鑰匙以後可能會被用來偷車。這種情況聽起來不太可能,但是這個例子說明,不必要的授權會增加妳的風險,即使妳增加壹點權限。風險最小化是安全程序開發的主要組成部分。
妳不必考慮權利被濫用的所有方式。事實上,妳幾乎不可能預測每個潛在攻擊者的行動。
簡單就是美
復雜性滋生錯誤,錯誤會導致安全漏洞。這個簡單的事實解釋了為什麽簡單性對於壹個安全的應用程序如此重要。不必要的復雜性和不必要的風險壹樣糟糕。
曝光最小化
PHP應用程序需要PHP和外部數據源之間的頻繁通信。主要的外部數據源是客戶端瀏覽器和數據庫。如果您正確地跟蹤了數據,您就可以確定暴露了哪些數據。互聯網是主要的暴露源,因為它是壹個非常公共的網絡,您必須始終小心防止數據在互聯網上暴露。
數據暴露不壹定意味著安全風險。但是,必須最大限度地減少數據泄露。例如,當用戶進入支付系統並將他的信用卡數據傳輸到您的服務器時,您應該使用SSL來保護它。如果妳想在壹個確認頁面上顯示他的信用卡號,因為卡號信息是從服務器發送到他的客戶端的,妳也應該使用SSL來保護它。
例如,在前面的例子中,顯示信用卡號碼顯然會增加暴露的機會。SSL確實可以降低風險,但是壹個好的解決方案是通過只顯示最後四位數來完全消除風險。
為了降低敏感數據的曝光率,羽西電腦培訓/認為妳必須確認哪些數據是敏感的,同時進行跟蹤,杜絕壹切不必要的數據曝光。在本書中,我將展示壹些技巧來幫助您保護許多常見的敏感數據。