Действительно ли безопасно сохранить пользовательский объект в cookie?

Тестирование 52! возможности, конечно, невозможны. Вместо этого попробуйте свою перестановку на меньших числах карт, как 3, 5, и 10. Тогда можно протестировать миллиарды перестановок и использовать гистограмму и хи-квадрат статистический тест, чтобы доказать, что каждая перестановка подходит "ровное" количество раз.

7
задан Gumbo 23 November 2009 в 14:50
поделиться

5 ответов

Вы не можете доверять какой-либо информации, хранящейся в файлах cookie, поскольку пользователь может манипулировать ею в любое время.

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

Время ожидания сеанса в конечном итоге истечет, хотя ... вынуждая пользователя снова войти в систему.

Изменить : Упс, я должен отметить, что сессиями действительно легко пользоваться. Просто сделайте следующее:

session_start(); // This MUST be at the very top of every page that accesses the session

// Store something in the session with the key 'something'
$_SESSION['something'] = "Hi, I'm a session!"; 

// Retrieve 'something' from the session
$myString = $_SESSION['something'];
17
ответ дан 6 December 2019 в 10:51
поделиться

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

0
ответ дан 6 December 2019 в 10:51
поделиться

Вы можете доверять информации в куки, если используете что-то вроде Hmac . Пользователи все еще могут видеть данные, но вы будете знать, если они подделали их (например, изменили свое имя пользователя на чужое в попытке увидеть данные другого пользователя). Если вы не хотите, чтобы они видели данные, вы также можете симметрично зашифровать отправляемые вами данные. Очевидно, что все это связано с накладными расходами на ЦП и накладными расходами на полосу пропускания, чем больше вы втискиваете туда материала, но вполне законно делать то, о чем вы просите.

0
ответ дан 6 December 2019 в 10:51
поделиться

Стандартное правило «никогда не доверять опубликованным данным» применимо и к файлам cookie. Я предлагаю сохранить только идентификатор пользователя, а также хэш идентификатора и некоторый секрет, известный только серверу.

1
ответ дан 6 December 2019 в 10:51
поделиться

В этом случае я бы сказал, сохранить идентификатор пользователя в файле cookie, и все. Затем при первой загрузке страницы вы загружаете все необходимое из базы данных и продолжаете использовать сеанс, пока пользователь остается на вашей странице.

Чтобы проверить, загружается ли страница в первый раз, я просто установил bool в сеансе, если он был загружен. Если bool не существует, ваш пользователь загружает его изначально.

Вероятно, есть более эффективные способы сделать это, но это работает красиво и легко. :)

0
ответ дан 6 December 2019 в 10:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: