Может ли хранение сессии быть безопасным? - PullRequest
21 голосов
/ 20 апреля 2011

Я хотел бы использовать хранилище сеансов для запроса пользовательских данных в базе данных только один раз, а затем просто использовать JS для их получения, поэтому я думаю об использовании хранилища сеансов. Мой вопрос следующий, это безопасно?

Обратите внимание:

1. JS не может быть вставлен на страницы с формами (формы принимают только буквенно-цифровые значения), поэтому он может поступать только с URL

1.1 Строки запроса, такие как www.website.com/?q=blablabla, не используются в php (php не получает никаких данных из URL)

1.2 Вызов js в url с помощью javascript: script ... не представляет большой проблемы, поскольку пользователь может получить доступ только к своим собственным данным, не говоря уже о том, что он уже может получить к ним доступ - в этом суть пользовательских данных

1.3 Существует ли третий способ перенаправления пользователя на сайт по ссылке, содержащей JS, которая затем сможет получить доступ к хранилищу сеансов? т.е. что-то вроде - www.website.com/script ...

Я предполагаю, что только что-то вроде 1.3 будет угрозой (в дополнение к этому, я что-то упускаю?), Но существует ли это вообще? И если так, есть ли способ предотвратить это?

Спасибо за ваше время и ответы.

Ответы [ 2 ]

11 голосов
/ 04 мая 2011

Вы в основном полагаетесь на две вещи для обеспечения безопасности хранения сеансов:

  1. Браузер, ограничивающий доступ только к javascript на странице из этого домена
  2. javascript, которыйна странице работает, чтобы быть безопасным

Теперь вы не можете ничего сделать с номером 1, потому что это проблема производителя и, не указывая ни на кого конкретно, но большинство изони обычно довольно хороши в подобных вещах.

Таким образом, вы можете быть совершенно уверены, что никакой другой код на любой другой вкладке, в домене, браузере или процессе не сможет увидеть ваш объект хранения.

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

Если это действительно конфиденциальные данные, я бы спросил, почему вы рискуете хранить их клиентомстороны вообще и имеют доступ только через HTTPS.Но ваш сайт должен быть защищен для большинства атак с использованием сценариев, потому что если сторонний javascript запущен, сеансовые cookie-файлы нужны, и, следовательно, безопасность вашего сервера также подвергается риску.

3 голосов
/ 20 апреля 2011

Поскольку хранилище сеанса может быть прочитано только с помощью JavaScript, который работает на вашей странице, я думаю, что ваш вопрос сводится к тому, «Как JavaScript может быть вставлен / вставлен на мою страницу?» Существует два метода атаки: XSS, , означающий некоторый способ внедрения JavaScript на вашу страницу посредством публикации данных на вашем сайте. Если эти данные не отфильтрованы, они могут вставить теги сценария или события JavaScript в ваш HTML. Есть много способов сделать это и защититься от этого, поэтому я не могу быть более конкретным.

Меньшая угроза будет заключаться в том, чтобы заставить сайт отображать или изменять информацию через специально созданные ссылки, которые вызывают определенные действия на вашей странице. Эта техника называется CSRF . Пример: кто-то создает ссылку на страницу «изменить адрес электронной почты» и обманывает пользователя, вошедшего в систему при нажатии на эту ссылку, при этом изменяется информация электронной почты в хранилище сеанса.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...