我目前在Web应用程序中遇到跨站点脚本(XSS)漏洞的问题。因此,我想知道JavaScript是否有类似Content-Security-Policy: frame-ancestors
和X-Frame-Options
的东西?
我的目标是禁止(好的用户)浏览器通过JavaScript(例如,使用XMLHttpRequest
)对特定的URL进行POST,而应允许HTML格式的“传统” POST。这样做的目的是防止恶意JavaScript在无需用户交互的情况下将POST请求发送到Web应用。
这类似于框架劫持:通过发送带有URL的Content-Security-Policy: frame-ancestors
标头,我可以告诉浏览器不要将此URL放入框架中。现在,我想告诉浏览器不要通过JavaScript加载URL。有这样的选择吗?
答案 0 :(得分:1)
没有真正的方法来完成...浏览器(和服务器)无法分辨“通过JavaScript”还是“通过HTML”加载了什么-没关系,因为XSS可以简单地创建一个HTML表单并自动提交。
您最好的选择是使用某种反CSRF令牌,该令牌作为服务器呈现的HTML表单的一部分加载。对于您的用例,并非100%可靠,但可以做到这一点。