【问题标题】:How to avoid javascript injection while inline codes can be run in IIS 10?如何在 IIS 10 中运行内联代码时避免 javascript 注入?
【发布时间】:2020-08-09 04:16:01
【问题描述】:

我试图避免用户使用浏览器检查器在我的 html 中编写 javascript,而我自己的内联和页面 javascript 可以运行。

我已经在 IIS 中为 Content-Security-Policy 标头尝试了这些:

default-src 'self' site.com ;style-src 'self' site.com 'unsafe-inline';script-src 'self' site.com 'unsafe-inline'

这将让我自己的代码运行,但用户可以在 html 和以下内容中注入 javascript:

default-src 'self' site.com ;style-src 'self' site.com 'unsafe-inline';script-src 'self' site.com

不会让用户注入代码,但我自己的代码不能再运行了。

如何避免用户在我的 html 代码中注入诸如 alert('ok') 之类的代码,但有一些内联代码和使用 IIS 运行 javascripts 代码的页面?

【问题讨论】:

  • 您的用户如何能够首先注入自己的 JavaScript?为什么您的应用程序不清理输入?
  • @Dai 我的意思是在我的 html 代码中写一个警报('ok')而不是输入。

标签: security iis code-injection content-security-policy iis-10


【解决方案1】:

根据this,如果您想确保只有原始内联代码可以运行,那么您可以计算内联 JavaScript 的哈希并将其放入 CSP 策略中,如下所示:

script-src js-cdn.example.com 'sha256-xzi4zkCjuC8lZcD2UmnqDG0vurmq12W/XKM5Vd0+MlQ='

当内联脚本被 CSP 阻止时,您的浏览器开发工具控制台可能会为您计算哈希并将其输出到控制台中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2022-08-14
    • 2015-01-06
    • 2011-03-05
    • 2020-11-22
    相关资源
    最近更新 更多