一、Xss
這樣可以防止Xss,注意中文要寫htmlentities($name,ENT_NOQUOTES,GB2312)
c.php防注入和XSS攻擊通用過濾函數
- <?php
- //php防注入和XSS攻擊通用過濾.
- //by qq:831937
- $_GET && SafeFilter($_GET);
- $_POST && SafeFilter($_POST);
- $_COOKIE && SafeFilter($_COOKIE);
- function SafeFilter (&$arr)
- {
- $ra=Array('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','/script/','/javascript/','/vbscript/','/expression/','/applet/','/meta/','/xml/','/blink/','/link/','/style/','/embed/','/object/','/frame/','/layer/','/title/','/bgsound/','/base/','/onload/','/onunload/','/onchange/','/onsubmit/','/onreset/','/onselect/','/onblur/','/onfocus/','/onabort/','/onkeydown/','/onkeypress/','/onkeyup/','/onclick/','/ondblclick/','/onmousedown/','/onmousemove/','/onmouseout/','/onmouseover/','/onmouseup/','/onunload/');
- if (is_array($arr))
- {
- foreach ($arr as $key => $value)
- {
- if (!is_array($value))
- {
- if (!get_magic_quotes_gpc()) //不對magic_quotes_gpc轉義過的字符使用addslashes(),避免雙重轉義。
- {
- $value = addslashes($value); //給單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字符)加上反斜線轉義
- }
- $value = preg_replace($ra,'',$value); //刪除非打印字符,粗暴式過濾xss可疑字符串
- $arr[$key] = htmlentities(strip_tags($value)); //去除 HTML 和 PHP 標記並轉換爲 HTML 實體
- }
- else
- {
- SafeFilter($arr[$key]);
- }
- }
- }
- }
- ?>
二、CSRF
b.在用戶信息通過驗證後,網站A產生Cookie信息並返回給瀏覽器,此時用戶登錄網站A成功,可以正常發送請求到網站A;
c. 用戶未退出網站A之前,在同一瀏覽器中,打開一個TAB頁訪問網站B;
d. 網站B接收到用戶請求後,返回一些攻擊性代碼,併發出一個請求要求訪問第三方站點A;
e. 瀏覽器在接收到這些攻擊性代碼後,根據網站B的請求,在用戶不知情的情況下攜帶Cookie信息,向網站A發出請求。網站A並不知道該請求其實是由B發起的,所以會根據用戶C的Cookie信息以C的權限處理該請求,導致來自網站B的惡意代碼被執行。
e.變量類型限制
f.採用PDO操作數據庫