正在检查PHP脚本中的漏洞,包括带有参数的远程文件


Checking for vulnerabilities including remote file, with parameter, in PHP script

我包含了一个带有file_get_contents()的远程文件,如下所示:

function checkData($serial) {
  file_get_contents("http://example.com/page.php?somevar=".$serial."&check=1");
  return $http_response_header;
}

这个远程页面执行一些基本的数据操作,并在数据库中查找序列号(输入经过净化,我正在使用PDO,所以我不必担心SQL注入),然后在响应标头中返回一个值。输入$serial是一个get参数,因此完全由用户控制。我想知道这个函数是否有任何输入会导致不良行为,例如获取所需页面之外的另一个页面的内容。

提前谢谢。

如果$serial变量始终是数字,则可以在该值周围应用intval(),以确保该值始终是数字并且不包含用于路径遍历/RFC等的其他非数字数据。

例如

file_get_contents("http://example.com/page.php?somevar=".intval($serial)."&check=1");

或者,如果您还需要alpha字符,您可以使用preg_replace来去除不需要的字符。

http://php.net/manual/en/function.preg-replace.php