是否可以通过从其他主机发送PHP变量来破解网站?例如:
我有一个文件secure_content.php:
<?php
if($fgmembersite->Login()) //placed at the top to avoid the warning: headers already sent
{
$login = TRUE;
}
//intentionally removed {else $login === FALSE}
// echo some contents
if ($login === TRUE)
{
//echo secure data
}
else
{
echo "You are not authorised to view this content";
}
?>
攻击者在他的网络服务器中有一个名为hack.php的文件
<?php
$login = TRUE;
require_once "http://mywebsite.com/secure_content.php";
?>
答案 0 :(得分:4)
不,无法从其他网络服务器处理您的脚本。 您的服务器不会将整个PHP源代码提供给远程服务器,而是提供运行脚本的输出。 不用担心。
您无法避免使用来自其他网络服务器的包来处理您的脚本,因为这首先是不可能的。所以没有什么可以阻止的。
答案 1 :(得分:2)
正如丹尼斯所说,虽然我想从管理网站的个人经验中添加一些有趣的洞穴。
人们经常在编辑文件时将他们的php脚本重命名为secure_content.php.back之类的东西 - 担心它。那时,攻击者可以下载访问(secure_content.php.back
)的PHP脚本。拥有源代码不足以劫持变量,但已经是一个漏洞。如果您的secure_content.php.back
有一些配置变量,例如$database_password
此外,如果您要从Web服务器卸载PHP,Apache(或其他)将作为文本文件提供secure_content.php - 也存在风险。在修改PHP引擎时,请记住这一点。
答案 2 :(得分:1)
没有。您的服务器将运行该脚本,然后将结果发送到恶意服务器。
如果启用register_globals
,则在旧版本的PHP中会出现与您提到的类似的内容。这样就可以有人拨打http://mywebsite.com/secure_content.php?login=true
。
这会导致在脚本开始时将$login
设置为true。值得庆幸的是,register_globals
现在默认关闭,在5.3中已弃用,在5.4中已删除。请参阅here。