Веб-системы

Основные проблемы с паролями в веб-системах

Основными и широко распространенными проблемами с паролями в веб-приложениях и системах появляются проблемы хранения и передачи паролей.

Хранения паролей

Хранение пароля в файле программы-скрипта открытым текстом является ненадежным средством. Его могут посмотреть:

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

Возможные решения данной проблемы:

При взаимодействии с Базой Данных можно доставать пароль для проверки по самой БД. В этом случае просто так пароль пересмотреть не получится. Если злоумышленник и проникнет на жесткий диск сервера, то максимум, что он сможет сделать — это получить пароль от базы данных, и получив к ней доступ, забрать пароль оттуда. Но добраться до БД также затруднено, при достаточной политике безопасности администратора БД, будет дополнительным препятствием на пути злоумышленника.

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

Передача паролей

Пароли могут передаваться через GET и POST запросы. Выбор метода пересылки очень важен с точки зрения безопасности. Нередко можно столкнуться с тем, что многие веб-приложений передают пароль методом GET, хотя пароли нужно передавать методом POST.

Разница между этими методами заключается, впрочем, что при запросе методом GET переданы параметры (в том числе пароль) являются открытыми, потому что они являются частью URL, а при запросе методом POST — параметры передаются внутри тела запроса. При использовании метода GET, нужно помнить, что в логах сервера могут остаться ваши пароли. И если злоумышленник доберется до логов сервера, тогда он сможет узнать пароли пользователей системы и даже администратора. При передаче пароля методом POST параметры не являются частью URL и не записываются в логи веб-сервера. Поэтому всегда старайтесь передавать пароли POST запросом.

Хранения паролей

Как уже отмечалось, для надежного хранения паролей, в частности в файлах, необходимо их шифровать. Для этой задачи наиболее часто используют хэш-функции. Серверные языки программирования, такие как Perl и PHP, поддерживают различные алгоритмы шифрования, включая хеш-функции (для проведения хеширования), такие как DES, MD4, MD5, SHA1 и другие.

В Perl наиболее часто применяется функция crypt (), реализующий алгоритм шифрования DES. Поэтому для надежного и безопасного хранения паролей в файле скрипта, либо во внешнем файле, нужно захешуваты его функцией crypt (). Для пароля MbQGWw4s зашифрованный crypt () пароль будет выглядеть как Cd46XY120Htc2. При использовании crypt () нужно учитывать, что функция использует только первые 8 символов пароля.