防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义。
对于简单的情况,比如包含单引号' , 分号;, <, >, 等字符可通过rewrite直接重订向到404页面来避免。
用rewrite有个前提需要知道,一般用rewrite进行正则匹配只能匹配到网页的URI,也就是url中"htmlcode">
/plus/list.php"htmlcode">if ( $query_string ~* ".*[;'<>].*" ){ return 404; }下面来分享一个配置文件实例:
server { ## 禁SQL注入 Block SQL injections set $block_sql_injections 0; if ($query_string ~ “union.*select.*(“) { set $block_sql_injections 1; } if ($query_string ~ “union.*all.*select.*”) { set $block_sql_injections 1; } if ($query_string ~ “concat.*(“) { set $block_sql_injections 1; } if ($block_sql_injections = 1) { return 444; } ## 禁掉文件注入 set $block_file_injections 0; if ($query_string ~ “[a-zA-Z0-9_]=http://”) { set $block_file_injections 1; } if ($query_string ~ “[a-zA-Z0-9_]=(..//"WebBench") { set $block_user_agents 1; } if ($http_user_agent ~ "ApacheBench") { set $block_user_agents 1; } if ($http_user_agent ~ ^$) { set $block_user_agents 1; } if ($http_user_agent ~ "Python-urllib") { set $block_user_agents 1; } if ($block_user_agents = 1) { return 444; } }