【发布时间】:2013-12-08 16:44:30
【问题描述】:
我必须处理一个网页。该网页基于YII framework,登录页面受CSRF tokens保护。当我通过POST method 传递登录凭据时。我收到 error 400 和 The CSRF token could not be verified 消息。
我不知道如何绕过这个保护。我不明白这个机制。当我通过 Chrome 浏览器登录时,我看到了 POST 消息的样子。它有 4 个参数:CSRF 密钥、登录名、密码、一个空变量。浏览器如何获取正确的 CSRF 密钥以进行打磨?
我有这个网页的登录名和密码,我可以作为普通用户登录。只有登录页面受到 CSRF 保护。我可以在正常登录时使用浏览器创建的cookie(如何做到这一点),给这个cookie to cURL并在登录页面后面开始处理URLs吗?
【问题讨论】:
-
CSRF 密钥有超时限制,所以如果你使用上次登录时的 csrf 密钥(比如两天前)登录页面应该会报错
-
每次我重新登录 Chrome 时,CSRF 密钥都不同。因此我认为 CSRF 密钥只是一种用途。
-
已解决:CSRF 密钥是为会话生成的,它以纯文本形式位于登录页面内。我可以从登录页面的源代码中复制它,并提供给 cURL 脚本以作为 POST 变量过去。 CSRF Key 在每次页面刷新后都不会改变,一个 KEY 在注销之前是有效的。注销时,CSRF 密钥被打磨到服务器以终止。
-
@MrMgr 你应该使用上面的这个评论,并用它来回答你自己的问题。这样,遇到相同问题的任何其他人都可以轻松了解如何解决。