私は最後の手段としてここに向っています。私はgoogleを洗ったし、解決に苦労している。私はエリアにhtmlと入力できるtextarea要素を持つフォームを持っていて、プレビューモードをアクティブにしていると入力するとHTMLマークアップが表示されます。 StackOverflowが新しい投稿の下にプレビューを表示する方法とあまり違いはありません。HTML /スクリプトインジェクションに対して安全なライブHTMLプレビューテキストエリアを作成する方法
ただし、私の機能に脆弱性があることが最近判明しました。私が行うようになったすべてのようなものタイプです:あなたは、フォームやリロードを保存した場合、
</textarea>
<script>alert("Hello World!");</script>
<textarea style="display: none;">
だけでなく、ライブテキストエリア内から、この実行を行うに異なるページのデータは、このコードはまだ上のテキストエリア内で実行されると前記異なるページを前記ユーザに知らせるステップと、それらにはすべてテキストが表示されます(明らかに警告がない場合)。
この投稿が見つかりました。 Live preview of textarea input with javascript html JSFiddleの例でスクリプトタグを書くことができなかったことに気付いたので、私のJSを受け入れられた答えにリファクタリングしようとしました。JSFiddleはその動作をブロックしていますが、JSファイル。
これらの数行は、私はHTMLマークアップをレンダリング生きるために使用するものである:
$(".main").on("keyup", "#actualTextArea", function() {
$('#previewTextArea').html($('#actualTextArea').val());
});
$(".main").on("keydown", "#actualTextArea", function() {
$('#previewTextArea').html($('#actualTextArea').val());
});
は、それが安全ですので、これをリファクタリングすることができます方法はありますか?現時点で私の唯一のアイデアはライブプレビューを拭き取り、オン/オフを切り替えてエンコードすることですが、これはクールな機能だと思っています。トグルの代わりにライブを維持したいと考えています。それを "ライブエンコード"する方法や、特定のタグや何かをエスケープする方法はありますか?
これは私が上で共有した脆弱性を保護しません...(スクリプトタグが実行されないようにしようとしています。 –