2011-07-24 18 views
1

私は、ユーザーが彼の名前を挿入するPHPスクリプトを持っています。 ユーザーは、<img src="...のようなものでも、好きなものを挿入できます。文字列からHTMLタグを削除するにはどうすればよいですか?

画像を表示しないように入力内容を保存したいと思います。 私はそれが存在することを知っていますが、私はそれを見つけるために検索するキーワードを知らない。

+0

[PHPサイトでxss攻撃を回避するためのベストプラクティスは何ですか](http://stackoverflow.com/questions/71328/what-are-the-best-practices-for-avoiding-xss- PHPでの攻撃) – Quentin

+0

今後これを探している人のためにあなたのタイトルを編集しましたが、**タグを完全に削除するか**単に**エスケープ**するかを指定することができます彼らはプレーンテキストとして表示されます。 –

答えて

1

最も簡単な解決策は、名前が示唆するかを正確に行いPHP関数strip_tags()、で、文字列からHTMLタグを取り除きます。

もう1つの選択肢は、入力をエスケープして、<>などのHTML文字を表示可能なテキストに変換することです。これにより、HTMLコードが表示されます。

これは、機能htmlentities()で行います。

実際にはHTMLを意図せずに、入力にHTML文字が含まれることがあります。 &文字はHTMLの予約文字ですが、通常のテキストでも検索できます。 >および<は通常のテキストではあまり一般的ではありませんが、それでも可能です。実際のHTMLコードでなくても、ページに表示されると問題が発生することがあります。

これに対する解決策は、htmlentities()を使用して文字列をエスケープすることです。最初にstriptags()を実行することもできますが、htmlentities()も実行して、文字列が正しく表示されるようにする必要があります。

希望に役立ちます。

1

htmlspecialchars()は、タグがHTMLとして解釈されないようにテキストをエンコードします。

関連する問題