xss防御

作者: 听城 | 来源:发表于2017-06-26 18:18 被阅读106次

XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。

xss攻击分类

分类

反射型:经过后端,不经过数据库
存储型:经过后端,经过数据库

xss攻击注入点

攻击注入点

xss攻击防御

  • 浏览器防御。现代浏览器具有xss防御机制,防御范围有限。防御类型为反射型xss,即url参数再次出现在页面中,浏览器会进行拦截。防御内容为HTML节点内容与HTML属性。是一种非常有限的防御机制,不可以依赖。
  • HTML节点内容转义。
    转义内容为< >。将尖括号转义为&lt,&gt
var escapeHtml = function(str){
      str = str.replace(/</g,'&lt;');
      str = str.replace(/>/g,'&gt;');
      return str;
}
  • HTML属性攻击防御。
    用户输入的数据出现在了html属性上,而由于里面有引号,将属性提前关闭了,产生了其他属性,而内容中可能存在脚本。只需要将引号转义。
var escapeProperty = function(str){
      if(!str) return ' ';
      str = str.replace(/&/g, '&amp;');
      str = str.replace(/"/g,'&quto;');
      str = str.replace(/'/g,'&#39;');
      return str;
}

可将上述两种合为一个方法

var escapeHtml = function(str) {
    if(!str) return '';
    str = str.replace(/&/g, '&amp;');
    str = str.replace(/</g, '&lt;');
    str = str.replace(/>/g, '&gt;');
    str = str.replace(/"/g, '&quto;');
    str = str.replace(/'/g, '&#39;');
    // str = str.replace(/ /g, '&#32;');
    return str;
};
  • js代码防御
    js中会插入来自后台或者用户输入的数据,但是这些数据可能会突破引号边界,产生新的语句。解决方案1:将引号转义,2:jsonencode。
var escapeForJs = function(str) {
    if(!str) return '';
    str = str.replace(/\\/g, '\\\\');
    str = str.replace(/"/g, '\\"');
    return str;
};
JSON.stringify(str)//建议使用这种方法
  • 富文本防御
    使用黑名单防御。不建议使用
    按白名单保留部分标签和属性。将html解析成树状结构,根据dom树遍历,是否为允许属性。库Xss,可以实现将html解析成树状结构。
var xssFilter = function(html){
    if(!html) return '';
    var xss = require('xss');
    var ret = xss(html, {
        whiteList:{
            img: ['src'],
            a: ['href'],
            font: ['size', 'color']
        },
        onIgnoreTag: function(){
            return '';
        }
    });
    console.log(html, ret);
    return ret;
};
  • CSP(Content Security Policy)内容安全策略
    CSP指的是内容安全策略,为了缓解很大一部分潜在的跨站脚本问题,浏览器的扩展程序系统引入了内容安全策略(CSP)的一般概念。这将引入一些相当严格的策略,会使扩展程序在默认情况下更加安全,开发者可以创建并强制应用一些规则,管理网站允许加载的内容。

相关文章

  • 安全包开发整体架构

    SSRF防御 SSRF安全漏洞以及防御实现 XSS防御 xss漏洞以及防御实现 CSRF防御 CSRF安全漏洞以及...

  • 21.浅谈前端WEB安全性(二)

    (二)浅谈前端WEB安全性5.XSS防御6.XSS分类及挖掘方法 5.XSS防御 一.概述 攻击者可以利用XSS漏...

  • xss防御

    XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Sty...

  • xss防御

    四两拨千斤:HttpOnIy严格地说,HttpOnly并非为了对抗XSS——HttpOnly解决的是XSS后的Co...

  • 【XSS】XSS防御说

    0x01 HTTP响应的X-头部 1. x-frame-options x-frame-options的值有两个:...

  • WEB 安全测试之 XSS 攻击

    目录结构 1、 背景知识 2、 XSS 漏洞的分类 3、 XSS 防御 4、 如何测试 XSS 漏洞 5、 HTM...

  • 每一个工程师都要学的安全测试,老板再也不用担心服务器被黑

    本文由云+社区发表 本篇包含了XSS漏洞攻击及防御详细介绍,包括漏洞基础、XSS基础、编码基础、XSS Paylo...

  • XSS防御——从Flask源码看XSS防御

    这两天遇到一个项目,老板问我各种安全问题的防护措施,结果我两眼一黑,想想自己以前都是注重攻击而忽视防御,因此开一个...

  • 防御 XSS攻击

    浅谈XSS—字符编码和浏览器解析原理 XSS简介 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascadin...

  • xss注入防御

    #xss 我认为xss漏洞可以根据可控变量的输出的位置不同来进行分类 1.在html标签中输出 1.1在一般标签中...

网友评论

      本文标题:xss防御

      本文链接:https://www.haomeiwen.com/subject/yxrjcxtx.html