CSP

内容安全策略(CSP)是一种用于定义网页可加载资源的安全策略,通过白名单机制防止XSS攻击。例如,设置CSP为只允许cdn.example.com的样式加载,浏览器会阻止其他来源的样式加载,并报告违规。配置CSP可通过HTTP Header或HTML meta标签,但建议优先使用Header。CSP的使用能有效提高网站安全性,当尝试加载未授权资源时,浏览器会发送违规报告。
摘要由CSDN通过智能技术生成

1.1 内容安全策略 (CSP) 是一个策略,定义了哪些资源可以被加载,可以减少和报告XSS攻击。其实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,开发者只需提供配置(如1.2所述)。CSP 大大增强了网页的安全性,攻击者即使发现漏洞也无法注入脚本,除非他还控制了一台列入了白名单的可信主机。一般同源策略只对网页的HTML文档做了限制,对加载的其他静态资源如javascript、css、图片等资源等还是可以加载。

1.2 例子

我们对http://example.com/signup.html使用以下策略,除了cdn.example.com的样式之外,不允许使用其他来源的样式。

Content-Security-Policy: default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports

http://example.com/signup.html 页面代码如下:

<!DOCTYPE html>
<html>
  <head>
    <title>Sign Up</title>
    <link rel="stylesheet" href="css/style.css">
  </head>
  <body>
    ... Content ...
  </body>
</html>

样式表仅允许从cdn.example.com加载,而网站尝试从其原点(http://example.com)加载样式表 。能够执行CSP的浏览器将以下违规报告作为POST请求发送,记录在http://example.com/_/csp-reports中: 

{
  "csp-report": {
    "document-uri": "http://example.com/signup.html",
    "referrer": "",
    "blocked-uri": "http://example.com/css/style.css",
    "violated-directive": "style-src cdn.example.com",
    "original-policy": "default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports"
  }
}

1.3 配置CSP的两种方式

  • HTTP Header(首选) 

        可以使用Content-Security-Policy HTTP响应头来进行配置

        

  • meta标签(慎选)

       如果要使用需要放到html的最前面

<meta http-equiv="Content-Security-Policy" content="default-src 'self' *.xx.com *.xx.cn 'unsafe-inline' 'unsafe-eval';">

       注意Header 和Meta不要混用,因为CSP是以最严格的策略为准,混用时很容易出问题,导致配置不生效,详情参考文档 [The effect of multiple policies]

1.4 参考

      https://www.icode9.com/content-4-851404.html

      https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值