Как предотвратить Спуфинг HTTP?

Мы создали базу данных управляемый веб-сайт с помощью PHP с cookie набора и теперь должны предотвратить спуфинг HTTP, какие-либо идеи о том, как сделать это? мы - новички с этим так, любая справка была бы greatful

5
задан Jermain 21 February 2010 в 23:39
поделиться

5 ответов

Вы не можете «подделать» HTTP-запросы. Вы отправляете запрос на сервер, и сервер отвечает соответствующим образом.

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

Не храните конфиденциальную информацию в своих файлах cookie. Они небезопасны и легко читаются и изменяются клиентом.

Вместо этого используйте сеансы PHP. Полное объяснение того, как работают сеансы и как обеспечить их безопасность, можно прочитать в одном из моих предыдущих ответов .

По сути, защита сеансов осуществляется по двум направлениям:

  • Предотвращение фиксации сеанса
    Повторно генерировать новый session_id каждые X запросов, чтобы сократить время, которое злоумышленник должен украсть. идентификатор.

  • Уникальная идентификация клиента
    Используйте IP-адрес и / или User-Agent, чтобы однозначно идентифицировать клиента и сравнивать это значение при каждой загрузке страницы со значениями, хранящимися в сеансе. На самом деле это единственные два варианта, позволяющие однозначно идентифицировать клиента.

Даже с учетом этого, ни одно решение не является надежным, и как только ваш session_id скомпрометирован, с вами почти все кончено.

Опять же, для более подробного объяснения см. мой предыдущий ответ .

6
ответ дан 13 December 2019 в 22:06
поделиться

Подмена чего? HTTP - это просто протокол для передачи данных, он не может быть подделан сам по себе.

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

ОБНОВЛЕНО:

Учитывая, что вас беспокоят именно файлы cookie, я расскажу немного подробнее. При хранении файлов cookie следует учитывать два основных момента.

  1. Не сохранять фактические данные
  2. Проверять по базе данных

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

Еще немного о передовой практике: http://jaspan.com/improved_persistent_login_cookie_best_practice

2
ответ дан 13 December 2019 в 22:06
поделиться

Если вы хотите предотвратить человек в середине перехвата, вы можете захотеть использовать HTTPS , который создает безопасный канал в сети, при условии, что используются соответствующие наборы шифров и что сертификат сервера проверен и надежен .

Примечание: Первоначальный вопрос был неоднозначным. Теперь ясно, что речь идет о подделке файлов cookie.

2
ответ дан 13 December 2019 в 22:06
поделиться

Спуфинг? Единственная реальная проблема со скомпрометированной идентификацией - это кража файлов 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-адрес.

0
ответ дан 13 December 2019 в 22:06
поделиться

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

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

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

DC

0
ответ дан 13 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

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