Есть ли риск, что XSS поместит неантифицированный пользовательский ввод в текстовый ввод? - PullRequest
3 голосов
/ 18 января 2012

Я понимаю, что полезно очищать ввод данных пользователем, когда вы отображаете его на своем сайте, используя функцию наподобие htmlentities () в php. Но будет ли что-то подобное представлять риск XSS?

<input type="text" value="<?=user input drawn from the database?>" />

Было бы лучше очистить входные данные, как это?

<input type="text" value="<?=htmlentities(user input drawn from the database)?>" />

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

Ответы [ 3 ]

3 голосов
/ 18 января 2012

Я мог бы ввести такой текст,

escape!" /><script>alert("I escaped, because you didn't escape!");</script><img src="

, который даст вам следующий вывод: (отформатирован для удобства чтения)

<input type="text" value="escape!" />
<script>
    alert("I escaped, because you didn't escape!");
</script>
<img src="" />

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

2 голосов
/ 18 января 2012

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

Вы должны использовать htmlentities($str, ENT_QUOTES); для преобразования кавычек.

http://php.net/manual/en/function.htmlentities.php

1 голос
/ 18 января 2012
But would something like this present an XSS risk?

Да, что-то подобное представляет риск XSS , если данные еще не были продезинфицированы перед вставкой в ​​базу данных.

Would it be better to sanitize the input like this?

Да, тривиально очистить каждый пользовательский ввод перед его отображением на веб-странице. Также взгляните на htmlspecialchars ()

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