Content-Security-Poliy

在做chrome插件开发的时候,接触的这个概念,内容安全策略。通过白名单的方式,控制页面中哪些资源可以正常执行,哪些不可以,从而减少XSS的攻击。

语法

  1. 指令集合
    • default-src:指定那些没有被精确指令定位的默认安全策略
    • script-src:指定javascript的来源
    • style-src:指定css的来源
    • connect-src:指定XHR、WebSocket的来源
    • img-src:指定图片和图标的来源
    • media-src:指定媒体资源的来源
    • font-src:指定字体的来源
    • child-src:指定web worker、frame的来源
  2. 内容源
    • host:主机地址
    • *:运行任何内容
    • ‘none’:不允许任何内容
    • ‘self’:运行同源内容
    • ‘unsafe-inline’:运行使用内联的script标签、style标签和事件绑定
    • ‘unsafe-eval’:运行使用eval()方法

用法

  1. HTML中通过meta标签设置

    <meta http-equiv="Content-Security-Policy" content="script-src 'self'"></meta>

  2. 在HTTP的响应头配置CSP

    1
    2
    Responsec Header
    Content-Security-Policy: script-src 'self'

CSP指定的都是白名单,如上面例子,非同源的javascript不会被加载及执行。