Как удалить все встроенные скрипты или html инъекцию при вводе текста, используя JavaScript или Jquery - PullRequest
2 голосов
/ 09 марта 2020

Я знаю, что этот тип вопросов мог задаваться много раз, но я уверен, что этот вопрос отличается от всех остальных. У меня есть элемент управления Input TextArea на стороне сервера, я пытаюсь удалить все встроенные сценарии или html внедрение. Я смог избавиться от тегов Script, выполнив это -

$(document).ready(function () {
            $('#btnHTML').click(function () {
                var textarea = document.getElementById("txtar1");
                var stringOfHtml = textarea.value;
                var wrappedString = '<div>' + stringOfHtml + '</div>';
                var noScript = wrappedString.replace(/script/g, "THISISNOTASCRIPTREALLY");
                var html = $(noScript);
                html.find('THISISNOTASCRIPTREALLY').remove();
                var tmp = document.createElement("DIV");
                tmp.id = "tmp";
                tmp.innerHTML = html.html().replace(/THISISNOTASCRIPTREALLY/g, 'script');
                document.body.appendChild(tmp);
                alert(html.html().replace(/THISISNOTASCRIPTREALLY/g, 'script'));
            });
<textarea id="txtar1" style="width:200px;height:100px"></textarea><br/>
<input type="button" id="btnHTML" value="Remove HTML" />

Но моя цель не решена, я пытаюсь ограничить или удалить все типы встроенных сценариев. Немного примеров -

<div>
<table border="2">
<tr>
<td><b>ABCD</b></td>
<td onclick="javascript:alert('Hello')">
EFGH</td>
</tr>
</table>
</div>

<div>
<table border="2">
<tr>
<td><b>Test</b></td>
<td alert('Hello')>
Success</td>
</tr>
</table>
</div>

<META HTTP-EQUIV="refresh" CONTENT="1;url=http://www.test.com">
<BR SIZE="&{alert('Injected')}"> 
<DIV STYLE="background-image: url(javascript:alert('Injected'))">

Любая помощь или предложения будут очень очень полезны.

1 Ответ

1 голос
/ 09 марта 2020

Вместо использования встроенных JavaScript <script> ... source ... </script> использование внешних JavaScript файлов и их импорт с помощью <script src="..."> помогает смягчить атаки и сделать ваш сайт безопасным. Способ сделать это в современных браузерах - установить свойство «Content-Security-Policy» (CSP) либо через метаатрибут, либо через заголовки.

Вы можете использовать это учебное пособие для получить больше знаний об этом.

...