Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Опасность отсутствия фильтрации входных переменных преувеличена?
 
 автор: yvgorshkov   (11.11.2013 в 11:17)   письмо автору
 
 

Здравствуйте!
Допустим есть такой код:
<?php
$var 
$_GET['id'];
echo 
$var;
?>

Как видно он получает GET параметр и не фильтруя использует-выводит на страницу.
Как злоумышленник может воспользоваться данным фактом. Не преувеличена ли опасность нефильтрованных входных данных?

  Ответить  
 
 автор: confirm   (11.11.2013 в 12:32)   письмо автору
 
   для: yvgorshkov   (11.11.2013 в 11:17)
 

<form>
<input name=id value="<script>alert('Не обрабатывать данные извне, это опасно!')</script>" />
<button>Send</button>
</form>

  Ответить  
 
 автор: yvgorshkov   (11.11.2013 в 12:56)   письмо автору
 
   для: confirm   (11.11.2013 в 12:32)
 

Да, есть такое дело, и XSS это единственное, что может быть опасно.
Но меня интересует, можно ли пользуясь этой уязвимостью, исполнить произвольный php код?

  Ответить  
 
 автор: confirm   (11.11.2013 в 13:38)   письмо автору
 
   для: yvgorshkov   (11.11.2013 в 12:56)
 

>и XSS это единственное, что может быть опасно.

Нет, это не единственное, если вы не будете обрабатывать данные извне, то запросто получите sql-инъекцию, а если будете эти данные не дай бог включать в код, то тогда запросто можно исполнить и "червяка" на вашем сервере.

Так что если поступать необдуманно, то да, можно выполнить все что угодно.

  Ответить  
 
 автор: yvgorshkov   (11.11.2013 в 14:52)   письмо автору
 
   для: confirm   (11.11.2013 в 13:38)
 

и как там может червяк завестись? Хотя бы простой пример, а то я не понимаю.
С SQL иньекцией всё понятно.

  Ответить  
 
 автор: confirm   (11.11.2013 в 15:00)   письмо автору
 
   для: yvgorshkov   (11.11.2013 в 14:52)
 

Ну как, точно также как и с echo, только если вздумается выполнить полученное - eval(). А ведь eval используют, и не только начинающие, а такое было замечено и в известных CMS.

В общем рассуждать не опасно ли не обрабатывать входные переменные так же бессмысленно как и "пить или не пить цианистый калий". Обрабатывать! И только так и без всяких рассуждений.

  Ответить  
 
 автор: yvgorshkov   (11.11.2013 в 15:13)   письмо автору
 
   для: confirm   (11.11.2013 в 15:00)
 

с eval() тоже всё понятно.
Верно ли утверждение, что если не используется include/require функции, в скрипте невозможно использовать сторонний php код? (Шелл скрипты не рассматривать).

  Ответить  
 
 автор: confirm   (11.11.2013 в 15:41)   письмо автору
 
   для: yvgorshkov   (11.11.2013 в 15:13)
 

Вряд ли вы обойдетесь без include/require по простой причине - очень неудобно весь код свалить в один файл.

Можно ведь и загрузить вам паука, и если надеяться, что не использую "это", а вот этого тем более у меня нет на странице, то "паук" рано или поздно оживет.

Данные извне, это не доверенные данные - а) могут быть просто мусором, чего не нужно, б) могут быть спамом, что не приятно, г) всегда потенциально опасны - что вредно для здоровья вашего сервера.
Все, выполняйте обязательную проверку, а философией по этому вопросу занимайтесь исключительно ради забавы.

  Ответить  
 
 автор: yvgorshkov   (11.11.2013 в 16:24)   письмо автору
 
   для: confirm   (11.11.2013 в 15:41)
 

Что фильтровать надо я уже понял, но я спрашиваю о другом: Верно ли утверждение, что если не используется include/require функции, в скрипте невозможно использовать сторонний php код? (Шелл скрипты не рассматривать).
И если есть возможность указать пример дырявости вышеприведённого кода, когда он может использоваться для выполнения произвольного php кода, если это вообще реально.

  Ответить  
 
 автор: confirm   (11.11.2013 в 17:17)   письмо автору
 
   для: yvgorshkov   (11.11.2013 в 16:24)
 

Об этом можно и не спрашивать - нельзя выполнить код не запустив его. Но ведь можно сперва получить нечто вредное по недосмотру, а потом либо самому его запустить, либо его запустит тот кто его подбросил.

Самая распространенное легкомысленное отношение к внешним данным, это загрузка файлов на сервер, когда вершиной "безопасности и достаточности" считается проверить расширение после точки. Вот вам и дыра, а вы уперлись в include, словно это один путь навредить. Почитайте в сети, там много и подробно описано по вопросам безопасности.

  Ответить  
 
 автор: yvgorshkov   (11.11.2013 в 20:06)   письмо автору
 
   для: confirm   (11.11.2013 в 17:17)
 

спасибо за ответы

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования