HTMLマークアップで特定の文字列を識別する方法が必要です。文字列が何であるかは知っていますが、ドキュメント内の他の文字列のサブ文字列である可能性があります。それらを見つけるために、特別な区切り文字を出力します(現在は\032
)。ページの読み込み時に、HTMLを調べて文字列の場所を記録し、区切り文字を削除します。
残念ながら、ほとんどのブラウザは、すべてを見つけて削除できるまで、区切り文字を表示します。できればそれを避けたい。 HTMLコンテンツに保存される(コメントは機能しません)が、ユーザーには表示されない文字または文字列はありますか?また、文字列の横に表示される可能性が非常に低いものである必要があるため、
も機能しません。
編集:申し訳ありませんが、私は文字列が属性にあることを言及するのを忘れたので、どのようなタグも機能しません。
‌
-ゼロ幅の非ジョイナー( http://htmlhelp.org/reference/html40/entities/special.html を参照)
これが既にテキストに表示されている可能性がありますが、それを2倍にします(例:‌‌mytext‌‌
コメントに応じて編集:Firefox 3で動作します。エンティティのUnicode値を検索する必要があることに注意してください。
<html>
<body>
<div id="test">
This is a ‌test
</div>
<script type="application/javascript">
var myDiv = document.getElementById("test");
var content = myDiv.innerHTML;
var pos = content.indexOf("\u200C");
alert(pos);
</script>
</body>
</html>
<span>
要素に挿入できます。これはページ内のテキストでのみ機能します(属性などではありません)。
それ以外の場合は、タブ文字(\x09
)、垂直タブ(\x0b
)、キャリッジリターン( \x0d
)—横に改行なし、Windowsテキストエンコーディング、またはnullバイト(\x00
)のみ。
ブラウザに表示されない、挿入したい最も良いものは、<span id="delimiter" class="Delimiter"></span>
などの特別なIDを持つタグのペアです。これはコンテンツには表示されませんが、ドキュメントには表示されます。それらを削除する必要はありません。
左から右(LTR)マーク を使用できます。これは何らかのXSSテスト用ですか?もしそうなら、これは興味深いかもしれません: PHPの汚染サポート