Эта страница должна быть защищена от несанкционированного доступа. Я хочу добиться этого с помощью существующего файла cookie сеанса Nextcloud.
В настоящее время я читаю файл cookie nc_session_id из браузера пользователя и проверяю, существует ли этот сеанс в PHP. путь сеанса. Это должно быть безопасно, поскольку злоумышленник обычно не может угадать идентификатор.
Вот как выглядит сеанс Nextcloud в браузере:
Файлы cookie Nextcloud
Я пытался проверить файл cookie с помощью
Код: Выделить всё
session_status('nc_session_id') != PHP_SESSION_NONEМой текущий код, похоже, работает работа:
Код: Выделить всё
session_name('nc_session_id');
$sessid_cook = filter_input(INPUT_COOKIE, "nc_session_id", FILTER_SANITIZE_STRING);
$sess_path = session_save_path().'/sess_'.$sessid_cook;
if(isset($_COOKIE['nc_session_id']) &&
isset($_COOKIE['nc_username']) &&
file_exists($sess_path)) {
echo "Session okay";
session_start();
} else {
echo "Access denied";
exit;
}
// my protected logic here
Это работает в моей текущей настройке, но что произойдет, если сеансы обрабатываются Redis или Memcache? Не удалось проверить файлы cookie локально.
Есть ли лучший способ «проверить» файлы cookie сеанса перед запуском сеанса PHP?
Является ли мое решение безопасным или у него есть недостатки?
Подробнее здесь: https://stackoverflow.com/questions/582 ... l-php-page
Мобильная версия