XSS防御说

0x01 HTTP响应的X-头部

1. x-frame-options

x-frame-options的值有两个:

  • deny(禁止被加载到任何frame中)
  • sameorigin(仅允许被加载进同域内的frame)

2. x-xss-protection

x-xss-protection的值有三个:

  • 0(表示禁用这个策略)
  • 1(默认,对危险脚本做一些标志或修改,以阻止在浏览器上渲染执行,Chrome和IE在这方面的行为是有差异的)
  • 1;mode=block(强制不渲染,在Chrome下直接跳转到空白页,在IE下返回一个#符号)

这个策略仅针对反射型xss,对付不了存储型xss,能识别反射型是因为提交请求的URL中带有可疑的xss代码片段。

3. x-content-security-policy(俗称CSP)

CSP策略由一些指令构成,每个指令以分号分隔,语法格式:

1
x-content-security-policy:[指令1][指令值1];[指令2][指令值2]...

指令分类:

  • defualt-src(以下值中的单引号必须有)

    该指令的值会影响一下所有指令,支持通配符来表明外部资源的来源
    'none'表示一个空集合,即表示外部资源不允许被加载
    'self'表示匹配同域的资源,即只有同域内的资源允许被加载
    'unsafe-inline'表示允许内核的javascript/css,如<script>里的,javascript:里的、on事件里的、<style>事件里的等。
    'unsafe-eval'表示允许eval/setTimeout/setInterval/Function等可以直接执行字符串的函数。除此之外,还有一个data指令值,允许data:协议。
    **注意以上指令值都以空格分隔**
    
  • script-src

    表示脚本的来源,指令值同default-src
    
  • object-src

    表示<object><embed><applet>等对象的来源,指令值同default-src
    
  • img-src

    表示<img>的来源,指令值同default-src
    
  • media-src

    表示<audio><vedio>的来源,指令值同default-src
    
  • frame-src

    表示<frame><iframe>的来源,指令值同default-src
    
  • font-src

    表示@font-face字体的来源,指令值同default-src
    
  • connect-src

    表示XMLHttpRequest、WebSocket等跨域的来源,指令值同default-src
    
  • style-src

    表示样本来源,指令值同default-src
    

本文标题:XSS防御说

文章作者:Pino-HD

发布时间:2018年05月30日 - 22:05

最后更新:2018年05月30日 - 22:05

原始链接:https://pino-hd.github.io/2018/05/30/XSS防御说/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!