首页 > 解决方案 > 禁止 JavaScript POST 到 URL

问题描述

我目前在 Web 应用程序中遇到跨站脚本 (XSS) 弱点问题。因此我想知道是否有类似Content-Security-Policy: frame-ancestorsand X-Frame-Optionsfor JavaScript 的东西?

我的目标是禁止(好用户的)浏览器通过 JavaScript(例如使用)向特定 URL 进行 POST XMLHttpRequest,而应该允许来自 HTML 表单的“传统”POST。这个想法是为了防止恶意 JavaScript 在没有用户交互的情况下将 POST 请求发送到 Web 应用程序。

它类似于框架劫持:通过发送Content-Security-Policy: frame-ancestors带有 URL 的标头,我可以告诉浏览器不要将此 URL 放入框架中。现在,我想告诉浏览器不要通过 JavaScript 加载 URL。有没有这样的选择?

标签: javascriptxss

解决方案


没有真正的方法可以做到这一点......浏览器(和服务器)无法分辨“通过 JavaScript”和“通过 HTML”加载了什么——无论如何这都无关紧要,因为 XSS 可以简单地创建一个 HTML表格并自动提交。

您最好的选择可能是使用某种作为服务器呈现的 HTML 表单的一部分加载的反 CSRF 令牌。对于您的用例来说,不是 100% 万无一失,但可以做到这一点。


推荐阅读