2010-02-04 2 views
1

У меня есть страница, на которую я ограничиваю доступ, проверяя, установлена ​​ли определенная переменная сеанса. Но опять же, пользователи могут очистить эту переменную сеанса и теперь получить доступ к этой странице.Как мне обрабатывать сеансы очистки пользователей, когда я использую сеансы для ограничения доступа к страницам?

Что можно сделать, чтобы предотвратить это? Я использую php

+3

Вопрос не имеет смысла: * Если переменная сеанса очищена, она не установлена, и поэтому пользователь не должен иметь доступ. * Как и где хранятся сеансы? –

+1

Другие ответы верны: у вас есть ситуация назад. Вы не должны ограничиваться на основе переменной сеанса. Вы должны ограничиться отсутствием переменной сеанса. –

+0

С другой стороны, существует классическая ситуация, когда это происходит: три неудачные попытки входа, например. Там у вас нет контроля без использования чего-то другого, такого как IP-адрес. Вы не можете заставить пользователей сохранять файлы cookie. –

ответ

6

... вы устанавливаете переменную сеанса для людей, которым являются, разрешен доступ к странице, вместо наоборот?

3

Ну, как правило, пользователи не могут очистить эту переменную самостоятельно (если только ваш код не делает это для них), но только удаляет сам cookie сеанса, что уничтожит весь сеанс (и теперь вы можете ограничить доступ).

4

Запретить все, разрешить некоторые.

Предположим, что люди без сеанса не допускаются.

0

В PHP заголовок на TOP различных страниц, которые вы хотите ограничить доступ, вы бы поставить что-то вроде следующего:

<?php 
    session_start(); // start the session 
    if (!isset($_SESSION['allowaccess']) || ($_SESSION['allowaccess'] == FALSE)) { 
     // if the access token is not present or the token is false, then... 
     echo "Access denied." 
     exit(); 
    } 
?> 

<h1>Super Seekrit Data</h1> 

<p>yada yada yada</p> 

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

Смежные вопросы