1

私のサイトのユーザーは、ニュース項目を投稿できます。しかし、今のところ、HTML に関する限り、それはすべて名誉制度です。

function postNewsItem($subject, $body, $userid){
  $time = time();
  $subject = mysql_real_escape_string($subject);
  $body = mysql_real_escape_string($body);
  $q = "INSERT INTO news (subject, body, userid) VALUES ('$subject', '$body', '$userid')";
  $result = mysql_query($q, $this->connection);
  return 1;
}

ユーザーが画像にリンクしたり、テーブルを作成したり、単語を太字にしたりできるようにしたいのですが、悪意のあるスクリプトなどにリンクできるようにしたくありません。ユーザー入力から HTML をエスケープする方法があることは知っていますが、特定のタグを許可しながらそれを行う方法はありますか?

4

2 に答える 2

6

HTML PUrifierを使用します。基本的に許可タグのホワイトリストを作成し、それ以外のものを除外できます。

于 2009-09-09T02:04:10.803 に答える
6

strip_tags を使用して、特定のタグを許可することができます

www.php.net/strip_tags

<?php
$allow = '<table><thead><th><tr><td><tbody><tfoot><img><a><b><i><u>';

$body = mysql_real_escape_string(strip_tags($body, $allow));
?>

もちろん、いくつかの属性をサニタイズする必要があります

于 2009-09-09T02:13:27.033 に答える