Php 如何清理WordPress中的用户密码信息?
我正在我的WordPress网站上的自定义注册表中捕获用户名、电子邮件和密码。我正在使用Php 如何清理WordPress中的用户密码信息?,php,wordpress,Php,Wordpress,我正在我的WordPress网站上的自定义注册表中捕获用户名、电子邮件和密码。我正在使用sanitize\u user()和sanitize\u email()清理电子邮件地址来清理用户名 例如: $username = sanitize_user( $username ); $email = sanitize_email( $email ); 我应该如何清理用户输入的密码?我能想到的就是清理文本字段($pass),但我肯定这不是正确的方法 参考: 消毒不一定能防止注射。为了避免这种情况
sanitize\u user()
和sanitize\u email()
清理电子邮件地址来清理用户名
例如:
$username = sanitize_user( $username );
$email = sanitize_email( $email );
我应该如何清理用户输入的密码?我能想到的就是清理文本字段($pass),但我肯定这不是正确的方法
参考:
- 消毒不一定能防止注射。为了避免这种情况,您需要使用预先准备好的语句——或者在WordPress的情况下,使用
清理只会删除无效字符,在上面给出的情况下,它会删除用户名中不允许的字符,或有效电子邮件地址中不允许的字符。密码允许许多不同的字符类型,因为这是它们“强大”的原因,所以你不想删除它们
如果您使用创建WP用户,则无需对其进行任何清理,该函数将为您解决所有问题。如前所述,您可以使用
清理文本字段()
函数。它可能会导致一些带有特殊字符的疯狂密码等问题
但是应该没问题。消毒和过滤器关闭状态(2021年)WordPress5.7
和
用户通行证默认情况下:
- 散列
viauser\u pass
和
用户登录默认情况下:
- 通过对用户登录进行清理
- 通过过滤
用户登录名
- 通过过滤
用户登录名
。(最多60个字符)
- 将
via与用户进行比较user\u登录
- 将
via与非法用户登录进行比较user\u登录
和
用户名默认情况下:
- 通过清理
user\u nicename
- 过滤
via。(最多50个字符)user\u nicename
- 通过清理
user\u nicename
和
用户电子邮件默认情况下:
- 没有明显的消毒。
- 过滤
viauser\u电子邮件
- 将
via与旧邮件进行比较user\u email
- 将
via与旧邮件进行比较user\u email
和
用户名
,显示姓名
,昵称
,名
,姓
,姓
,说明
,默认情况下:
- 没有明显的消毒。
- 没有明显的过滤器。
- 没有明显的比较。
来源
@user.php
wp\u insert\u user()
散列。够了吗?散列就够了。。。生成的散列创建一个字符串,该字符串只包含可插入数据库的有效字符(无引号等),并且不包含可添加到数据库中的任何字符出于兴趣,wp\u insert\u user()
如何进行清理?您可以在中看到它。它使用sanitize\u user()
作为用户名和密码。正如@markbarker在上面所说的,对密码进行哈希处理就足够了。当然,WP正确地处理了数据库插入,所以没有注入的机会——我相信这是您最初关心的问题。我注意到了core中的sanitize\u user()
和WP\u hash\u password()
。我没有注意到任何与清理电子邮件地址有关的事情。我错过了吗?或者用户的电子邮件是否未初始化插入数据库?在注册和登录过程中限制密码字段的字符数仍然是一个好主意。通过wp\u insert\u user查看,您似乎仍然需要对诸如first\u name、last\u name、user\u email、display\u name、,根据您提交的字段,您不需要清理WordPress的密码字段,因为wp\U insert\U user或wp\U update\U user将散列数据,这将清理数据。您可以使用sanitize_text_field
,但这会使一些密码失败,并将大约%20个值转换为HTML实体,如空格或字符等。