PHP глазами хакера - рецензия
Не мог пройти мимо книги Фленов М.Е. "PHP глазами хакера".
Написанный ниже текст является, лишь моим мнением. И он не претендует на истину в последней инстанции. Как я так и автор упоминаемой книги может ошибаться.
Автор поднимает злободневную тему по устойчивости сайта к разного рода хакерским атакам. Интересно рассмотрены методы атак сайтов. Однако методы защиты от них во многом приведут к громосткому плохо читабельному коду.
Более того, стандартные функции PHP проверены большим числом пользователей, а в собственном изобретении гораздо проще оставить уязвимое место.
Практически все атаки с помощью SQL-инъекции и внедрением тэгов HTML предотвращаются использованием 3 приемов
- Если строка вставляется в SQL запрос, она должна быть в кавычках. Перед вставкой в кавычки в исходной строке все кавычки должны быть преобразованы в соответствующую замену HTLM. Для двойных это ". Функция PHP htmlspecialchars выполняет это преобразование.
- Если в SQL запрос вставляется целое число (это все примеры книги с параметром id). Преобразуйте перед вставкой из строки в целое число используя intval.
- Если отображаются текст, который ввел пользователь, все теги HTML должны быть преобразованы в соответствующий текст. Для этого достаточно заменить < и > на < и > используя htmlspecialchars.
Автор на 179 странице утверждает, что на функцию htmlspecialchars надеяться нельзя и лучше написать свою функцию для преобразования < с использование регулярных выражений. Чем ему не угодила эта функция непонятно. Есть более жесткая htmlentities, но первой вполне достаточно.
Наворачивание большого числа фильтров, только сделают код нечитабельный и не прибавят ему стойкости.
Основной принцип безопасности автором подчеркнут правильно «Что не разрешено, то запрещено».
Часто источник уязвимости кроется в архитектуре приложения. Параметры по возможности должны быть такими, чтобы их не требовалось фильтровать. Вместо названий должны по возможности использоваться только числовые идентификаторы. Тогда легко отфильтровав их с помощью intval, можно не беспокоится о том, что туда вставили.
При копировании или цитировании гиперссылка на http://perviysait.narod.ru/php_hack.htm как источник обязательна.