我查看了this堆栈溢出答案,以了解有关CORS飞行前请求的信息。根据此答案,可以在不存在CORS时进行CSRF攻击。
但是要注意对“简单”请求的要求 需要预检,我看到仍然允许POST。那可以改变 像删除一样声明和删除数据!
是真的! CORS不能保护您的站点免受CSRF攻击。然后 同样,没有CORS,您也不会受到CSRF攻击的保护。的 飞行前请求的目的仅仅是为了限制您的CSRF暴露于 在CORS之前的世界中已经存在的东西。
但是,如果浏览器遵循Same Origin Policy,我想不出如何进行CSRF攻击的方法。如果恶意站点试图访问另一个站点,则浏览器将简单地阻止它,因为请求的来源是不同的。
如果不存在CORS,有人可以解释一下CSRF攻击是怎么可能的吗?
答案 0 :(得分:1)
起源类似于AJAX请求,但这并不是触发CSRF攻击的唯一方法。
例如:
<form id="evilForm" method="post" action="http://example.com/delete_user.php">
<input type="hidden" name="user_id" value="12345">
</form>
<script>
document.getElementById('evilForm').submit();
</script>