サイト訪問者が印刷用にページに注釈を付ける手段を提供する javascript のクライアントのみのソリューションと、XSS または同様の攻撃ベクトルの観点からの悪用可能性について議論してきました。
理由: 表示するデータを選択するプロセスが長くなる可能性があります。実行した手順を文書化するために、サーバーに転送することを想定していない任意のテキストをユーザーが書き込むことができるテキストエリア( formを囲むことなく) が提供されます。最初のテキストは静的です。たとえば、このフィールドの使用方法に関する短い一連の指示などです。そのため、攻撃者がこのテキストエリアに対して悪意のある JavaScript を含む URL を構築する (明らかな) 可能性はありません。
ユーザーがこのテキストを変更すると、ページ (およびメモ) が印刷されます。ユーザーがページを離れると、メモは失われます。
「散文エラーが多すぎる」場合のコード例を次に示します。
<span id="descriptionHeader">Description of the result</span>
<div id="description">
<textarea id="descriptionEditor" rows="15" cols="80" type="text"
ondblclick="replaceDescription()">
Edit this text to add a detailed description to this page.
Double click to this editing area to finish editing.
If you want to edit the text again, do a double click to the
description header.
You may use html (e.g. <br>) for formatting.
</textarea>
</div>
<script type="text/javascript">
var header = getElem("descriptionHeader");
var editor = getElem("descriptionEditor");
var description = getElem("description");
function empty() {
}
function editDescription() {
header.ondblclick = empty;
editor.value = description.innerHTML;
description.innerHTML = "";
description.appendChild(editor);
}
function replaceDescription() {
header.ondblclick = editDescription;
description.removeChild(editor);
description.innerHTML = editor.value;
}
</script>
また:
- テキストがサーバー側で処理されることはなく、静的な説明 (「使用方法」) のみがサーバーからクライアントに送信され、クライアントからサーバーに送信されることはありません。
- ユーザーは、好きなように JavaScript 要素を追加して、自分自身を悪用する可能性があります。
- これがセキュリティ上のリスクをもたらすシナリオは考えられませんが、吐き気は残ります...
注: 問題は、このソリューションのエレガンスや、より快適なインライン編集を行うライブラリに関するものではなく、純粋に考えられるセキュリティ リスクに関するものです (もしあれば)。