|
|
|
| Здравствуйте!
Допустим есть такой код:
<?php
$var = $_GET['id'];
echo $var;
?>
|
Как видно он получает GET параметр и не фильтруя использует-выводит на страницу.
Как злоумышленник может воспользоваться данным фактом. Не преувеличена ли опасность нефильтрованных входных данных? | |
|
|
|
|
|
|
|
для: yvgorshkov
(11.11.2013 в 11:17)
| |
<form>
<input name=id value="<script>alert('Не обрабатывать данные извне, это опасно!')</script>" />
<button>Send</button>
</form>
|
| |
|
|
|
|
|
|
|
для: confirm
(11.11.2013 в 12:32)
| | Да, есть такое дело, и XSS это единственное, что может быть опасно.
Но меня интересует, можно ли пользуясь этой уязвимостью, исполнить произвольный php код? | |
|
|
|
|
|
|
|
для: yvgorshkov
(11.11.2013 в 12:56)
| | >и XSS это единственное, что может быть опасно.
Нет, это не единственное, если вы не будете обрабатывать данные извне, то запросто получите sql-инъекцию, а если будете эти данные не дай бог включать в код, то тогда запросто можно исполнить и "червяка" на вашем сервере.
Так что если поступать необдуманно, то да, можно выполнить все что угодно. | |
|
|
|
|
|
|
|
для: confirm
(11.11.2013 в 13:38)
| | и как там может червяк завестись? Хотя бы простой пример, а то я не понимаю.
С SQL иньекцией всё понятно. | |
|
|
|
|
|
|
|
для: yvgorshkov
(11.11.2013 в 14:52)
| | Ну как, точно также как и с echo, только если вздумается выполнить полученное - eval(). А ведь eval используют, и не только начинающие, а такое было замечено и в известных CMS.
В общем рассуждать не опасно ли не обрабатывать входные переменные так же бессмысленно как и "пить или не пить цианистый калий". Обрабатывать! И только так и без всяких рассуждений. | |
|
|
|
|
|
|
|
для: confirm
(11.11.2013 в 15:00)
| | с eval() тоже всё понятно.
Верно ли утверждение, что если не используется include/require функции, в скрипте невозможно использовать сторонний php код? (Шелл скрипты не рассматривать). | |
|
|
|
|
|
|
|
для: yvgorshkov
(11.11.2013 в 15:13)
| | Вряд ли вы обойдетесь без include/require по простой причине - очень неудобно весь код свалить в один файл.
Можно ведь и загрузить вам паука, и если надеяться, что не использую "это", а вот этого тем более у меня нет на странице, то "паук" рано или поздно оживет.
Данные извне, это не доверенные данные - а) могут быть просто мусором, чего не нужно, б) могут быть спамом, что не приятно, г) всегда потенциально опасны - что вредно для здоровья вашего сервера.
Все, выполняйте обязательную проверку, а философией по этому вопросу занимайтесь исключительно ради забавы. | |
|
|
|
|
|
|
|
для: confirm
(11.11.2013 в 15:41)
| | Что фильтровать надо я уже понял, но я спрашиваю о другом: Верно ли утверждение, что если не используется include/require функции, в скрипте невозможно использовать сторонний php код? (Шелл скрипты не рассматривать).
И если есть возможность указать пример дырявости вышеприведённого кода, когда он может использоваться для выполнения произвольного php кода, если это вообще реально. | |
|
|
|
|
|
|
|
для: yvgorshkov
(11.11.2013 в 16:24)
| | Об этом можно и не спрашивать - нельзя выполнить код не запустив его. Но ведь можно сперва получить нечто вредное по недосмотру, а потом либо самому его запустить, либо его запустит тот кто его подбросил.
Самая распространенное легкомысленное отношение к внешним данным, это загрузка файлов на сервер, когда вершиной "безопасности и достаточности" считается проверить расширение после точки. Вот вам и дыра, а вы уперлись в include, словно это один путь навредить. Почитайте в сети, там много и подробно описано по вопросам безопасности. | |
|
|
|
|
|
|
|
для: confirm
(11.11.2013 в 17:17)
| | спасибо за ответы | |
|
|
|