У меня есть сценарий чата, и я пытаюсь отфильтровать поле ввода, прежде чем нажимать кнопку «Отправить» или «Отправить». Это мое поле ввода:


<input required type="text" name="content"  maxlength="300" id="content" placeholder="Write Your Message.."  autocomplete="off">

Представить

 <button type="submit" class="sound-btn" id="submit_button">
        <i class="fa fa-paper-plane"></i>
    </button>

Когда я пытаюсь отправить теги вроде

<img src="avatar/user1_13128662_tumb.jpg">
<div id="test">
demo text
</div>

к сожалению, работает

Что мне нужно сделать ... удалить все теги attr из ввода или предотвратить запись тегов html внутри ввода, потому что все эти данные сохранены в базе данных и очень опасны и позволяют вводить xss тоже что-то вроде этого

<b>
<div>
</div>
<img
<a
<li
<ul
and all the HTML tags just keep links and numbers and normal text

Я думаю, что все теги HTML, которые мне нужны, чтобы сохранить http, https и mailto :, а обычный текст и числа просто фильтруют нежелательные символы перед отправкой с помощью javascript или jquery .. спасибо

1
Ahmed El Sheikh 30 Окт 2019 в 02:55

2 ответа

Лучший ответ

Вы можете применить простое регулярное выражение к событию onchange вашего ввода:

document.getElementById('content').addEventListener('change', (e)=> {
    let tValue = e.target.value.replace(/<[^>]+>/gim, '');
    e.target.value = tValue;
});
2
E-telier 3 Дек 2021 в 11:41

Используйте регулярное выражение перед его отправкой в ​​базу данных, идентифицируйте теги с помощью «<».

-1
Madhu Murrishetti 30 Окт 2019 в 04:09
Используйте что-то вроде этого. s / <[a-zA-Z \ /] [^>] *> // g
 – 
Madhu Murrishetti
30 Окт 2019 в 06:07