Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Еще один совет: чем больше код (ваш или чужой, а особенно чужой), тем больше вероятность ошибок в нем. Используйте только то, что действительно считаете необходимым.
Некоторые волшебные места
За последнее время находятся удивительные способы получения критичной информации. Если вы пишете собственную систему, то вам необходимо обратить внимание на следующий момент. Ответ от сервера в качестве результата аутентификации необходимо возвращать по истечении определенного времени, в среднем равного времени неудачной аутентификации. Что это значит? Просто по времени задержки можно узнать наличие логина в базе. Говоря простым языком, можно составить список пользователей, который в дальнейшем можно применять, например, для подбора паролей по словарю, либо использовать список, как готовый спам-лист. Реализуется задержка ответа достаточно просто: первым делом организуйте кэширизацию ответов. Неплохим примером может послужить модуль с dklab.ru (WebOut.pm), либо неплохой микро-пример на jkeks.far.ru/ret, модуль err.pm. Суть заключается в том, что весь вывод накапливается, после готовности данных они отправляются.
Другая менее популярная проблема небольших проектов может существовать в самом процессе обработки POST-запросов. Дело в том, что в HTML-форму можно положить собственный параметр.
<input name='login' type='file'>
Собственно, речь идет о наличии не ASCII-символов. Необходимо иметь четкую и простую проверку, потому как данные логина сравниваются с содержимым базы, и нередко такие параметры передаются системам управления базами данных, где существуют свои критичные символы, т.е. необходим хороший фильтр данных. Кроме того, необходимо рассмотреть следующий пример:
-----------------------------7d339828e8
Content-Disposition: form-data; name="login"; filename="longfilename.txt"
Content-Type: text/plain
Данные:
-----------------------------7d339828e8
Content-Disposition: form-data; name="login"
AAABBBCCCАААБББВВВ
-----------------------------7d339828e8--
Удивительный запрос, да? Логин приходит в виде файла? Проблема существует в некоторых обработчиках форм. Какие проблемы тут могут быть?
1. В логин попадут неотфильтрованные данные.
2. Атакующий сможет как минимум создать временный файл в системе, занять канал.
Это связано с универсальностью обработки входящих данных некоторых несложных модулей. Некоторые даже коммерческие буржуйские универсальные модули обработки входящих данных автоматически создают временные файлы перед тем, как определить необходимость этих данных, т.е. файлы сначала создаются, а затем уже скрипт решает, нужны ли эти данные или нет.