下班的时候,发现博客访问缓慢,甚至出现504错误,通过 top -i 命令查看服务器负载发现负载数值飙升到3.2之多了,并且持续时间越来越频繁直至持续升高的趋势,还以为是被攻击了,对来访IP进行了阈值限制后效果并不是很明显,CDN服务里限制几个主要IP效果依然不是很明显,可以看出这是被恶意扫描攻击了应该。
  
   通过服务器waf的日志记录分析得出基本都是SQL注入、XSS攻击范畴,这些攻击都绕过了CDN缓存规则直接回源请求,这就造成PHP、MySQL运算请求越来越多,服务器负载飙升就是这个原因造成的,在日志里可以看到几乎大部分都是 GET/POST 形式的请求,虽然waf都完美的识别和拦截了,但是因为 Nginx 层面应对措施,所以还是会对服务器负载形成一定的压力,于是在Nginx里也加入了防止SQL注入、XSS攻击的配置,没有想到效果竟然出奇的好。

   将下面的Nginx配置文件代码放入到对应站点的.conf配置文件 server { listen:80 ... } 大括号里里,include 也是写这个里面,然后重启Nginx即可生效。

if ($request_method !~* GET|POST) { return 444; }
#使用444错误代码可以更加减轻服务器负载压力。
#防止SQL注入
if ($query_string ~* (\$|'|--|[+|(%20)]union[+|(%20)]|[+|(%20)]insert[+|(%20)]|[+|(%20)]drop[+|(%20)]|[+|(%20)]truncate[+|(%20)]|[+|(%20)]update[+|(%20)]|[+|(%20)]from[+|(%20)]|[+|(%20)]grant[+|(%20)]|[+|(%20)]exec[+|(%20)]|[+|(%20)]where[+|(%20)]|[+|(%20)]select[+|(%20)]|[+|(%20)]and[+|(%20)]|[+|(%20)]or[+|(%20)]|[+|(%20)]count[+|(%20)]|[+|(%20)]exec[+|(%20)]|[+|(%20)]chr[+|(%20)]|[+|(%20)]mid[+|(%20)]|[+|(%20)]like[+|(%20)]|[+|(%20)]iframe[+|(%20)]|[\<|%3c]script[\>|%3e]|javascript|alert|webscan|dbappsecurity|style|confirm\(|innerhtml|innertext)(.*)$) { return 555; }if ($uri ~* (/~).*) { return 501; }if ($uri ~* (\\x.)) { return 501; }
#防止SQL注入 if ($query_string ~* "[;'<>].*") { return 509; }if ($request_uri ~ " ") { return 509; }if ($request_uri ~ (\/\.+)) { return 509; }if ($request_uri ~ (\.+\/)) { return 509; }#if ($uri ~* (insert|select|delete|update|count|master|truncate|declare|exec|\*|\')(.*)$ ) { return 503; }
#防止SQL注入if ($request_uri ~* "(cost\()|(concat\()") { return 504; }if ($request_uri ~* "[+|(%20)]union[+|(%20)]") { return 504; }if ($request_uri ~* "[+|(%20)]and[+|(%20)]") { return 504; }if ($request_uri ~* "[+|(%20)]select[+|(%20)]") { return 504; }if ($request_uri ~* "[+|(%20)]or[+|(%20)]") { return 504; }if ($request_uri ~* "[+|(%20)]delete[+|(%20)]") { return 504; }if ($request_uri ~* "[+|(%20)]update[+|(%20)]") { return 504; }if ($request_uri ~* "[+|(%20)]insert[+|(%20)]") { return 504; }if ($query_string ~ "(<|%3C).*script.*(>|%3E)") { return 505; }if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") { return 505; }if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") { return 505; }if ($query_string ~ "proc/self/environ") { return 505; }if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)") { return 505; }if ($query_string ~ "base64_(en|de)code\(.*\)") { return 505; }if ($query_string ~ "[a-zA-Z0-9_]=http://") { return 506; }if ($query_string ~ "[a-zA-Z0-9_]=(\.\.//?)+") { return 506; }if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") { return 506; }if ($query_string ~ "b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)b") { return 507; }if ($query_string ~ "b(erections|hoodia|huronriveracres|impotence|levitra|libido)b") {return 507; }if ($query_string ~ "b(ambien|bluespill|cialis|cocaine|ejaculation|erectile)b") { return 507; }if ($query_string ~ "b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)b") { return 507; }
#这里大家根据自己情况添加删减上述判断参数,cURL、wget这类的屏蔽有点儿极端了,但要“宁可错杀一千,不可放过一个”。if ($http_user_agent ~* YisouSpider|ApacheBench|WebBench|Jmeter|JoeDog|Havij|GetRight|TurnitinBot|GrabNet|masscan|mail2000|github|wget|curl|Java|python) { return 508; }
#同上,大家根据自己站点实际情况来添加删减下面的屏蔽拦截参数。if ($http_user_agent ~* "Go-Ahead-Got-It") { return 508; }if ($http_user_agent ~* "GetWeb!") { return 508; }if ($http_user_agent ~* "Go!Zilla") { return 508; }if ($http_user_agent ~* "Download Demon") { return 508; }if ($http_user_agent ~* "Indy Library") { return 508; }if ($http_user_agent ~* "libwww-perl") { return 508; }if ($http_user_agent ~* "Nmap Scripting Engine") { return 508; }if ($http_user_agent ~* "~17ce.com") { return 508; }if ($http_user_agent ~* "WebBench*") { return 508; }if ($http_user_agent ~* "spider") { return 508; } #这个会影响国内某些搜索引擎爬虫,比如:搜狗
#拦截各恶意请求的UA,可以通过分析站点日志文件或者waf日志作为参考配置。if ($http_referer ~* 17ce.com) { return 509; }
#拦截17ce.com站点测速节点的请求,所以明月一直都说这些测速网站的数据仅供参考不能当真的。if ($http_referer ~* WebBench*") { return 509; }
#拦截WebBench或者类似压力测试工具,其他工具只需要更换名称即可。

经一夜测试和体验,上述代码运行很稳定,结合服务器上的防火墙规则以及waf的拦截和屏蔽,目前站点都已经恢复正常,服务器负载也是正常范围。

声明:本文为转载文章,为防止丢失所以做此备份。
原文地址:https://www.imydl.tech/lnmp/762.html

Nginx 防止SQL注入、XSS攻击的实践配置方法相关推荐

  1. tp中如何防止mysql注入_thinkphp如何防止sql注入xss攻击

    SQL注入简介 SQL 注入漏洞(SQL Injection)是 Web 开发中最常见的一种安全漏洞.可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有 ...

  2. TP5 框架 防止 sql注入 + xss攻击 + session盗窃

    话不多说 直接上正餐: TP5 框架 其实自身就舍友对sql注入以及xss攻击的防御  sql注入 + xss攻击 位置 application/config.php  // 默认全局过滤方法 用逗号 ...

  3. 常见web攻击(sql注入,xss攻击,csrf攻击)

    sql注入攻击 危害 方式:通过表单提交加入特殊字符 如:' OR 1=1#' 防范:用django的ORM,就大可不必考虑这个问题,   如果自己写,要用正则和其他方式进行过滤 xss(Cross ...

  4. Nginx攻击防护、CC防护、防止SQL注入、防XSS的实践配置方法

    Nginx攻击防护.CC防护.防止SQL注入.防XSS的实践配置方法 防止SQL注入.XSS攻击 Nginx安全防护屏蔽那些恶意的IP和垃圾蜘蛛 nginx网站攻击防护 Nginx简单防御CC攻击 资 ...

  5. SQL注入法攻击一日通

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安 ...

  6. SQL注入的攻击与防御(简单篇)

    原理:SQL注入攻击值得是通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的一下组合, 通过执行SQL语句进执行攻击者所要的操作,其主要原因是程序没有细致的过滤用户输入的数据 ...

  7. WEB漏洞测试(二)——HTML注入 XSS攻击

    上一篇介绍了我们安装BWAPP来完成我们的漏洞测试 在BWAPP中,将HTML Injection和XSS做了非常详细的分类,那么为什么要将两个一起讲呢?归根结底,我觉得这两个分明是一个玩意,充其量是 ...

  8. sql注入的攻击与利用

    前言 本文叙述了在Mysql.MSsql.Oracle.PostgreSQL平台下的sql注入探测方式与利用,作为个人笔记,没有框架以及中间件的参与. 文章的内容并不全面,日后有接触新的方法会有补充. ...

  9. SQL注入(SQL注入(SQLi)攻击)攻击-注入点

    SQL注入被称为漏洞之王 , 是最常用的漏洞之一 , 其中PHP在这方面的贡献最大 SQL注入原理 用户在参数中插入恶意的SQL语句 , 破坏原有的SQL语法结构 , 从而执行攻击者的操作 SQL注入 ...

最新文章

  1. 构建dubbo分布式平台-maven构建根项目
  2. hexo博客系统安装
  3. Python基础教程: with语句详解
  4. 通过服务器端日志分析WebSocket的server和client交互
  5. 嵌入式linux面试题库,嵌入式linux面试题解析(二)——C语言部分三
  6. 探讨PHP 静态变量 静态方法 初始化类的问题 哪种写法合格
  7. 代码分析测试SaaS平台Code Climate获得450万美元A轮融资
  8. 小米max android7 root,小米Max第三方Rom-Lineage OS
  9. Java:计算立方体的体积和底面积
  10. EXCEL中IF函数的嵌套结构以及AND与OR的用法
  11. html简繁体转换,在线繁体字转换工具
  12. api多版本方案(URL)
  13. python中 s是什么意思_python中字符串 s[ : -1]是什么意思?
  14. python 头条新闻机器人_荐GitHub:今日头条机器人
  15. xmind下载安装电脑版教程
  16. 寒假ACM假期总结 (7)
  17. 控制器双活 负载均衡
  18. Android ImageView设置边框
  19. 在线学习平台网站分享 (持续更新)
  20. 语义分割如何走下去?| 文末送书

热门文章

  1. License Check
  2. 中国工业信息终端行业供需情况及竞争趋势分析报告(2022-2027年)
  3. switch动森amiibo数据_《Switch动物之森》amiibo攻略 amiibo卡有什么用
  4. SVG 入门指南(初学者入门必备)
  5. 软考高级 真题 2009年下半年 信息系统项目管理师 案例分析
  6. 黑马头条项目 8.4 推荐系统接口定义
  7. 基于PHP+MySQL米步童鞋商城网站的设计与实现
  8. 【Oracle】TRUNC:获取去年年初和年末,获取月初和月末;
  9. 盘是什么意思计算机网络,什么是网络硬盘?
  10. WebGL—gl_Position gl_FragCoord gl_PointCoord 区别