nginx防止SQL注入规则
$request_uri
This variable is equal to the *original* request URI as received from the client including the args. It cannot be modified. Look at $uri for the post-rewrite/altered URI. Does not include host name. Example: "/foo/bar.php?arg=baz"
这个变量等于从客户端发送来的原生请求URI,包括参数。它不可以进行修改。$uri变量反映的是重写后/改变的URI。不包括主机名张小三资源网。例如:"/foo/bar.php?arg=baz"
$uri
This variable is the current request URI, without any arguments (see $args for those). This variable will reflect any modifications done so far by internal redirects or the index module. Note this may be different from $request_uri, as $request_uri is what was originally sent by the browser before any such modifications. Does not include the protocol or host name. Example: /foo/bar.html
这个变量指当前的请求URI,不包括任何参数(见$args)。这个变量反映任何内部重定向或index模块所做的修改。注意,这和$request_uri不同,因$request_uri是浏览器发起的不做任何修改的原生URI。不包括协议及主机名。例如张小三资源:"/foo/bar.html"
$document_uri
The same as $uri.
同$uri.
下面是收集的一些简单规则:
if ($query_string ~* ".*('|--|union|insert|drop|truncate|update|from|grant|exec|where|select|and|or|count|chr|mid|like|iframe|script|alert|webscan|dbappsecurity|style|confirm|innerhtml|innertext|class).*")
{ return ; }
if ($uri ~* .*(viewsource.jsp)$) { return ; }
if ($uri ~* .*(/~).*) { return ; }
修补空字节解析漏洞
if ($query_string ~* ".*[;'<>].*") { return ; }
if ($request_uri ~ " ") { return ; }
禁止未允许的IP访问目录执行PHP。未开启pathinfo的情况下在location ~ [^/]\.php(/|$)前加如下
location ~ /(xxx)/.*\.(php|php5)?$
{ allow 允许的IP; deny all; }
开启pathinfo的情况下:在location ~ [^/]\.php(/|$)前加如下
location ^~ /xxx/ { #default_type text/plain; #expires 30d; allow 允许的IP; deny all; }
内部:
if ($uri ~* (.*)(insert|select|delete|update|count|master|truncate|declare|exec|\*|%|\')(.*)$ ) { return 403; }
外部:
if ($request_uri ~* "(cost\()|(concat\()") { return ; }
if ($request_uri ~* "[+|(%20)]union[+|(%20)]") { return ; }
if ($request_uri ~* "[+|(%20)]and[+|(%20)]") { return ; }
if ($request_uri ~* "[+|(%20)]select[+|(%20)]") { return ; }
if ($request_uri ~* "[+|(%20)]or[+|(%20)]") { return ; }
if ($request_uri ~* "[+|(%20)]delete[+|(%20)]") { return ; }
if ($request_uri ~* "[+|(%20)]update[+|(%20)]") { return ; }
if ($request_uri ~* "[+|(%20)]insert[+|(%20)]") { return ; }
溢出过滤
if ($query_string ~ "(<|%3C).*script.*(>|%3E)") { return ; }
if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") { return ; }
if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") { return ; }
if ($query_string ~ "proc/self/environ") { return ; }
if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)") { return ; }
if ($query_string ~ "base64_(en|de)code\(.*\)") { return ; }
文件注入禁止
if ($query_string ~ "[a-zA-Z0-9_]=http://") { return ; }
if ($query_string ~ "[a-zA-Z0-9_]=(\.\.//?)+") { return ; }
if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") { return ; }
一些头部的参考:
if ($http_user_agent ~ ApacheBench|WebBench|Jmeter|JoeDog|Havij|GetRight|TurnitinBot|GrabNet|masscan|mail2000|github|wget|curl) { return ; }
if ($http_user_agent ~ "Go-Ahead-Got-It") { return ; }
if ($http_user_agent ~ "GetWeb!") { return ; }
if ($http_user_agent ~ "Go!Zilla") { return ; }
if ($http_user_agent ~ "Download Demon") { return ; }
if ($http_user_agent ~ "Indy Library") { return ; }
if ($http_user_agent ~ "libwww-perl") { return ; }
if ($http_user_agent ~ "Nmap Scripting Engine") { return ; }
if ($http_user_agent ~ "Load Impact") { return ; }
if ($http_user_agent ~ "~17ce.com") { return ; }
if ($http_user_agent ~ "WebBench*") { return ; }
if ($http_referer ~* 17ce.com) { return ; }
if ($http_user_agent ~* qiyunce) { return ; }
if ($http_user_agent ~* YunGuanCe) { return ; }
if ($http_referer ~* WebBench*") { return 444; }
if ($http_user_agent ~ "BLEXBot") { return ; }
if ($http_user_agent ~ "MJ12bot") { return ; }
if ($http_user_agent ~ "semalt.com") { return ; }
屏蔽webkaka
iptables -I INPUT -s 122.226.213.3 -j DROP
加或者不加引号的效果都是一样的,但是如果名称中有空格则必须加双引号
~*不区分大小写 ~区分大小写
参考:Block Exploits
www.361way.com/nginx-ant-injection/2558.html
nginx防止SQL注入规则的更多相关文章
- Nginx 防止SQL注入、XSS攻击的实践配置方法
下班的时候,发现博客访问缓慢,甚至出现504错误,通过 top -i 命令查看服务器负载发现负载数值飙升到3.2之多了,并且持续时间越来越频繁直至持续升高的趋势,还以为是被攻击了,对来访IP进行了阈值 ...
- nginx服务器防sql注入/溢出攻击/spam及禁User-agents
本文章给大家介绍一个nginx服务器防sql注入/溢出攻击/spam及禁User-agents实例代码,有需要了解的朋友可进入参考. 在配置文件添加如下字段即可 代码如下 复制代码 server { ...
- web攻击之八:溢出攻击(nginx服务器防sql注入/溢出攻击/spam及禁User-agents)
一.什么是溢出攻击 首先, 溢出,通俗的讲就是意外数据的重新写入,就像装满了水的水桶,继续装水就会溢出,而溢出攻击就是,攻击者可以控制溢出的代码,如果程序的对象是内核级别的,如dll.sys文件等,就 ...
- [SQL注入3]from_sqli_to_shell_II
[SQL注入1]这关学习盲注 ,这篇还有些东西没理透,后面搞明白了再修改. http://www.pentesterlab.com/exercises/from_sqli_to_shell_II/ 准 ...
- 【转载】以Java的视角来聊聊SQL注入
以Java的视角来聊聊SQL注入 原创 2017-08-08 javatiku Java面试那些事儿 在大二就接触过sql注入,之前一直在学习windows逆向技术,认为web安全以后不是自己的从业方 ...
- Bypass ngx_lua_waf SQL注入防御(多姿势)
0x00 前言 ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+ ...
- 23. Bypass ngx_lua_waf SQL注入防御(多姿势)
0x00 前言 ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+(f ...
- TSRC挑战赛:WAF之SQL注入绕过挑战实录
转自腾讯 博文作者:TSRC白帽子 发布日期:2014-09-03 阅读次数:1338 博文内容: 博文作者:lol [TSRC 白帽子] 第二作者:Conqu3r.花开若相惜 来自团队:[Pax.M ...
- 重新学习MySQL数据库11:以Java的视角来聊聊SQL注入
本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...
随机推荐
- Python游戏
要想实现键盘控制作用,就需要给游戏键盘监听事件利用pygame模块的key.get_pressed()方法,来检测按键是否按下 key_press =pygame.key.get_pressed() ...
- python中的__init__
__init__ __init__中__表示系统默认命名,init是初始化的意思.由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去.以学生类为例,通过定义 ...
- js练习题之图片背景轮播
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- nb哒LCA
求欧拉序每log分一块每段找最小值共n/log块然后建st表,复杂度n/log*log = n每块记前后缀最小过至少一块很好求对于在一块的:由于欧拉序的标号前后只会相差1所以序列种类只有2^k种k&l ...
- 测开之路二十三:python常用模块
os模块 sys模块 hashlib shutil对文件和目录进行操作 random和随机相关 json
- Hibernate 异常org.hibernate.LazyInitializationException: could not ini...
错误页面提示 could not initialize proxy - no Session 控制台 org.hibernate.LazyInitializationException: could ...
- python 装饰器 第十一步:多层装饰器的嵌套
#第十一步:多层装饰器的嵌套 #装饰器1 def kuozhan1(func): #定义装饰之后的函数 def neweat1(): # 扩展功能1 print('1-----饭前洗手') # 调用基 ...
- Npm使用遇到的问题解决
0.运行项目: 1)git clone 项目 2)项目根目录执行npm install安装依赖 3)执行npm run dev启动 1.安装cnpm: npm install -g cnpm --re ...
- 偏向锁,偏向线程id ,自旋锁
理解锁的基础知识 如果想要透彻的理解Java锁的来龙去脉,需要先了解以下基础知识. 基础知识之一:锁的类型 锁从宏观上分类,分为悲观锁与乐观锁. 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发 ...
- vue - blog开发学7
将基本的项目部署到linux上(前后台只是实现了基本的功能,本次只是记录一些基本的开发流程,完善,等后续) 1.linux环境准备(我用的是阿里云服务器) ①jre.mysql,Nginx基本上这些就 ...