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

Deff 07.08.2012 01:31

svs_js,
Зачем ?
Цитата:

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

Чем Вы выводите значение инпута ?
Когда должен выполниться этот код ?
Есть еще куча вопросов - потому, что так не стоит делать, посколь можно и элегантней, безопасней и проще

oneguy 07.08.2012 01:32

Тогда нужно в любом тексте, приходящем от пользователей, который вписывается в HTML код, экранировать чувствительные символы на сервере.
Например, в PHP для этого есть функция htmlspecialchars.

oneguy 07.08.2012 01:33

Цитата:

Сообщение от Deff
svs_js,
Зачем ?

Если я правильно понял, автор хочет защититься от атаки XSS.

svs_js 07.08.2012 08:41

oneguy,

совершенно верно. а вот функции ПХП нет возможности использовать, сайт не на пхп :)

bes 07.08.2012 12:08

Ну и сделайте перед отправкой проверку на присутствие слова script в value


<input type="text" value="<script>alert(1)</script>" 
  onclick=" (value.indexOf('script') != -1) ? alert('есть script') : alert('нет script')" 
/>

oneguy 07.08.2012 19:49

Цитата:

Сообщение от svs_js
совершенно верно. а вот функции ПХП нет возможности использовать, сайт не на пхп

Если не на ПХП, то эту функцию несложно написать самому. Нужно заменить в строке символы "&", "<", ">", "\"" на соответственно "&amp;", "&lt;", "&gt;", "&quot;".

oneguy 07.08.2012 19:51

Цитата:

Сообщение от bes
Ну и сделайте перед отправкой проверку на присутствие слова script в value

Этого недостаточно, так как скрипт можно вставлять не только с помощью элемента <script>, а ещё с помощью атрибута on...
Да если ещё проверку делать только на клиенте, то это не помешает хакерам обойти эту защиту.

bes 07.08.2012 19:54

Цитата:

Сообщение от oneguy
Этого недостаточно, так как скрипт можно вставлять не только с помощью элемента <script>, а ещё с помощью атрибута on..

а также href = "javascript:


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