1

是否可以通过从另一台主机发送 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 来处理我们的脚本?
4

3 回答 3

4

不,不可能从其他网络服务器处理您的脚本。您的服务器不会将整个 PHP 源代码提供给远程服务器,而是会提供运行脚本的输出。这里不用担心。

您无法避免使用来自其他网络服务器的包含来处理您的脚本,因为这首先是不可能的。所以没有什么可以阻止的。

于 2013-10-03T10:44:49.617 回答
2

正如丹尼斯所说,虽然我想从个人管理网站的经验中添加一些有趣的警告。

人们经常在编辑文件时将他们的 php 脚本重命名为 secure_content.php.back 之类的东西 - 害怕它。然后,攻击者可以下载您的 PHP 脚本访问 ( secure_content.php.back)。拥有源代码不足以劫持变量,但已经是一个漏洞。secure_content.php.back如果你有一些配置变量,它会被放大$database_password

此外,如果您要从 Web 服务器上卸载 PHP,Apache(或其他)会将您的 secure_content.php 作为文本文件提供服务——这也是一种风险。当你要修补你的 PHP 引擎时,请记住。

于 2013-10-03T10:50:28.817 回答
1

不,您的服务器将运行脚本,然后将结果发送到恶意服务器。

如果打开,与您提到的类似的事情可能发生在旧版本的 PHPregister_globals中。这将允许有人打电话http://mywebsite.com/secure_content.php?login=true

这将导致$login在脚本开始时设置为 true。值得庆幸register_globals的是现在默认关闭,在 5.3 中已弃用并在 5.4 中删除。见这里

于 2013-10-03T10:53:23.277 回答