你正在为网站无时无刻地被人扫面而烦恼?个人网站没有企业级防火墙是不是就束手无策呢?如果你用的是nginx,那么恭喜你,nginx配置文件本来就是一个脚本程序,能帮你过滤一切你想过滤的提交内容,本人总结了一些nginx的防注入扫描规则,希望对你有用:
if ($request_uri ~* "([+|(%20)]and[+|(%20)])|([+|(%20)]or[+|(%20)])|([+|(%20)]select[+|(%20)])|([+|(%20)]exec[+|(%20)])|([+|(%20)]union[+|(%20)])") {
return 404;
}
if ($request_uri ~* "(cost\()|(concat\()") {
return 404;
}
if ($query_string ~ "(<|%3C).*script.*(>|%3E)") {
return 404;
}
if ($query_string ~ "GLOBALS(=|[|%[0-9A-Z]{0,2})") {
return 404;
}
if ($query_string ~ "_REQUEST(=|[|%[0-9A-Z]{0,2})") {
return 404;
}
if ($query_string ~ "proc/self/environ") {
return 404;
}
if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|%3D)") {
return 404;
}
if ($query_string ~ "base64_(en|de)code(.*)") {
return 404;
}
if ($http_user_agent ~ "Python-urllib") {
return 404;
}
注意:如果你的应用是高级别的管理后台,譬如phpmyadmin,本规则将会是这些程序的部分功能不可用,因为这些程序参数里包含sql语句哦。
程序里return 404你也可以修改成自己的响应模式或响应页面,吓唬一下试探者吧~