如何清理WordPress中的用户密码信息


How to sanitize user password information in WordPress?

我在WordPress网站上的自定义注册表单中捕获用户名,电子邮件和密码。我正在使用sanitize_user()对用户名进行消毒,sanitize_email()对电子邮件地址进行消毒。

例如:

$username = sanitize_user( $username );
$email = sanitize_email( $email );

如何对用户输入的密码进行消毒?我能想到的只有sanitize_text_field( $pass ),但我确信这不是正确的方法。

裁判:

  • http://codex.wordpress.org/Function_Reference/sanitize_user
  • http://codex.wordpress.org/Function_Reference/sanitize_email

消毒不一定能保护你免受注射。为了防止这种情况,你需要使用预处理语句——或者在WordPress的情况下,使用$wpdb类。

清理只是去除无效字符,在您上面给出的情况下,它删除用户名中不允许的字符,或者在有效的电子邮件地址中不允许的字符。密码允许很多不同的字符类型,因为这使它们"强",所以你不想把它们去掉。

如果您使用wp_insert_user()来创建一个WP用户,那么您不需要对其进行任何清理,该函数将为您处理这一切

wp_insert_user()净化和过滤器关闭状态(2021)WordPress 5.7


wp_insert_user()user_pass默认:

    通过wp_hash_password()散列user_pass
<引用类>

不应该消毒


wp_insert_user()user_login默认值:

  • 通过sanitize_user()消毒user_login
  • 通过empty()过滤user_login .
  • 通过mb_strlen过滤user_login。(最多60个字符)。
  • 通过username_exists()与用户比较user_login
  • 通过illegal_user_logins比较user_login和非法用户登录。

wp_insert_user()user_nicename默认值:

  • 通过sanitize_user()消毒user_nicename
  • 通过mb_strlen过滤user_nicename。(最多50个字符)。
  • 通过sanitize_title()消毒user_nicename

wp_insert_user()user_email默认值:

  • 没有明确的卫生处理。
  • 通过empty()过滤user_email .
  • user_emailstrcasecmp进行比较。
  • user_emailemail_exists()进行比较

wp_insert_user() and user_url, display_name, nickname, first_name, last_name, last_name, description,默认值:

  • 没有明确的卫生处理。
  • 没有不同的过滤器
  • 无明显差异

来源
  • user.php @ https://github.com/WordPress/WordPress/blob/master/wp-includes/user.php

如前所述,您可以使用sanitize_text_field()函数。这可能会导致一些带有特殊字符的疯狂密码等问题。