Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Что проще и надежней.


Автор: Predator199 2.12.2012, 22:22
 Так проверяю на инъекции 
Код

(isset($_POST['sl'])) ? htmlspecialchars(trim($_POST['sl'])) :  htmlspecialchars(trim($_GET['sl']));

Таких строчек скажем 20(разные посты и тд).
Скажите что проще и как будит быстрей php читать(какие фильтрации). И в тоже время надежные.

Автор: Arantir 2.12.2012, 22:43
Инъекции куда? В базу данных?
htmlspecialchars предназначен для вывода HTML-кода на страницу. В частности, для не-выполнения этого кода из, например, комментариев.
Для запросов в базу данных следует использовать prepared statements (не в курсе, как на русский красиво перевести). Это надежно.


Автор: skyboy 2.12.2012, 22:47
Цитата(Predator199 @  2.12.2012,  21:22 Найти цитируемый пост)
 Так проверяю на инъекции 

это не проверка, а обработка. причем, с вытягиванием из GET'a или POST'a — при том, что обычно GET и POST просто для разных задач и одноименные параметры в них — подозрительно, можешь использовать $_REQUEST как синоним "то ли из $_GET, то ли из $_POST". это раз.
htmlspecialchars помогает против XSS, но никак не защищает от SQL-injection. А по контексту не понятно, от какой "инъекции" ты защищаешься. Это два. 
если ты защищаешься от XSS, то все равно — htmlspecialchars надо применять перед выводом. а не при обработке входных параметров скрипта. иначе, к примеру, будешь по статьям сайта искать не "R&D", а "R&D" и, естественно, поиск ничего не найдет. два с половиной.
trim не обязателен в любом случае. это три.

Автор: Arantir 2.12.2012, 23:12
Еще должен заметить, что одной функцией от всего вы не спасетесь. Смотрите на свое приложение так, как будто в нем всегда есть где-то дырка о которой вы просто не знаете.

И фильтровать желательно по мере потребности, а не в стиле "всенахзаэкранированоитипабезопасно".
- Если пользователь при регистрации ввел в логин что-то типа "*&^%$#@", то продолжать что-то с ним делать не имеет смысла.
- Если в поле "введите значение от 1 до 5" ввели строку длиннее одного символа, то продолжать что-то с ним делать не имеет смысла.
- Если в cookie с unix-меткой последнего визита содержаться буквы, то продолжать что-то с ним делать не имеет смысла.
....

Автор: Predator199 3.12.2012, 06:17
Спасибо.
Цитата(skyboy @  2.12.2012,  22:47 Найти цитируемый пост)
то все равно — htmlspecialchars надо применять перед выводом. а не при обработке входных параметров 


А как можно напакостить сайту выводом данных? 

Автор: Arantir 3.12.2012, 07:44
Predator199, например, написать в комментарий:
Код

<script> while(true) { alert(''); } </script>

Не говоря уже о get/post запросах через ajax, которыми можно или положить серв или анти-ддос положит всех юзеров в блек-лист без их ведома.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)