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