サイトで CKEditor を使用して、ユーザーがコメントを投稿できるようにしています。CKEditor には、コメントを作成するための多くのボタンがあります。ユーザーが自分のコメントを太字でイタリックにした場合
This is comment
そしてCKEditorは次のhtmlを出力します
<i><strong>This is comment</strong></i>
ここで、この html を mysql データベースに保存し、htmlspecialchars() でラップせずにそのまま Web ページに出力すると、ページにコメントが太字と斜体で表示されます。
しかし一方で、コメントを htmlspecialchars() でラップして Web ページに表示すると、次のように表示されます。
<i><strong>This is comment</strong></i>
しかし、私はこのように表示したくありません。ユーザーの書式設定が必要です。しかし、htmlspecialchars() でラップしないと危険であり、XSS 攻撃やその他のセキュリティ リスクを引き起こす可能性があります。
どうすれば両方の目的を達成できますか (1). ユーザーフォーマットを保持します (2)。HTML コンテンツも保護する