我在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_email
与strcasecmp
进行比较。 - 将
user_email
与email_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()
函数。这可能会导致一些带有特殊字符的疯狂密码等问题。