Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Экранирование Input (https://javascript.ru/forum/dom-window/30508-ehkranirovanie-input.html)

svs_js 07.08.2012 01:08

Экранирование Input
 
Всем привет,

такая проблема :)
есть у меня Инпут
<input type="text" value="<script>alert(1)</script>" />

При некоторых условиях выполнится скрипт внутри Value
Пробовал заменять спецсимволы. Но они в инпуте так же и выводятся в некрасивом виде. Как можно вот обезопасить форму от такого воздействия.

Deff 07.08.2012 01:10

<input type="text" value="&lt;script&gt;alert(1)&lt;/script&gt;" />

oneguy 07.08.2012 01:11

< и > экранруются как &lt; и &gt;

svs_js 07.08.2012 01:13

да, я так и делал :)
но тогда ж и выводится внутрь инпута lt и gt )))) что не очень красиво

svs_js 07.08.2012 01:17

я при срабатывании аккордеона делал что-то похожее на это

$(this).value = $(this).value.replace('<', '&lt;').replace('>', '&gt;');

Deff 07.08.2012 01:19

svs_js,
а нафига такая конструкция ? - раз вы считываете - теги можно добавить и после считывания (или вообще запустить функцией

oneguy 07.08.2012 01:22

Если вы записываете свойство value через DOM, то никакие символы не нужно экранировать - текст выводится такой же, как и в строке значения свойства value (без замен &lt; на < и т.д.)

svs_js 07.08.2012 01:23

Теги <script> ? а их пользователь может ввести в инпут и сохранить на сервер, а потом снова вывести в эту форму.. в иторе VALUE будет иметь такой вид :)
Отправлять на сервер, заменяя специсимволы, у меня нет возможности :) нет события, к какому привязаться.

А вот при срабатывании аккордеона можно :)

Deff 07.08.2012 01:26

svs_js,
Чот невнятно как то задача...

Что - зачем откуда и зачем вообще конструкция нужна

svs_js 07.08.2012 01:29

Есть форма :) в форме инпут.
заполняем форму и в один из инпутов пишем <script>alert(1)</script>
вот прям тег и пишем :)
вместо алерта может быть совсем другой код ЖС

и вот смысл в том, что когда мы выводим значение инпута, код ЖС, какой записан в качестве значения поля, выполняется :)

и нам нужно обезопасить себя от таких умных пользователей :)


Часовой пояс GMT +3, время: 04:40.