Достаточно ли htmlspecialchars для низкоуровневого XSS в моем случае?

Я добавил функциональность в свою панель администратора, чтобы она сохраняла URL-адрес, к которому вы пытались получить доступ, прежде чем он попросил вас войти в систему. Итак, если вы идете в:

/admin/foo/bar?baz

Он перенаправит вас на:

/admin/auth/login

После входа в систему до добавления моей функции вы всегда ходили на /admin/user/profile. Прямо сейчас я сохраняю /admin/foo/bar?baz в переменной сеанса $_SESSION['from'].

В логине <form> скрытое значение принимает значение сессии:

<input type="hidden" name="from" value="<?php echo htmlspecialchars($_SESSION['from'];)?>">

Затем, после отправки формы происходит перенаправление:

header('Location: ' . $_POST['from'] );

Я видел другие вопросы, касающиеся XSS и htmlspecialchars, и знаю, что это не исправит все возможные попытки XSS, но будет ли это успешно работать против попыток XSS «низкого уровня»?


person meder omuraliev    schedule 03.03.2011    source источник


Ответы (1)


Хотя здесь нет атаки XSS, если вы используете более старую версию PHP, вы откроете для себя внедрение заголовка HTTP, что в некоторых случаях может быть хуже.

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

person Charles    schedule 14.03.2011