Saya mencoba mengganti injeksi skrip sebaris dengan mengganti tag dengan dan kemudian saya ingin menghapus seluruh tag bersama dengan teks di dalamnya. Saya berjuang untuk menghapus tag secara keseluruhan. Bantuan apa pun akan sangat berguna. Ini yang bisa saya capai-

$(".txtScript").live("blur", function () {
        stripScriptTags();
    });
function stripScriptTags() {
    var wrappedString = $(".txtScript").val();
    var noScript = wrappedString.replace(/script/g, "THISISNOTASCRIPTREALLY");
    var html = $(noScript);
    html.find('THISISNOTASCRIPTREALLY').remove();
}

Input yang saya lewati adalah-

<table>
<tr>
<td>Test</td>
<td><script type="Text/JavaScript">alert('hello')</script>Success</td>
</tr>
</table>

Keluaran yang diharapkan-

<table>
<tr>
<td>Test</td>
<td>Success</td>
</tr>
</table>
0
Omi 10 Maret 2020, 23:34

1 menjawab

Jawaban Terbaik

Anda tidak perlu .replace(/script/g) dengan jQuery. Tetapi jika Anda lebih suka RegExp, pertimbangkan untuk menggunakan flag i bersama dengan g untuk kasus yang tidak sensitif.

Juga, jQuery menambahkan beberapa tag tambahan, mis. <tbody> dan lebih lambat dibandingkan dengan RegExp. Saya tidak merekomendasikan cara ini.

hanya jQuery:

$('.txtScript').on('blur', stripScriptTags);

function stripScriptTags() {
  var wrappedString = $(this).val();
  var $html = $(wrappedString);

  $html.find('script').remove();

  $('#result').text($html[0] && $html[0].outerHTML || '');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<textarea cols="30" rows="10" class="txtScript"></textarea>  
<pre id="result"></pre>

Dengan RegExp:

$('.txtScript').on('blur', stripScriptTags);

function stripScriptTags() {
  const regex = /\<script(.*)\/script\>/gi;
  $('#result').text($(this).val().replace(regex, ''));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<textarea cols="30" rows="10" class="txtScript"></textarea>
<pre id="result"></pre>
1
artanik 10 Maret 2020, 21:23