2012-01-02 58 views

回答

5

一般来说,你不知道。你所说的攻击是一个跨站点请求伪造(CSRF)。这种类型的攻击依赖于已登录的用户(如果您登录到站点A和站点B并且站点A知道这一点,他们可以将html代码放入,这会导致请求转到站点B,看起来像你启动它并可能导致执行敏感操作)。这些攻击依靠浏览器发送会话cookie /令牌以及所有请求到相关站点(站点A包括请求站点B执行操作X,这导致浏览器向站点B发送请求,因此包括所有cookie ,包括会话cookie,以该请求发送到站点B)。

反CSRF令牌的工作原理是因为当您向客户端发送请求表单时,会包含客户端必须发回的无法推测的值及其操作请求。如果它回来了,您知道要执行的操作的请求始于您发送给客户的表单。如果它没有回来,请求可能是伪造的,所以你应该忽略它。如果站点A上的代码导致请求被发送到站点B,即使使用站点B的会话cookie,站点A上的代码也不会知道要包含的反CSRF标记值,所以伪造的请求将被拒绝。因此,如果您试图防范您的站点上的CSRF攻击,则需要将这些令牌包含在所有可启动敏感操作的表单中,以防止伪造的请求利用已登录的用户。这种防御对于未登录的用户是无关紧要的,因为另一个站点不能利用浏览器将会话cookie /令牌与所有请求一起发送的事实,如果用户当前没有登录。

+2

对CSRF的很好的解释用简单的话来说! – Romias 2012-01-02 01:52:25

+0

我也应该指出我说“一般”。有一种攻击可能需要缓解,CSRF的一种变体有时称为“登录CSRF”。攻击者不会欺骗您向已登录的站点提交请求,而可能诱骗您使用其他/不是您的凭据登录到站点,以便该站点将您视为另一个用户。例如,如果他在他的不相关网站上包含Google的登录代码,并且您的浏览器看到并执行了该代码,那么您将以攻击者控制的用户身份登录Google。然后,当你搜索时,以为你没有登录, – jeffsix 2012-01-02 13:19:54

+0

你真的会和谷歌会跟踪你的搜索历史(假设的例子)。攻击者随后可以使用这些凭证登录,并查看您搜索的内容。这是一个与CSRF攻击不同但非常相关的攻击,并且可以通过在登录页面上放置CSRF令牌来缓解这种攻击,如果这是一个相关的用例,并且这是您关心的缓解措施。 – jeffsix 2012-01-02 13:21:03