1

Pagedown を使用してユーザーが生成したコンテンツを含むサイトを構築しています (ただし、任意の形式の Markdown が機能します)。元のマークダウンとサニタイズされた HTML の両方をデータベースに保存して、ユーザーが戻って元の入力を編集できるようにしたいと考えています。 . ただし、XSS に対して脆弱になることなく元のマークダウンを安全に再表示する方法はわかりません。たとえば、ユーザーが入力として次のように入力したとします。

</textarea>
<script>MaliciousCode();</script>

Pagedown はそれをサニタイズして HTML に変換するため、最初に入力したときは問題ありません。この HTML はサーバーに送信されます (クライアント側のサニタイズだけでは信頼できないため、ホワイトリストに登録されていない HTML タグが再び削除されます)。しかし、元のマークダウンが編集のためにクライアントに送り返されると、次のようになります。

<textarea class="wmd-input" id="wmd-input" name="wmd_area" >
</textarea>
<script>MaliciousCode();</script>
</textarea>

そして、XSS に対して脆弱になりました。保存されたマークダウンの編集を許可するサイトがこれを安全にする方法、またはこれが問題にならないより良い方法を教えてもらえますか? ホワイトリストに登録されていないため、テキストエリアタグが削除されることはわかっていますが、HTMLに変換する前に元のマークダウンからタグを削除する必要があります。

4

0 に答える 0