检查推荐人?

时间:2010-12-10 19:24:13

标签: php remote-file-inclusion

我遇到了问题。我有这段代码:

$theUrl = $_GET["url"];
include("$theUrl.php");

这会获取网址,例如:http://mywebsite.com/index.php?url=test

但如果有人投入怎么办?

http://mywebsite.com/index.php?url=http://theirwebsite.com/someEvilscript

如何避免这种情况?我只想要在我的服务器上执行脚本而不是从其他网站执行。谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

处理此问题的一个好方法是定义可以包含的白名单文件。如果该列表中没有任何内容,则应将其视为邪恶且永不包含在内。

例如:

<?php
$allowed = array('file1', 'file2', 'file3');

if (in_array($_GET["url"], $allowed)) {
    // You can include
} else {
   // Error message and dont include
}
?>

注意:根据评论中的建议,可以通过扫描允许的目录动态填充允许列表。

答案 1 :(得分:0)

你真的不应该有任何类似的代码。我的意思是真的。你想用这个来实现什么?我确信在没有风险的情况下还有另一种方法(并且让我们说一般的丑陋)。

像HoLyVieR建议的那样,将可以包含的内容列入白名单是使当前代码安全的关键。

答案 2 :(得分:0)

为什么不在您的网站上创建test.php,并在链接中使用http://mywebsite.com/test.php?这样,您可以在test.php(以及其他脚本中)中包含初始化脚本(如果需要)。