通过从另一个主机发送PHP变量来进行黑客攻击

时间:2013-10-03 10:43:28

标签: php security include require

是否可以通过从其他主机发送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";
?>
  1. 黑客是否有可能查看安全内容?
  2. 如何避免使用其他网络服务器的include / require处理我们的脚本?

3 个答案:

答案 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