Безопасно ли хранить файлы cookie в базе данных? - PullRequest
3 голосов
/ 20 апреля 2010

Если я использую mechanize , я могу, например, создать новый профиль Google Analytics для веб-сайта. Я делаю это, программно заполняя форму авторизации и сохраняя куки в базе данных. Затем, по крайней мере, пока не истечет срок действия файла cookie, я могу получить доступ к своей панели администратора аналитики без необходимости повторного ввода имени пользователя и пароля.

Предполагая, что вы не можете создать новый профиль аналитики каким-либо иным способом (с OpenAuth или чем-то еще, я не думаю, что это работает для фактического создания нового профиля Google Analytics, Google Analytics API предназначен для просмотра данных, но Мне нужно создать новый профиль аналитики), плохо ли хранить cookie в базе данных?

Если я сохраню файл cookie в базе данных, это позволит очень просто программно войти в Google Analytics без необходимости пользователя заходить в браузер (возможно, приложение имеет функцию, которая говорит «пользователь», вы можете запланировать ловушку это создает новый профиль anaytics для каждого нового домена, который вы создаете, просто введите свои учетные данные один раз, и мы обеспечим вам вход в систему и безопасность »). В противном случае мне придется продолжать пересылать электронные письма и пароли, что выглядит хуже.

Безопасно ли хранить файлы cookie в базе данных?

1 Ответ

1 голос
/ 20 апреля 2010

Прежде всего, это ошибочный подход, потому что срок действия аутентифицированного сеанса истечет, а ваше соединение с Google будет разорвано. Более того, вы должны использовать Google Analytics API .

Тем не менее, Хранение идентификатора сессии в базе данных является ненадежным.

Это не признанная уязвимость, по крайней мере, не та, о которой я знаю. Но это облегчает атаку на ваше приложение. SQL-инъекция очень распространена, и вы должны разрабатывать свое приложение так, чтобы ограничить воздействие любой данной уязвимости. Вот почему пароли хэшируются, потому что это задерживает злоумышленника от получения полного компромисса. Хранение идентификаторов сеансов, которые можно использовать немедленно, делает уязвимость SQL-инъекций более серьезной.

Я не уверен, на какой платформе вы работаете, но я предполагаю, что вы используете Linux, потому что вы заботитесь о безопасности :). Я рекомендую хранить имя пользователя / пароль в файле. Вам следует настроить права доступа к файлу, такие как chmod 700 file_name, и убедиться, что файл принадлежит вашему веб-серверу: chown apache:apache file_name. Если вы используете MySQL, убедитесь, что вы удалили file_priv (File Privilges) из учетной записи пользователя приложения ruby. Права доступа к файлам действительно неприятны, поскольку они позволяют злоумышленнику читать и записывать файлы с помощью SQL-инъекции.

...