0

ユーザーが悪意のあるコード(html / js)を投稿できないように、htmlエンティティを使用するカスタムフォーラムがあります。とにかく、私はデータベースから投稿をプルしているので、特定のhtml要素<、>、&などを表示するためにstr_replaceを使用します。これを行うことに害はありますか?副作用/htmlがレンダリングされる原因になりますか?

4

3 に答える 3

0

strip_tags、ドキュメントに記載されているように、インラインJavaScriptを削除したり、サニタイズしたりすることはないため、お勧めできません。一般的な解決策は、bbcode代わりに多くのライブラリが存在するものを使用することです。または、独自のライブラリを作成してから、を使用preg_replaceして独自のマークアップを安全に置き換えることができます。

簡単なサンプルを次に示します。

$safe_output = htmlspecialchars($output);
$find = array("'\[b\](.*?)\[/b\]'is");
$replace = array("<strong>\\1</strong>");
$result = preg_replace($find, $replace, nl2br($safe_output));
于 2012-07-15T15:48:56.613 に答える
0
  1. ユーザーがデータを投稿する
  2. データはmysql用にエスケープされ、DBに書き込まれます
  3. ユーザーがデータを要求する
  4. データは表示用にエンコードされます(htmlentitiesまたはhtmlspecialchars、または許可された文字のサブセットを積極的に使用します。これは、を使用して実行できますがstr_replace、より優れたユーティリティがあります)。
于 2012-07-15T15:49:44.883 に答える
0

strip_tagsを使用して、html / js/phpを回避します。このように必要なタグを許可するためのいくつかのオプションがあります。

strip_tags($text, '<p><a>');
于 2012-07-15T15:43:57.880 に答える