我在网站上使用这段PHP代码。 现在它老了,我最近有一些攻击。脚本用于包含来自其他地方的另一个文件并发送垃圾邮件。显然,这使我的脚本成为垃圾邮件发件人。
的内容
$htm = ".htm";
$pid = "$details$htm";
function show_details($pid)
{
if (!preg_match("/http/", $pid)) {
require($pid);
} else {
die;
}
}
以及标题,desc,关键字等。
$txt = ".txt";
$title = "$details$txt";
function show_title($title)
{
if (!preg_match("/http/", $title)) {
if (file_exists($title)) {
require($title);
} else {
die;
}
}
}
和带有
的display.php文件print '
<!-- CONTENT -->
';
show_details("$pid");
print '
通过此代码ı能够通过“/display.php?details=mycontentpage”调用任何内容
mycontentpage.htm mycontentpage.txt
.............
现在这段代码必须重新编码..由于网站太大,我无法改变构造。 所以我想我必须坚持这个......
有人可以帮忙吗?有什么意见吗?
答案 0 :(得分:0)
为了使这样的脚本更安全,您必须确保register_globals设置为OFF。这意味着您必须添加如下行:
php_flag register_globals off
...来.htaccess。然后,在您第一次使用它们时声明所有用户变量,如:
$details = $_GET['details']
...将URI片段“details”中的数据分配给PHP变量$ details。
我可以非常了解你的攻击者是如何通过你的代码和register_globals设置的 - 他们只需创建一个包含PHP代码的.htm文件来重新分配其他变量,包括它,然后中提琴。
有关详细信息,请参阅: http://us2.php.net/manual/en/security.globals.php
希望这有帮助!