Проверяйте тип данных

В дополнение к прошлому посту, и как подметил автор SecureBlog’а, хотел бы добавить следующее: прежде чем осуществлять обработку данных на их содержимое необходимо проверять их тип. Если этому не уделять внимания, то недостаточная проверка типов данных может привести к раскрытию пути, т.к. функция, которая ожидает получить, например, числовое значение в качестве одного из аргументов, приняв строку или массив, как правило, вызывает ошибку уровня E_WARNING:

Warning: urlencode() expects parameter 1 to be string, array given in C:\Webservers\localhost\www\index.php on line 3

Передать массив вместо строки или числа очень просто:
GET-запрос:

GET /index.php?mode[]=main HTTP/1.1
Host: somehost.com
Connection: close

POST-запрос:

POST /index.php HTTP/1.1
Host: somehost.com
Content-Type: application/x-www-form-urlencoded
Connection: close

postfield[]=blah

Массив в Cookie:

GET /index.php HTTP/1.1
Host: somehost.com
Cookie: auth[]=8c510f5172628316f5435fc9bc0c4d17
Connection: close

Скоро выложу свою функцию, общие принципы реализации которой я описывал в прошлом посте.

Как нужно проверять входящие данные

Фильтрация данных, поступающих со стороны пользователя, с точки зрения безопасности самый важный компонент любого веб-приложения. Сегодня я хотел бы рассказать какие основные составляющие по-моему мнению должна включать правильная обработка входящих данных. Первое и самое главное правило – все, что приходит от пользователя или каким-либо образом может быть им изменено, должно проходить обязательную проверку на стороне сервера. Однако всеми излюбленный метод, при котором ко всем элементам массивов GET, POST и Cookie применяется addslashes(), не является абсолютно безопасным.

Безопасность загружаемых изображений

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

Безопасность WordPress

WordPress – удивительно успешный проект. За очень короткий срок он превратился из неизвестной платформы для ведения блогов в мощное, продуманное и возможно самое популярное в интернете веб-приложение, собравшее вокруг себя огромное сообщество. Однако все, что становится популярным, привлекает внимание и багоискателей. В доказательство моим словам привожу таблицу количества обнаруженных уязвимостей в WordPress с 2005 года по настоящее время.