2013-10-03 2 views
1

Возможно ли взломать веб-сайт, отправив переменную PHP с другого хоста? Например:Хакер, отправляя переменную 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 с другого веб-сервера?
+0

Нет! если вы не используете функцию 'eval'! – undone

+3

Не должно быть '$ login = TRUE;' вместо '$ login === TRUE;'? –

+0

@MatteoTassinari вы правы. – SCC

ответ

4

Нет, обработка сценариев с другого веб-сервера невозможна. Ваш сервер не будет отдавать весь исходный код PHP удаленному серверу, скорее он даст результат запуска вашего скрипта. Здесь не беспокойтесь.

Вы не можете избежать обработки своих сценариев с помощью include с другого веб-сервера, потому что это невозможно в первую очередь. Поэтому нечего мешать.

+0

Что такое удаление сервера? – SCC

+0

Это опечатка, означающая «удаленный». – Denis

+0

как насчет моего второго вопроса? – SCC

2

Как сказал Денис, хотя я хочу добавить несколько интересных выходок из личного опыта администрирования сайтов.

Люди часто переименовывают свои скрипты php в нечто вроде secure_content.php.back при редактировании файла - бойтесь. Как и тогда, злоумышленник может загрузить ваш PHP-скрипт (secure_content.php.back). Наличие исходного кода недостаточно для захвата переменных, но уже является уязвимостью. Это будет получить усиливается, если ваш secure_content.php.back имеет некоторые конфигурационные переменные, такие как $database_password

Кроме того, если вы хотите удалить PHP с вашего веб-сервера, Apache (или любой другой) будет служить вашей secure_content.php в виде текстового файла - это также риск. Просто имейте в виду, когда вы хотите возиться с вашим движком PHP.

+1

Чтобы предотвратить первый случай - добавьте эту строку в .htaccess: приложение AddType/x-httpd-php .back – SCC

1

Нет. Ваш сервер запустит скрипт, а затем отправит результаты злому серверу.

Аналогичная вещь, о которой вы упоминаете, может возникать в более старых версиях PHP, если включен register_globals. Это позволит кому-то позвонить http://mywebsite.com/secure_content.php?login=true.

Это приведет к тому, что $login будет установлено значение true в начале сценария. К счастью, register_globals теперь отключен по умолчанию и устарел в 5.3 и удален в 5.4. См. here.

+0

, что относительно моего второго вопроса? – SCC

+0

Если ваш сервер настроен правильно, файлы '.php' будут всегда обрабатываться на вашем сервере. Между другим сервером, запрашивающим вашу страницу и веб-браузер, нет разницы. Поскольку это означает, что другие серверы не могут обрабатывать ваш PHP. – Jim

Смежные вопросы