2015-10-22 4 views
0

У меня возникла очень странная проблема с моим кодом HTML. Люди начали размещать HTML-контент, такой как HTML-формы, поля ввода, флажки через мой Textarea, и это испортило контент моего сайта. Мне нужно отключить возможность публикации содержимого HTML через мои текстовые поля и разрешать только текст. Например: даже если они набирают тег HTML <input>, который будет доставлен как текст, а не HTML.Отключить возможность размещения HTML-контента в Textarea

Тем не менее, мне нужно включить возможность размещения контента с тегами <a>, так как я разрешаю отправлять сообщения и т. Д. Им также должна быть предоставлена ​​возможность отправлять теги <img>, которые имеют только определенный класс (класс name is 'emoji-class'), так как я даю возможность опубликовать emojis.

Условия:

  • Разрешить текст, который может также содержать <a href> теги
  • Разрешить текст, который может содержать <img>, которые содержат класс с именем «смайликов класса». Любой другой <img> тег не будет принят в качестве содержимого HTML с помощью текстовой области

Я получаю содержимое с помощью Javascript:

https://jsfiddle.net/wv4s511e/11/

Как я могу добавить эти условия для моего текстового поля/Javascript чтобы каждый другой контент HTML принимался в виде текстового содержимого, но вышеупомянутые HTML-теги были получены как HTML-контент?

EDIT:

я кодирования на ASP.NET

ответ

1

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

Таким образом, DOM не распознает теги HTML и не испортит ваш код, но он по-прежнему отображается на самой веб-странице.

Дополнительная информация: http://www.w3schools.com/asp/met_htmlencode.asp

1

Я предполагаю, что вы используете

document.getElementById("id").innerHTML 

Вы никогда не должны использовать его. Потому что он открывает уязвимость безопасности для атак XSS (кросс-скриптовый скриптинг). Скорее всего, вы можете использовать

document.getElementById("id").innerText 

Но всякий раз, когда вы получаете эти тексты через PHP (или подобного рода на стороне сервера сценариев), вы всегда должны дезинфицировать данные и свести к минимуму риск SQL Injection.

Посетите эти ссылки, чтобы получить факты ясно

http://resources.infosecinstitute.com/how-to-prevent-cross-site-scripting-attacks/

https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

http://www.w3schools.com/php/php_filter.asp

PS- если вставить тексты (данные) с помощью document.getElementById("id").innertext затем вставляет данные в виде текста а не HTML. Так вы должны это делать. Чтобы пользователи могли писать в курсивом или полужирным шрифтом, вы можете предоставить им некоторые параметры над текстовой областью. Способ сделать это - отправить несколько значений переменных на серверный скрипт, который содержит несколько номеров, которые, в свою очередь, позволяют вам узнать, какие части строки выделены курсивом/полужирным шрифтом.

Если я пишу H ello Мир, конечно же, персонажи в диапазоне от 1-го до 4-го места выделены курсивом. Поэтому вам просто нужно знать эти цифры.

Смежные вопросы