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、不可預測性原則
數據與代碼分離是從漏洞的成因上做出防御,而不可預測性原則則是從克服***方法的角度看待問題。這是一種即使無法修復代碼,但是讓***變得無效
的成功的防御。
比如:讓程序的?;纷兊秒S機化,使***程序無法準確猜測到內存地址,而大大的提高***的門檻。再比如在一些應用系統中,使用隨機的id。那么如果***者再
想使用類似于
for(int i=0;i<1000;i++){
delete(url="xxx?id="+i);
}
這種方法的***將無效,起碼是先爬取id的值,再進行delet操作。同樣的,現在利用token,利用加密算法,隨機算法,哈希算法等,其實都可以找到這條原則的影子。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。