nginx防止sql注入

   防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义。

  对于简单的情况,比如包含单引号' , 分号;, <, >, 等字符可通过rewrite直接重订向到404页面来避免。

  用rewrite有个前提需要知道,一般用rewrite进行正则匹配只能匹配到网页的URI,也就是url中?前部分,?以后部分是请求参数。

  问号后面的请求参数,在nginx用$query_string表 示,不能在rewrite中匹配到,需要用if判断

  例如,对于参数中带有单引号的'进行匹配然后定向到错误页面,

  /plus/list.php?tid=19&mid=1124'

  rewrite ^.*([;'<>]).* /error.html break;

  直接写这样的一条重写肯定不会正确匹配,因为rewrite参数只会匹配请求的uri,也就是/plus/list.php部分。

  需要使用$query_string 借助if进行判断,如果查询串种包含特殊字符,返回404。

  if ( $query_string ~* ".*[;'<>].*" ){

  return 404;

  }

时间: 2024-09-10 06:53:36

nginx防止sql注入的相关文章

Nginx防止SQL注入攻击配置方法

防御原理: 1. 通过以上配置过滤基本的url中的注入关键字: 2. 当然,数据库中的用户密码得加密存放 : 3. php程序进行二次过滤,过滤GET和POST变量中的关键字: 4. 生产环境关闭PHP和MySQL的错误信息. SQL注入攻击一般问号后面的请求参数,在nginx用$query_string表示 例如,对于参数中带有单引号的'进行匹配然后定向到错误页面, /plus/list.php?tid=19&mid=1124'  代码如下 复制代码 rewrite ^.*([;'<>

Nginx防范Sql注入攻击方法总结

基本sql注入原理: 通过union all 联合查询获取其他表的内容(如user表的用户密码) 防御原理: 1. 通过以上配置过滤基本的url中的注入关键字: 2. 当然,数据库中的用户密码得加密存放 : 3. php程序进行二次过滤,过滤GET和POST变量中的关键字: 4. 生产环境关闭PHP和MySQL的错误信息. 对于简单的情况,比如包含单引号' , 分号;, <, >, 等字符可通过rewrite直接重订向到404页面来避免.   用rewrite有个前提需要知道,一般用rewri

Nginx中防止SQL注入攻击的相关配置介绍_nginx

防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义. 对于简单的情况,比如包含单引号' , 分号;, <, >, 等字符可通过rewrite直接重订向到404页面来避免. 用rewrite有个前提需要知道,一般用rewrite进行正则匹配只能匹配到网页的URI,也就是url中?前部分,?以后部分是请求参数. 问号后面的请求参数,在nginx用$query_string表 示,不能在rewrite中匹配到,需要用if判断 例如,对于参数中带有单引号的'进行匹配然后定向到错误页面, /

Sqlmap+Nginx“地毯式”检测网站SQL注入漏洞教程

以安全防御方的角度来看,防御的广度比深度更具优先级,这也是信息安全中木桶原理的体现. Sqlmap是一个开源的SQL注入漏洞检测工具,Nginx是高性能的WEB服务器.今天我们将二者结合起来,对网站的SQL注入漏洞实现"地毯式"的检测! 思路 sqlmap可以批量导入http代理的日志,根据日志中的每一个请求进行分析和探测.(可参考sqlmap帮助文档) 所以,我们可以配置nginx记录下网站所有的http请求信息,格式化处理后提供给sqlmap,这样sqlmap就能根据网站的每一个请

nginx防文件注入与SQL注入安全设置

nginx配置文件本来就是一个脚本程序,能帮你过滤一切你想过滤的提交内容,本人总结了一些nginx的防注入扫描规则,希望对你有用: 配置文件可以在一定程度上防止sql与文件形式的注入,放在配置文件的server块里面. 防止SQL注入扫描  代码如下 复制代码 if ($request_uri ~* "([+|(%20)]and[+|(%20)])|([+|(%20)]or[+|(%20)])|([+|(%20)]select[+|(%20)])|([+|(%20)]exec[+|(%20)])

nginx服务器防sql注入/溢出攻击/spam及禁User-agents

在配置文件添加如下字段即可  代码如下 复制代码 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_injecti

ThinkPHP 3.1如何使用PDO查询Mysql来避免SQL注入

PHP5中PDO的入门教程 如果已经了解了PDO,可以直接看下面的ThinkPHP 3.1如何使用PDO查询Mysql来避免SQL注入风险. PDO(PHP Data Object) 是PHP 5新出来的东西,在PHP 5.5中,更是强烈推荐使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的php_mysql.dll之类的了,那怎么办捏,我们只有与时俱进了,我就小试了一把PDO. [PDO是啥] PDO是PHP5新加入的一个重大功能,因为在PHP5以前的PH

SQL预编译和SQL注入

再说SQL预编译: 最近用go语言时,学习了一下数据库连接的库,这里总结一下SQL预编译相关的知识.貌似网上都是建议使用预编译,我也觉得这种做法靠谱. 先谈 SQL注入: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过让原SQL改变了语义,达到欺骗服务器执行恶意的SQL命令.其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统. 其实,反过来考虑,这也是SQL这类解释性语言本身的缺陷,安全和易用性总是相对的.类似的Sh

ASP通用防注入代码.杜绝SQL注入隐患.提升网站安全

ASP通用防注入代码.杜绝SQL注入隐患.提升网站安全 <% '''''''''''''''''''''''''''''''''''''''''''''''' 'ASP通用防注入代码 '您可以把该代码COPY到头文件中.也可以单独作 '为一个文件存在,每次调用使用 '作者:y3gu - 2005-7-29 '''''''''''''''''''''''''''''''''''''''''''''''' Dim GetFlag Rem(提交方式) Dim ErrorSql Rem(非法字符) Di