什么时候需要用令牌保护表格(CSRF攻击)?

时间:2011-05-25 18:17:13

标签: php token csrf

据我所知,Web开发人员应该创建令牌并将其放在隐藏的表单字段中以防止CSRF攻击。此外,他应该在会话中保存相同的令牌,然后,在提交表单时 - 检查令牌是否相等。

我开始质疑......是否有必要对所有形式采用这种技术?我的意思是,想象一下为登录创建的表单。如果没有CSRF保护,我看不到对网站和/或用户造成的任何伤害,因为用户没有特权(就像他登录时一样)。注册也一样......我是对的吗?

P.S。如果我错了,请向我解释这个概念。

2 个答案:

答案 0 :(得分:6)

CSRF试图阻止的危险是当您遇到以下情况时:

  1. 用户已登录或具有任何权限,并具有一定级别的权限
  2. 在未经用户许可的情况下,坏人利用该权限
  3. 有时,这是通过诱使用户在不知情的情况下发出HTTP请求,例如在图像的源属性中。

    您要保护的表单是需要此权限的表单。

    关于这实际上没有意义的疯狂,偶然的机会,Chris Shiflett has an awesome article on CSRF(你可能已经读过了:/)

答案 1 :(得分:5)

一般来说,您希望保护您的表单,只要其提交将导致内容/状态发生变化;是添加,删除,编辑或与外部源共享(“分享xyz!”)。

您不需要保护的表单示例是搜索框,因为它不会导致内容发生任何变化。

如果您不确定,任何会导致某些内容被保存/删除的表单(无论是否在您的网站上)都应受到保护。

如果您真的不确定只是添加令牌,则不需要花费任何安全费用。