Мы создали базу данных управляемый веб-сайт с помощью PHP с cookie набора и теперь должны предотвратить спуфинг HTTP, какие-либо идеи о том, как сделать это? мы - новички с этим так, любая справка была бы greatful
Вы не можете «подделать» HTTP-запросы. Вы отправляете запрос на сервер, и сервер отвечает соответствующим образом.
Я думаю, что вы пытаетесь предотвратить подделку файлов cookie. Учитывая, что файлы cookie хранятся на стороне клиента, вы ничего не можете сделать, чтобы помешать пользователям изменять свое содержимое.
Не храните конфиденциальную информацию в своих файлах cookie. Они небезопасны и легко читаются и изменяются клиентом.
Вместо этого используйте сеансы PHP. Полное объяснение того, как работают сеансы и как обеспечить их безопасность, можно прочитать в одном из моих предыдущих ответов .
По сути, защита сеансов осуществляется по двум направлениям:
Предотвращение фиксации сеанса
Повторно генерировать новый session_id
каждые X запросов, чтобы сократить время, которое злоумышленник должен украсть. идентификатор.
Уникальная идентификация клиента
Используйте IP-адрес и / или User-Agent, чтобы однозначно идентифицировать клиента и сравнивать это значение при каждой загрузке страницы со значениями, хранящимися в сеансе. На самом деле это единственные два варианта, позволяющие однозначно идентифицировать клиента.
Даже с учетом этого, ни одно решение не является надежным, и как только ваш session_id
скомпрометирован, с вами почти все кончено.
Опять же, для более подробного объяснения см. мой предыдущий ответ .
Подмена чего? HTTP - это просто протокол для передачи данных, он не может быть подделан сам по себе.
Надо не предотвращать подделку информации, а просто никогда не доверять клиенту. Что касается файлов cookie, сохраните хешированное псевдослучайное значение, которое вы сравниваете с базой данных, прежде чем принимать данные cookie.
ОБНОВЛЕНО:
Учитывая, что вас беспокоят именно файлы cookie, я расскажу немного подробнее. При хранении файлов cookie следует учитывать два основных момента.
Допустим, вы хотите иметь сайт с пользователями, на котором вы храните личные данные. В файле cookie вы можете сохранить имя пользователя или идентификатор пользователя и хешированный токен безопасности, который также сохраняется в базе данных, когда пользователь входит в систему. Токен безопасности не будет узнаваемым и будет изменяться при каждом входе в систему. Любая личная информация остается в базе данных, а не в файлах cookie.
Еще немного о передовой практике: http://jaspan.com/improved_persistent_login_cookie_best_practice
Если вы хотите предотвратить человек в середине перехвата, вы можете захотеть использовать HTTPS , который создает безопасный канал в сети, при условии, что используются соответствующие наборы шифров и что сертификат сервера проверен и надежен .
Примечание: Первоначальный вопрос был неоднозначным. Теперь ясно, что речь идет о подделке файлов cookie.
Спуфинг? Единственная реальная проблема со скомпрометированной идентификацией - это кража файлов cookie.
Что вы можете сделать, так это проверять каждый раз, когда cookie отправляется через заголовки HTTP, по IP-адресу, на который он был отправлен. Например:
<?php
session_start();
$rec = db_query('select count(*), ip from session where session_id = "' . session_id() . '"');
list ($last_count, $last_ip) = $rec[0];
if (! $last_count) {
# add it into the database
db_query('insert into session (session_id, ip) values (' .
'"' . session_id() . '", ' .
'"' . $_SERVER['REMOTE_ADDR'] . '"' .
')');
} else {
if ($last_ip != $_SERVER['REMOTE_ADDR']) {
print "user has stolen a cookie!";
}
}
?>
Но это может негативно повлиять на людей, чей интернет-провайдер выдает им динамический IP-адрес.
Я знаю, что на этот вопрос уже отвечали, но я хочу добавить еще одну технику, которую я использую, она особенно полезна для входа в администрацию. Используйте сеансы, как обычно, но добавьте к ним защиту каталога.
Таким образом, если сессия будет перехвачена, угонщик также должен быть в состоянии получить логин каталога.
Я использую эту технику для администрирования форумов. Некоторые форумы легко взламываются, а это снижает вероятность того, что хакер проникнет внутрь и создаст серьезные проблемы.
DC