У меня есть веб-приложение, в котором я намерен предоставить каждому клиенту собственный субдомен, такой как client1.myapp.com, client2.myapp.com и т. Д. Когда пользователь входит в систему, я храню их ID пользователя в переменной сеанса, например $_SESSION['user'] = 4;
Когда установлено $_SESSION['user']
, пользователь вошел в систему и может получить доступ к приложению. Поскольку идентификаторы пользователей уникальны только для каждого отдельного клиента, мне нужен способ не допустить доступа пользователей к субдоменам других клиентов. Я подумал использовать для этого cookie сеанса, но потом решил, что файлы cookie могут быть взломаны. Теперь я собираюсь назначить каждому клиенту уникальный идентификатор клиента и использовать $_SESSION[$clientID]['user']
вместо $_SESSION['user']
. Это безопасный способ решения проблемы? Какие у меня есть другие варианты?Как ограничить пользователей своим поддоменом
ответ
Нет ничего плохого в вашем подходе $clientID
.
Если вы хотите получить фантазию, вы можете сделать что-то вроде использования session_set_cookie_params, так что то же самое PHPSESSID
cookie может быть доступно для всех доменов и поддоменов. Это имеет свои преимущества, особенно если ваша централизованная страница входа в систему должна определить, зарегистрирован ли пользователь для определенного домена или поддомена. Или если вы хотите разрешить пользователю выходить из всех поддоменов одновременно или создать административную учетную запись, которая может получить доступ ко всем субдоменам.
Никогда не доверяйте идентификатору сеанса, даже если файл cookie привязан к определенному субдомену, поскольку сеансы для всех поддоменов составляют stored в том же каталоге на сервере.
Решение для этого может быть: ini_set(session.save_path, "/path/to/your/folder/$clientid")
, тогда у вас будет уникальный каталог, предназначенный для каждого клиента для хранения сеансов. Преимущество такого подхода заключается в том, что ваш $_SESSION
не будет содержать информацию, связанную с другим поддоменом.
Вы также можете использовать sesssion_name, поэтому вместо PHPSESSID
вы можете использовать client1 или client2, чтобы было понятно, к какому клиенту принадлежит сеанс. , например. client2=8d72edf35377a27388cb;client8=b47277bc8e3d4a5f
, тогда PHP может прочитать этот файл cookie и знать клиента, для которого существует сессия.
Вы также можете использовать комбинацию из всех вышеперечисленных, независимо от того, что работает для вас.
См функции сессии связанные здесь: http://php.net/manual/en/book.session.php
И параметры сеанса, связанные здесь: http://php.net/manual/en/session.configuration.php
Попробуйте что-нибудь подобное. Я надеюсь, это поможет.
Когда пользователь входит в систему, хранить их субдомен в переменной сеанса, как:
$_SESSION['user_subdomain'] = 'client1.myapp.com';
И когда $_SESSION['user']
и $_SESSION['user_subdomain']
установлен, пользователь вошел в систему и доступ к приложению, то просто проверить текущее приложение, обращающееся-х субдомен равен $_SESSION['user_subdomain']
или нет.
Используя этот способ, вы можете перенаправить клиента на субдомен правильного приложения, если он попытался получить доступ к дополнительным доменам других клиентов. Таким образом, вы можете запретить пользователям получать доступ к поддоменам других клиентов.
- 1. Как ограничить доступ пользователей к своим элементам группы в Loopback?
- 2. Как ограничить размеры img своим родительским div?
- 3. Как ограничить пользователей вкладкой
- 4. Как ограничить количество пользователей, получающих очки пользователей?
- 5. Как ограничить загрузку пользователей в S3
- 6. Как ограничить обнаружение пользователей 1?
- 7. Как ограничить число пользователей fifo?
- 8. Как ограничить пользователей в activemq?
- 9. openERP ограничить пользователей
- 10. Ограничить количество пользователей
- 11. AngularAdal ограничить пользователей AD
- 12. Ограничить действие пользователей - Swift
- 13. Как ограничить трансляцию своим собственным приложением для Android
- 14. Android: Как ограничить пользовательский интерфейс приложения своим диалогом «Настройки»?
- 15. Ограничить пользователей с нескольких страниц
- 16. Как получить всех пользователей со своим последним сообщением
- 17. Как я могу разделить пользователей своим пользовательским агентом?
- 18. Ограничить поведение пользователей в elasticsearch
- 19. Ограничить разрешение пользователей в GitLab?
- 20. ограничить подкаталоги для зарегистрированных пользователей
- 21. Как ограничить пользователей другого домена, кроме ** abc.com **
- 22. Как ограничить пользователей голосованием по собственной модели
- 23. Как ограничить страницу доступа пользователей в RoR?
- 24. Как ограничить количество пользователей Вход в приложение?
- 25. Как ограничить доступ пользователей к поддоменам
- 26. Как ограничить пользователей загрузкой определенного типа файла?
- 27. как ограничить пользователей только редактировать свои записи
- 28. Как ограничить доступ пользователей к объекту?
- 29. Потоковое видео, как ограничить пользователей по времени
- 30. Как ограничить количество входных данных пользователей?