javascript - 禁止 JavaScript POST 到 URL
问题描述
我目前在 Web 应用程序中遇到跨站脚本 (XSS) 弱点问题。因此我想知道是否有类似Content-Security-Policy: frame-ancestors
and X-Frame-Options
for JavaScript 的东西?
我的目标是禁止(好用户的)浏览器通过 JavaScript(例如使用)向特定 URL 进行 POST XMLHttpRequest
,而应该允许来自 HTML 表单的“传统”POST。这个想法是为了防止恶意 JavaScript 在没有用户交互的情况下将 POST 请求发送到 Web 应用程序。
它类似于框架劫持:通过发送Content-Security-Policy: frame-ancestors
带有 URL 的标头,我可以告诉浏览器不要将此 URL 放入框架中。现在,我想告诉浏览器不要通过 JavaScript 加载 URL。有没有这样的选择?
解决方案
没有真正的方法可以做到这一点......浏览器(和服务器)无法分辨“通过 JavaScript”和“通过 HTML”加载了什么——无论如何这都无关紧要,因为 XSS 可以简单地创建一个 HTML表格并自动提交。
您最好的选择可能是使用某种作为服务器呈现的 HTML 表单的一部分加载的反 CSRF 令牌。对于您的用例来说,不是 100% 万无一失,但可以做到这一点。
推荐阅读
- swift - 在 Swift 的 NSDocument 应用程序中从行参数打开文件的正确方法是什么?
- google-cloud-platform - 是否可以同时创建多个谷歌云实例并将文件上传到所有实例并从中下载文件?
- python - BeautifulSoup:“发生异常:KeyError 'id'”使用带有 .find_all() 方法的函数时
- reactjs - 通过 map() 渲染多个组件时,componentDidMount 仅触发一次
- python - 在散景服务器应用程序中绘制多行流数据
- php - PHP isset 不适用于 $this 变量
- php - 是否可以使用 IntelliJ + PHP + Xdebug + WSL(Windows 上的 Ubuntu)?
- assembly - 打印偶数汇编语言 x86
- css - 如何更改字体样式?
- c# - 无法绑定视图模型属性 - 我自己的用户控件 (WPF)