我在WordPress网站上的自定义注册表单中捕获用户名,电子邮件和密码。我正在使用sanitize_user()
清理用户名,sanitize_email()
清理电子邮件地址。
例如:
$username = sanitize_user( $username );
$email = sanitize_email( $email );
我应该如何清理用户输入的密码?我能想到的只是sanitize_text_field( $pass )
,但我确信这不是正确的做法。
价:
答案 0 :(得分:0)
消毒不一定能保护您免受注射。为了防止这种情况,你需要使用准备好的语句 - 或者在WordPress的情况下,使用$wpdb class。
清理只会删除无效字符,在您上面给出的情况下,它会删除用户名中不允许的字符,或者不允许使用有效的电子邮件地址。密码允许许多不同的字符类型,因为这就是使它们“强大”的原因,因此您不想将它们删除。
如果您正在使用wp_insert_user()
创建一个WP用户,那么无论如何您都不需要对其进行消毒,该功能将为您完成所有这些操作。
答案 1 :(得分:0)
如前所述,您可以使用length
函数。可能会导致某些带有特殊字符等的疯狂密码出现某些问题。
但这应该没关系。
答案 2 :(得分:0)
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
与用户进行比较。user_login
通过 illegal_user_logins
与非法用户登录进行比较。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
。strcasecmp
将 user_email
与旧的进行比较。email_exists()
将 user_email
与旧的进行比较。wp_insert_user()
和 user_url
、display_name
、nickname
、first_name
、last_name
、last_name
、{{ 1}},默认: