为什么WordPress对URL隐藏重置密码键?

时间:2018-07-15 作者:John Doe

我目前正在开发一个自己的WordPress插件,它包含一个自定义登录界面。我想知道,为什么在WP Admin上重置密码时,WordPress会将重置密码密钥存储在cookie中,而不是通过$_GET?

例如,如果重置链接为https://example.com/wp-admin/?action=rp&key=123123213213213123&login=admin, 链接将存储$_GET[\'key\']$_GET[\'login\'] 在cookie中,并使用cookie为您提供此页面:https://example.com/wp-admin/?action=rp.

这样做有什么安全原因吗?

3 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

老实说有点难说。。。

此行为在3.9.2(即安全版本)中引入。以下是Trac中的错误:29060: Don\'t pass around the resetpass key, 但是关于为什么在bug报告中引入它,没有多少信息。

是出于安全原因吗?很有可能。但这真的会让整个过程更加安全吗?有点难说。。。

每个请求中都会发送GET参数和cookie,所以攻击者仍然可以拦截它们。这只会使这样的尝试变得更加困难(因为您必须获得pass\\u key和它的散列值)。

SO网友:Fayaz

有几个security 当您这样做时,我能想到的好处是:

如果您从电子邮件中转到重置URL,但忘记实际重置,则有人visual access 到您的屏幕(直接从您后面或屏幕前面的安全摄像头)有更高的机会从浏览器地址栏中获取重置URL,其值为key 属性因此,将其设置为Cookie&;然后重定向到https://example.com/wp-login.php?action=rp 在这方面有所帮助。

keeps the browser history cleaner. 由于重定向,key will not show up in the browser history. 例如,您正在使用更安全的浏览器设置,关闭浏览器窗口后,将清理Cookie。具有key 在浏览器URL中,历史记录可能仍保留该链接,稍后可能会有人在您不知道的情况下使用该链接(如果您访问了该链接但未使用该链接)。所以保持key 在Cookie中(&A);然后重定向在这种情况下也会有所帮助。

当然,这并不是最特别的安全增强,但它仍然是一种改进(即使这些是您从此次更新中获得的唯一好处)。

Note: 我不认为这有任何像抵御MITM攻击那样的严重安全好处。MITM与GET &;Cookie. 使用HTTPS 解决这两个问题。

SO网友:Matt

我也在想同样的问题。我能找到的最好的解释是:

https://robots.thoughtbot.com/is-your-site-leaking-password-reset-links

如果用户单击电子邮件中的密码重置链接,并且完整的url保留在浏览器中,如果用户不重置密码并单击密码重置页面上的输出链接,则完整的密码重置链接将在HTTP referer中共享。

诚然,Wordpress在wp登录时没有任何外部链接。php,但很多人自定义此页面,因此很容易看到可能存在的安全问题。

结束

相关推荐

WP_LOGIN_FORM()是否在重定向时将用户ID传递到URL?

我有一个自定义页面,要求用户登录以访问该页面。一旦他们登录,我想将他们重定向到同一个页面,但我想将他们的用户ID添加到重定向中的URL字符串中。这只是为了分析,实际内容受到if (current_user_can(\'\')){} 以下是我在受密码保护的页面中尝试的代码:<?php $userID = get_current_user_id(); $args = array( \'echo\' => true