在 recaptcha 中清理并验证 $_POST['g-recaptcha-response']

Sanitise and validate $_POST['g-recaptcha-response'] in recaptcha

我如何在 recaptcha

中清理和验证 $_POST['g-recaptcha-response']

https://github.com/google/recaptcha/blob/master/examples/example-captcha.php#L72

看起来它给出了一长串字母数字字符,_- 那么使用 strip_tags() 来清理并检查它是否只有字母数字字符,_- 是否足以验证?

您可以使用 strip_tags,但这不能确保没有发送其他字符,例如 @, #, ...。一种解决方案是使用 preg_match 来验证您收到的字符串:

if (!preg_match('/^[\w-]*$/', $_POST['g-recaptcha-response'])) {
    echo 'invalid captcha';
}