常見跨站攻擊的防御教程
作者:佚名 來源:本站 時間:2018-01-01 點擊:149次
XSS是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。比如這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。這種類型的漏洞由于被黑客用來編寫危害性更大的網絡釣魚(Phishing)攻擊而變得廣為人知。對于跨站腳本攻擊,黑客界共識是:跨站腳本攻擊是新型的“緩沖區溢出攻擊“,而JavaScript是新型的“ShellCode”。
以下是一個惡意js腳本的范例:
下面簡單介紹一下Cross腳本的防御方法:
大體的思路很簡單,一般XSS攻擊都是程序沒有過濾掉用戶輸入中的惡意js腳本,以致惡意的js腳本被解釋執行。所以我們只需要將用戶輸入字符串進行檢測,去掉標簽,或者轉義'<'字符。
PHP代碼:
if($_SERVER['REQUEST_URI']) { $temp = urldecode($_SERVER['REQUEST_URI']); if(strexists($temp, '<') || strexists($temp, '"')) { $_GET = shtmlspecialchars($_GET);//XSS } } //取消HTML代碼 function shtmlspecialchars($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = shtmlspecialchars($val); } } else { $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1', str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string)); } return $string; }
當然也可以轉義:
1、htmlspecialchars() 轉義特別的字符為HTML實體
•'&' (ampersand) becomes '&'
•'"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
•''' (single quote) becomes ''' only when ENT_QUOTES is set.
•'<' (less than) becomes '<'
•'>' (greater than) becomes '>'
2、htmlspecialchars_decode()將實體轉成HTML代碼,函數1的反函數
3、 htmlentities()這個是全部轉換html實體,和htmlspecialchars()區別在于,這個函數是轉義全部的字符,而htmlspecialchars()僅僅轉義上面限定的5個特殊字符
jsp中同樣有轉義函數:
- 上一篇: 從頭開始網站開發學習指南
- 下一篇: 使用Linux命令find查找PHP木馬