Jus*_*use 5 security ajax csrf csrf-protection
我有一个静态网站,由CDN提供服务,该网站通过AJAX与API进行通信。如何防范CSRF?
由于我无法控制静态网站的服务方式,因此当有人加载我的静态网站时,我无法生成CSRF令牌(并将令牌插入表单或随AJAX请求发送)。我可以创建一个GET端点来检索令牌,但是似乎攻击者可以简单地访问该端点并使用它提供的令牌?
有没有有效的方法来防止使用此堆栈的CSRF?
其他详细信息:身份验证在此处完全分开。我想要CSRF保护的一些API请求是经过身份验证的终结点,而一些是公共POST请求(但我想确认它们来自我的网站,而不是其他人的)
我可以创建一个GET端点来检索令牌,但是似乎攻击者可以简单地访问该端点并使用它提供的令牌?
正确。但是CSRF令牌并不是秘密的。它们仅存在以确认以一个用户期望的顺序执行某项操作(例如,表单POST仅在对表单的GET请求之后)。即使在动态网站上,攻击者也可以向页面提交他们自己的GET请求,并解析出嵌入在表单中的CSRF令牌。
从OWASP:
CSRF是一种诱使受害者提交恶意请求的攻击。它继承了受害者的身份和特权,可以代表受害者执行不希望的功能。
在页面加载时发出初始GET请求以获取新令牌,然后将其与执行操作的请求一起提交是完全有效的。
如果您想确认发出请求的人的身份,则需要进行身份验证,这与CSRF无关。