google recaptcha:我们应该过滤 file_get_contents $_POST 变量吗?
google recaptcha: should we filter for file_get_contents $_POST variables?
嗨,我有一个关于 google 的问题 php
我注意到验证 recaptcha 的标准行是:
$response =file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=". $yoursecret."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);
我的问题是我们是否应该 verify/filter/sanitize $_POST['g-recaptcha-response'] 和 $_SERVER['REMOTE_ADDR']?
我认为我们需要 filter/verify 处理所有事情,但我无法从 google 中找到任何相关文档。我担心有人会在 POST 中添加其他内容并将响应重定向到另一个站点,然后在没有 verification/sanitizing $_POST 变量
的情况下做一些恶意的事情
如果只是为了可靠性,您应该在将任何内容插入查询字符串之前将其包裹 urlencode
。或者,停止通过将字符串组合在一起来构建 URL,并将其留给内置函数 http_build_query
:
$url = 'https://www.google.com/recaptcha/api/siteverify?' . http_build_query([
'secret' => $yoursecret,
'response' => $_POST['g-recaptcha-response'],
'remoteip' => $_SERVER['REMOTE_ADDR'],
]);
$response = file_get_contents($url);
无论是否存在明显的安全漏洞,始终 运行 通过任何相关编码进行处理。如果 $_POST['g-recaptcha-response']
包含将来需要不同编码的字符(例如 &
),那么您将在问题发生之前避免它们。
嗨,我有一个关于 google 的问题 php
我注意到验证 recaptcha 的标准行是:
$response =file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=". $yoursecret."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);
我的问题是我们是否应该 verify/filter/sanitize $_POST['g-recaptcha-response'] 和 $_SERVER['REMOTE_ADDR']?
我认为我们需要 filter/verify 处理所有事情,但我无法从 google 中找到任何相关文档。我担心有人会在 POST 中添加其他内容并将响应重定向到另一个站点,然后在没有 verification/sanitizing $_POST 变量
的情况下做一些恶意的事情如果只是为了可靠性,您应该在将任何内容插入查询字符串之前将其包裹 urlencode
。或者,停止通过将字符串组合在一起来构建 URL,并将其留给内置函数 http_build_query
:
$url = 'https://www.google.com/recaptcha/api/siteverify?' . http_build_query([
'secret' => $yoursecret,
'response' => $_POST['g-recaptcha-response'],
'remoteip' => $_SERVER['REMOTE_ADDR'],
]);
$response = file_get_contents($url);
无论是否存在明显的安全漏洞,始终 运行 通过任何相关编码进行处理。如果 $_POST['g-recaptcha-response']
包含将来需要不同编码的字符(例如 &
),那么您将在问题发生之前避免它们。