在登录/注册表单中填充AntiForgeryToken是否有意义?

Ken*_*n D 2 security asp.net-mvc

我希望我的问题不是太简单,但你知道在安全方面,我们都会怀疑.

由于在这两种情况之前(登录/注册),我们没有登录用户(会话cookie),为什么我们要打扰登录/注册表单中的AntiForgeryToken?

小智 6

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

反CSRF令牌的工作原理是,当您向客户发送请求表单时,您会包含一个不可评估的值,客户端必须通过其操作请求发回该值.如果它返回,您知道要执行的操作请求源自您发送给客户端的表单.如果它没有回来,请求可能是伪造的,所以你应该忽略它.如果站点A上的代码导致请求发送到站点B,即使使用站点B的会话cookie,站点A上的代码也不会知道要包含的反CSRF令牌值,因此伪造的请求将被拒绝.

因此,如果您正在尝试防范站点上的CSRF攻击,则需要包含可以启动敏感操作的所有表单中的这些令牌,以防止使用已登录用户的伪造请求.此防御与未登录的用户无关,因为如果用户当前未登录,则另一个站点无法利用浏览器将所有请求发送会话cookie /令牌的事实.

  • 简单易懂的CSRF解释! (2认同)