secure by default 原則

1、黑名單 白名單原則

儘可能使用白名單,不使用黑名單。例如:要做限制過濾的時候,只提供一份可信任的白名單列表,比提供一份不可信任的黑名單

列表進行過濾要有效得多。另外,在白名單中應小心* 等通配符的使用。 

2、最小權限原則

即是要注意系統只授予主題必須的權限,而不是過度授權。這樣能有效減少系統,數據庫,網絡,應用等出錯的機會。

3、縱深防禦原則

兩層含義:

        A:在不同層面,不同方面實施安全方案。

例如:在設計安全方案時,儘可能考慮到web應用安全,os系統安全,數據庫安全,網絡環境安全等不同層面。共同組成防禦體系。

B:在正確的地方做正確的事情,即是要在解決根本問題的地方實施有效的針對性的方案。

例如在對用戶輸入的html進行過濾時,要先進行語法樹的分析,而不是粗暴的進行< 等過濾,以免造成用戶本意想表達如1<2的意思。

4、數據與代碼的分離

像HTML injection  sql injection  SRLF injection  X-PATH injection  均可以根據該原則設計出真正的解決方案。

以sql 爲例,產生的原因正是因爲無法判斷用戶的輸入和該執行的sql語句而直接造成的損失。

如 select fieldlist from table where field ='  <input>  ';

當輸入爲:

select fieldlist from table where field ='  'anything' or 'x'='x'  ';  這時候整個數據表的數據都將被返回。

5、不可預測性原則

數據與代碼分離是從漏洞的成因上做出防禦,而不可預測性原則則是從克服***方法的角度看待問題。這是一種即使無法修復代碼,但是讓***變得無效

的成功的防禦。

比如:讓程序的棧基址變得隨機化,使***程序無法準確猜測到內存地址,而大大的提高***的門檻。再比如在一些應用系統中,使用隨機的id。那麼如果***者再

想使用類似於

for(int i=0;i<1000;i++){

delete(url="xxx?id="+i);

}

這種方法的***將無效,起碼是先爬取id的值,再進行delet操作。同樣的,現在利用token,利用加密算法,隨機算法,哈希算法等,其實都可以找到這條原則的影子。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章