在PHP脚本

时间:2016-04-14 11:18:39

标签: php security file-get-contents remote-access

我包含一个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参数 - 完全由用户控制。我想知道这个函数是否有任何输入会导致不良行为,例如获取除所需页面之外的其他页面的内容。

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

E.G。

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

另外,如果您还需要字母字符,也可以使用preg_replace去除不需要的字符。

https://jsfiddle.net/jfy5n2nf/1/