SQL注入攻击大家应该都听说过了,防范的方法有很多中,其实,Nginx也可以简单防止SQL注入攻击。 防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义。但其实,我们也可以通过Nginx把一些比如包含单引号' , 分号;, <, >, 等字符可通过rewrite直接重订向到404页面来避免。 基本sql注入原理:
通过union all 联合查询获取其他表的内容(如user表的用户密码)
防御原理:
1. 通过以上配置过滤基本的url中的注入关键字;
2. 当然,数据库中的用户密码得加密存放 ;
3. php程序进行二次过滤,过滤GET和POST变量中的关键字;
4. 生产环境关闭PHP和MySQL的错误信息。 SQL注入攻击一般问号后面的请求参数,在nginx用$query_string表示 涉及代码:
​
01 | if ($request_uri ~* "(cost\()|(concat\()") { |
04 | if ($request_uri ~* "[+|(%20)]union[+|(%20)]") { |
07 | if ($request_uri ~* "[+|(%20)]and[+|(%20)]") { |
10 | if ($request_uri ~* "[+|(%20)]select[+|(%20)]") { |
14 | if ( $query_string ~* ".*[\;'\<\>].*" ){ |
|