Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Хитрости и секреты создания сайтов


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Интернет / Хитрости и секреты создания сайтов

Выпуск № 152
от 18.09.2007, 14:05

Администратор:Ерёмин А.А.
В рассылке:Подписчиков: 449, Экспертов: 46
В номере:Вопросов: 1, Ответов: 2


Вопрос № 101913: Добрый день! В своем сайте я интенсивно использую <?php include ('$QUERY_STRING'); ?> Но вчера меня предупредили, что это очень опасно с точки зрения взлома. Как этого избежать? Заранее благодарен....

Вопрос № 101.913
Добрый день!
В своем сайте я интенсивно использую

<?php
include ('$QUERY_STRING');
?>

Но вчера меня предупредили, что это очень опасно с точки зрения взлома. Как этого избежать?
Заранее благодарен.
Отправлен: 13.09.2007, 13:06
Вопрос задал: Ігор (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Стас Тельнов/[анти]КИЛЛЕР
Здравствуйте, Ігор!
Да, приведённый вами код довольно уязвим для хакера. Ведь $QUERY_STRING формируется пользователем. У вас же подключается значение этой переменной и выводится в браузер. А если в этой переменной будет содержаться какой-либо системный файл, то хакер сможет посмотреть и его содержимое… Конечно, у хорошего хостинга все необходимые файлы должны быть защищены от подключения путём include(), но всё таки… Вы ведь не где не проверяете что именно ввёл пользователь и что именно хранится в переменной $QUERY_STRING.
Как этого избежать? Зависит от того, что именно вы хотите сделать. В частности если вы точно знаете, что в этой переменной содержится путь к файлу и он всегда одинаков, то можно у этой строки вырезать первые символов и проверять их. Например в $QUERY_STRING содержится "/path/file.txt", и вы берёте и проверяете, чтобы первые 6 символов были именно "/path/" А если, например, всегда разрешение подключаемого файла txt, то можно вырезать последние 3 символа и проверять на соответствие именно их.

Хоть и вкратце, но надеюсь я вам объяснил чем опасен именно ваш кусок кода.
---------
Не стыдно не знать, стыдно не учиться
Ответ отправил: Стас Тельнов/[анти]КИЛЛЕР (статус: 3-ий класс)
Ответ отправлен: 13.09.2007, 15:02

Отвечает: Flynn
Здравствуйте, Ігор!
Хакер без проблем может вывести любой файл, что у вас находится на хостинге и к которому есть доступ у РНР. Конечно если это будет какой файл с РНР кодом - то скрипт его просто обработает и выведет что и должен, но если там просто текст сразу - скрипт его так же и выведет.
Чтобы защититься я бы лично вообще посоветовал изменить структуру сайта. Но если это не подходит, то первым делом проверяйте - не заданы ли точки или слешы в начале $QUERY_STRING. Если они есть - вырезайте их - это дает возможность взломщику менять директорию. Проверяйте вхождение точки несколько раз - если у вас передается расширение файла и больше нигде она как разделитель не используется. А еще лучше если все файлы одного типа - убрать расширение вообще и проверять на вхождение через preg_match() только буквы и цыфры.
Ответ отправил: Flynn (статус: 6-ой класс)
Ответ отправлен: 13.09.2007, 23:09


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.59 от 17.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное