Web安全-XSS

Web安全-XSS

DDos(分布式防御攻击)防御攻击,DOS攻击占用合理的客户端请求,占用过多的服务器资源,使合法用户无法得到服务器的响应。DDos在传统的DOS攻击基础上产生的攻击方式,还有Server Limit DOS,当httpRequest过长时,Web Server就会产生400或者4XX的错误,如果这些超长的数据保存在cookie中,用户每次请求时,就会导致http请求超长,使得一些用户无法访问此域名

csrf跨站请求伪造攻击 (可参考http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html


1. XSS的攻击方式:

(1)反射型:发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码,这个过程像一次反射,故叫反射型XSS

利用Expess模拟步骤:

  • express -e ./

  • npm install 安装依赖模块

  • 修改相关的代码:

    在index.js中:

    router.get('/', function(req, res, next) {
    res.set('X-XSS-Protection', 0);   /*加上这个就阻止了浏览器阻止XSS的默认设置*/
    res.render('index', { title: 'Express', xss : req.query.xss});
    });

    在模板index.ejs中:

    <%- xss %>   <!--"-"表示不需要转义-->
  • npm start 开启服务

测试一:

这里写图片描述
这里写图片描述

测试二:嵌入了一个页面(广告植入等)

这里写图片描述

这里写图片描述

(2)存储型:存储型XSS和反射型XSS的差别在于,提交的代码会储存在服务器端(数据库、内存、文件系统等),下次请求目标页面时不用再提交XSS代码


2. XSS的防御措施:编码、过滤、校正

编码:对用户输入的数据进行HTML Entity编码

过滤: 1. 移除用户上传的DOM属性,如onerror等

​ 2. 移除用户上传的style节点、script节点、iframe节点等

校正: 1. 避免直接对HTML Entity解码

​ 2. 使用DOM Parse转换,校正不配对的标签

构建Node服务和建立一个评论过程:

触发XSS:

  //编码
  s = s.replace(/&/g, "&gt;");
  s = s.replace(/</g, "&lt;");
  s = s.replace(/>/g, "&gt;");
  s = s.replace(/\s/g, "&nbsp;");
  s = s.replace(/\'/, "&#39;");
  s = s.replace(/\"/, "&quot;");
  s = s.replace(/\n/g, "<br>");

parse函数:

      var parse = function(str) {
        var result = '';
        try{
          HTMLParser(he.unescape(str, {strict: true}), {
              start : function(tag, attrs, unary) {
                result += '<' + tag;
                for(var i = 0; i < attrs.length; i++) {
                  result += ' ' + attrs[i].name + '="' + attrs[i].escaped + '"';
                }

                result += (unary ? "/" : "") + ">";
              },
              end : function(tag) {
                  result += "</" + tag + ">";
              },
              chars : function(text) {
                  result += text;
              },
              comment : function(text) {
                  result += "<!--" +text+ "-->";
              }
          });
          return result;
        }catch(e) {
          console.log(e);
        }
      }

插入的img标签的src为null,触发onerror事件,弹出1

这里写图片描述

由用户触发的XSS事件:

这里写图片描述

防御:

上面的parse函数是未进行过滤的部分,所以没有起到防御作用,修改之后产生的结果如下:拦截成功

这里写图片描述


代码地址:http://download.csdn.net/detail/dear_mr/9825283

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值