Nginx防止SQL注入***技巧
防止sql注入最好的辦法是對於提交後臺的全部數據都進行過濾轉義。但其實,咱們也能夠經過Nginx把一些好比包含單引號' , 分號;, <, >, 等字符可經過rewrite直接重訂向到404頁面來避免。php
基本sql注入原理:
經過union all 聯合查詢獲取其餘表的內容(如user表的用戶密碼)
防護原理:
1. 經過以上配置過濾基本的url中的注入關鍵字;
2. 固然,數據庫中的用戶密碼得加密存放 ;
3. php程序進行二次過濾,過濾GET和POST變量中的關鍵字;
4. 生產環境關閉PHP和MySQL的錯誤信息。nginx
SQL注入***通常問號後面的請求參數,在nginx用$query_string表示sql
代碼:數據庫
if ($host = 'sznxb.cn' ) {
rewrite ^/(.*)$ http://www.sznxb.cn/$1 permanent;
}
if ($request_uri ~* "(cost\()|(concat\()"){
return 404;
}
if ($request_uri ~* "[+|(%20)]union[+|(%20)]"){
return 404;
}
if ($request_uri ~* "[+|(%20)]and[+|(%20)]"){
return 404;
}
if ($request_uri ~* "[+|(%20)]select[+|(%20)]"){
return 404;
}
if ( $query_string ~* ".*[\;'\<\>].*" ){
return 404;
}
ide