我一直在尝试了解 CSRF 攻击。我知道它使用来自有效站点会话的凭据,并使用来自另一个站点的会话信息向有效站点发出请求。
我想知道任何人如何访问会话信息(一个域的 cookie 无法从另一个域访问)。我想知道攻击者是如何欺骗服务器的。我希望看到一些现实生活场景的答案。
我一直在尝试了解 CSRF 攻击。我知道它使用来自有效站点会话的凭据,并使用来自另一个站点的会话信息向有效站点发出请求。
我想知道任何人如何访问会话信息(一个域的 cookie 无法从另一个域访问)。我想知道攻击者是如何欺骗服务器的。我希望看到一些现实生活场景的答案。
基本概念可以很简单地解释。虽然完整的故事有点复杂(这可能是你被选为“过于宽泛”的原因),但我认为一个简单的例子可能会有所帮助
您在 stackoverflow 上有一个帐户,您可以在其中为答案投票(例如这个)。我可以创建一个网站,调用 stackoverflow 在后台支持这个答案。因此,我会将您链接到该站点,然后您会自动为我投票。那很不好!
所以刚刚发生的事情是调用(请求)被我从另一个页面(跨站点)伪造(伪造)。
Stackoverflow 必须采取预防措施来检查每个对 upvote-api 的调用实际上是由您从他们自己的站点完成的,而不是由我(通过您)偷偷摸摸地完成的。
这可能出错的最简单方法是,如果 upvote 按钮只是一个 api 发布到https://stackoverflow.com/api/upvote/{id}
. 如果您已登录并且我让您在后台从 javascript 发布到该 api,那么您会投赞成票并且永远不会对此更加明智。任何好的实现都试图通过使用任何众所周知的反 csrf 技巧(例如令牌)来避免这种情况,但是这样做会使我们非常坚定地进入“太宽泛”的类别:D