php - это безопасно с XSS - PullRequest
       10

php - это безопасно с XSS

0 голосов
/ 05 сентября 2010

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

login process:
$hashed = md5($username.$pwd.IP);
setcookie('userstate', $username.':'.$hashed);

restore user state:
$vars = split(':', $_COOKIE['userstate']);
pseudo: get user with username in $vars[0]
$hashed = md5($username.$pwd.IP);
if($hashed == $vars[1]) return true;
else return false;

Безопасен ли этот способ при атаке XSS?

Ответы [ 2 ]

5 голосов
/ 05 сентября 2010

Атака XSS возможна только при выводе контента на клиент. Поскольку это не так, это невозможно.

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

0 голосов
/ 05 сентября 2010

Вставленный вами фрагмент кода НЕ БЕЗОПАСНЫЙ . Предполагая, что злоумышленник получает cookie, можно определить пароль пользователя. Это плохо - потому что пользователи часто используют пароли на разных сайтах.

Как восстановить пароль? Словарные атаки. Имя пользователя и IP-адрес тривиальны для выяснения. Злоумышленнику просто нужно использовать словарь паролей, сгенерировать хеш, который вы делаете, и затем сравнить его с хешем в куки.

Отсутствует в вашей реализации секретный ключ на стороне сервера, который неизвестен злоумышленнику. Смотрите эту страницу, чтобы узнать, как Spring Security генерирует cookie - вам следует сделать что-то подобное.

...