【问题标题】:CSP style-src: 'unsafe-inline' - is it worth it?CSP style-src: 'unsafe-inline' - 值得吗?
【发布时间】:2015-06-04 20:37:54
【问题描述】:

目前我在我的所有网站上都使用 Modernizr,事实证明,由于它的工作原理,它需要允许 unsafe-inline 样式。我已经不允许内联脚本和脚本的 unsafe-eval 了。想知道允许内联样式存在哪些安全风险?

【问题讨论】:

    标签: css content-security-policy


    【解决方案1】:

    允许内联样式会使您容易受到“其他 XSS”的影响。跨站点样式攻击。

    这里的想法是,用户可以在您的文档中注入样式属性的任何地方,他们都可以按照他们想要的方式修改您的页面外观。我将列出几个按严重程度递增的潜在攻击:

    1. 他们可以把你的页面变成粉红色,让它看起来很傻。
    2. 他们可能会修改您页面的文字,使您看起来像是在说一些冒犯性的话,可能会冒犯您的读者群。
    3. 他们可以使用户生成的内容(例如他们提供的链接)出现在人们希望看到用户内容的正常位置之外,从而使其看起来是官方的。 (例如,用他们自己的链接替换您网站上的“登录”按钮)。
    4. 使用精心设计的样式规则,他们可以将页面上包含的任何信息发送到外部域,并以恶意方式公开或以其他方式使用这些数据来对付您的用户。

    第四个示例,尽管有unsafe-inline,但可以完全防止信息泄露到外部域,前提是您确保您的其他 CSP 规则绝不允许任何类型的请求进入不受信任或通配符域。但是如果您错过在某处阻止样式属性,前 3 个总是可能的。

    Mike West 几年前为 CSSConf 做了一个很好的 talk 以获取更多示例。

    【讨论】:

    • 嘿,不错的帖子,不过我很好奇,如果它是移动应用程序(已下载)怎么办?这会被视为威胁吗?我假设在这种情况下他们只能弄乱自己的应用程序并为自己的应用程序制作一些奇怪的 css 东西,或者?
    • 这是一个 webview 风格的应用程序吗?这将是与普通浏览器交付内容相同的攻击向量。攻击自己的不是用户,而是一个外部(因此是“跨站点”)实体改变了您为他们准备的体验。这可能是被劫持的第三方 JS/CSS(您是否正在验证您打包的所有内容?)、未正确清理的内容或各种其他向量(例如我还不够聪明无法正确理解的图像)。
    • 难道他们不能通过修改类来轻松搞砸您的页面吗?我仍然没有看到好处。
    • 对于任何将到达此页面并寻找 CSP 信息的人来说,X-XSS-Protection 被认为是过时的,Firefox 从未实现它,Chrome 也放弃了它的支持。
    • @InterLinked 根据 OWASP 的说法,X-XSS-Protection 标头甚至会在客户端引入额外的安全问题。 “因此,建议将标头设置为 X-XSS-Protection: 0 以禁用 XSS Auditor,并且不允许它采用浏览器处理响应的默认行为。”请改用 CSP。来源:owasp.org/www-project-secure-headers/#x-xss-protection
    猜你喜欢
    • 2020-10-12
    • 2022-11-22
    • 2020-09-19
    • 2021-02-14
    • 2019-01-04
    • 2022-12-19
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多