Я делаю приложение на основе php. Когда два пользователя вошли в систему из одного и того же браузера на разных вкладках, они могут получить доступ к страницам друг друга. Как предотвратить это?
Ограничить доступ пользователей в том же браузере
Ответы (4)
Я вижу там 4 решения:
Вы можете просто попытаться дать этому окну (в данном случае вкладку) имя, чтобы обнаружить специальное окно с помощью JavaScript:
if(window.name==4711) {...}
Используйте сеанс с параметром GET, а не с файлом cookie.
Используйте случайный поддомен с обычными файлами cookie, которые работают на этом поддомене.
Используйте обычный файл cookie, который ограничен «виртуальным» каталогом, который на самом деле не существует с использованием mod_rewrite. Идея, основанная на этом комментарии.
http://example.com/app/bigmoney/
, и у вас есть область, найденная в http://example.com/app/wonderland/
, если бы сеансы не использовали один и тот же метод кэширования пользователя, назначенного пользователю, я мог бы получить доступ ваш район, как вы. Другими словами, эти две области достаточно различны, поэтому им потребуется модель SSO для совместного использования и обеспечения идентификации пользователей.
- person Jared Farrish; 10.06.2012
Используйте $_SESSION
или $_COOKIE
для хранения сгенерированного ключа, который создается, когда пользователь входит в систему и обновляет вашу базу данных, чтобы, когда пользователь меняет страницу, вы получали доступ к их информации на основе этого сгенерированного ключа. Также вам может понадобиться создать простой function
, который проверяет ключ, а затем использовать другую функцию для вашей страницы, если это похоже на строку меню или окно входа в систему, оберните его внутри if statement
, например
if(checkUser($_COOKIE['MYSID'])){
// User is logged in so show whatever
} else {
// Login box here
}
используйте свойство window.name
или установите cookie для каждого пользователя по времени открытия вкладки браузера.
ваше приложение не проверяет, вошел ли пользователь в систему в данный момент или нет, поэтому, что вам нужно сделать в первую очередь, когда пользователь вводит учетные данные и входит в систему, установите переменную сеанса
$_SESSION['logged_in'] = "true";
затем вам нужно внести некоторые изменения в свою индексную страницу, как показано ниже в начале страницы.
<?
if($_SESSION['logged_in']=='true'){
header('location:USERS_SPECIFIC_PAGE_AFTER_LOGIN.EXT')
}
else{
header('location:login_page.ext');
}
?>
:)
- person Jared Farrish   schedule 10.06.2012logged in
вы подразумеваете, что вы действительно вошли в систему (например, прошли проверку подлинности)? Илиlogged in
как просто просмотр страницы? Можете ли вы объяснить немного больше? Это действительно запутанный вопрос. - person Rocket Hazmat   schedule 10.06.2012http://example.com/rocketsapp
, а мое приложение вhttp://awesome.example.com/jaredsapp
, файлы cookie/сеансы теоретически могут идентифицировать пользователя, который может получить доступ к обоим, если сеанс перекрывает флаг или проверку входа в систему, а файл cookie сеанса установлен на поддомен. а не расширение пути. Возможно... И явно недостаток. - person Jared Farrish   schedule 10.06.2012