HTML:禁用动态添加的 <script> 标签?
HTML: disable dynamically added <script> tags?
我从没想过要问这个问题,但我从事安全产品方面的工作,因此我们针对 XSS 实施了非常严格的保护:
- 我们不允许用户在服务器端和客户端输入
<
和 >
- 如果用户确实设法发出包含这些字符中的任何一个的请求,服务器将禁用他们的帐户并为管理员留下警告
- Angular 还会在将插值内容注入 DOM
之前对其进行清理
这一切都很棒很花哨,除了它会损害用户体验并且不利于性能。当然,肯定有一种方法可以告诉浏览器不要执行初始文档解析后添加的 <script>
标签,对吧?我们使用现代捆绑工作流程,JavaScript 的任何延迟加载都将通过 import("/some/js/module")
调用完成,这些调用会被捆绑器重新定位,但永远不会在 运行 时提供动态值。
即使没有办法直接告诉浏览器不要 运行 动态添加(在页面加载后由 JS)<script>
标签,是否有一个经过验证的真实工作流程在 iframe 中渲染,比如说,markdown + HTML 子集用户制作的内容?我在高层次上熟悉 iframe,但我的意思是父 document/page 可以操纵 iframe 的 DOM 内容或其他内容,即使它确实在iframe,脚本代码会不会访问父文档的JS环境?
Actually that would be cool as a sandboxed way to display user content because they could intentionally include a script and make a little interactive widget for other users to mess with, in theory (maybe an antifeature in practice).
您可以使用 CSP(内容安全策略)
https://developers.google.com/web/fundamentals/security/csp#inline-code-considered-harmful
示例:
只允许:
<script nonce="EDNnf03nceIOfn39fn3e9h3sdfa">
// Some inline code I can't remove yet, but need to asap.
</script>
与
Content-Security-Policy: script-src 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa'
首先阻止所有内容:
default-src 'none'
我从没想过要问这个问题,但我从事安全产品方面的工作,因此我们针对 XSS 实施了非常严格的保护:
- 我们不允许用户在服务器端和客户端输入
<
和>
- 如果用户确实设法发出包含这些字符中的任何一个的请求,服务器将禁用他们的帐户并为管理员留下警告
- Angular 还会在将插值内容注入 DOM 之前对其进行清理
这一切都很棒很花哨,除了它会损害用户体验并且不利于性能。当然,肯定有一种方法可以告诉浏览器不要执行初始文档解析后添加的 <script>
标签,对吧?我们使用现代捆绑工作流程,JavaScript 的任何延迟加载都将通过 import("/some/js/module")
调用完成,这些调用会被捆绑器重新定位,但永远不会在 运行 时提供动态值。
即使没有办法直接告诉浏览器不要 运行 动态添加(在页面加载后由 JS)<script>
标签,是否有一个经过验证的真实工作流程在 iframe 中渲染,比如说,markdown + HTML 子集用户制作的内容?我在高层次上熟悉 iframe,但我的意思是父 document/page 可以操纵 iframe 的 DOM 内容或其他内容,即使它确实在iframe,脚本代码会不会访问父文档的JS环境?
Actually that would be cool as a sandboxed way to display user content because they could intentionally include a script and make a little interactive widget for other users to mess with, in theory (maybe an antifeature in practice).
您可以使用 CSP(内容安全策略)
https://developers.google.com/web/fundamentals/security/csp#inline-code-considered-harmful
示例: 只允许:
<script nonce="EDNnf03nceIOfn39fn3e9h3sdfa">
// Some inline code I can't remove yet, but need to asap.
</script>
与
Content-Security-Policy: script-src 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa'
首先阻止所有内容:
default-src 'none'