1

私の CakePHP ブログでは、ここ StackOverflow に挿入できるのと同様の HTML をユーザーが追加できるようにしたいと考えています。つまり、改行、リンク、太字、リストなどです。ユーザーが送信する投稿で悪意のあるコードに対する保護を維持しながら、最も実用的です。

  • 実際には、投稿を TEXT データベース フィールドに保存し、そこに HTML を許可するのが最も便利ですか?
  • 投稿で一部の HTML コードを許可する場合、悪意のない基本的な HTML コードのみを許可し、残りを消去するにはどうすればよいですか?
  • そのために CakePHP Sanitize クラスを使用する必要がありますか?
  • FormHelper はすべての HTML ユーザー入力を消去しますか?
  • ユーザーが適切なコードを生成できるようにするには、JavaScript を使用する必要があると思いますか?
4

2 に答える 2

0

許可するHTMLタグのホワイトリストを使用します。最初にHTMLですべてをエンコードし、次に許可する特定のタグをデコードします。

基本的な例:

function encodeForOutput(s) {
  s = s.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/&/g, '&amp;');
  // allow <b>
  s = s.replace(/&lt;b&gt;(.*?)&lt;/b&gt;/$, '$1');
  return s;
}
于 2012-10-05T11:14:34.973 に答える
0

開発者向けでない場合、TinyMCE のような WYSIWYG アドオンを検討したことはありますか?

http://www.tinymce.com/

http://bakery.cakephp.org/articles/galitul/2012/04/11/helper_tinymce_for_cakephp_2

セキュリティに関しては、ホワイトリスト登録が最も安全な方法です。それらをバイパスするために使用できるすべてのトリックを処理する方法がないため、ブラックリストへの登録は避ける必要があります (たとえば、16 進数を介してテキストを渡すなど)。

TinyMCE では、ホワイトリストを指定できます: http://www.tinymce.com/wiki.php/Configuration:valid_elements

于 2012-10-06T01:07:05.797 に答える