1

私のWebサイトでは、登録ユーザーはスタイル付きのテキストコンテンツを作成でき(私は nicEdit を使用しています)、それらをmysqlデータベースに保存できます。それらの内容をmysql dbのテキスト型フィールドに保存します。次に、ユーザーが HTML コンテンツを取得して、Web サイトのユーザー ページに表示できるようにしました。私の質問は、ユーザーの html コンテンツを mysql データベースに送信する前に、mysql インジェクション回避技術を使用するべきかということです。また、ユーザーが Web 上の HTML コンテンツを取得するとき、HTML コンテンツを Web サイトに表示する前に何をすべきですか。

4

1 に答える 1

0

の特殊文字をエスケープするunsafe_variableか、パラメーター化されたクエリを使用して MySQL インジェクションを防ぎます。パラメーター化されたクエリはより良い方法と考えられていますが、変数内の文字をエスケープすることで必要な変更が少なくなります。

HTML をユーザーに出力するには、適切な HTML パーサーを備えた HTML サニタイズ ライブラリを使用する必要があります。たとえば、HTML purifierを参照してください。

htmlspecialcharsHTML 内のすべてのタグを引用符で囲むため、ユーザーにはプレーン テキストのみが表示されます。を使用できますstrip_tagsが、strip_tags実際には HTML を検証しないため、お勧めしません。

PDO の使用法:

$unsafe_variable = $_POST["user-input"];
$sth = $mysqli->prepare("INSERT INTO table (column) VALUES (?)");
$sth->bind_param("s", $unsafe_variable);
$sth->execute();
$sth->close();

mysqli の使用法:

$unsafe_variable = $_POST["user-input"]
$safe_variable = mysql_real_escape_string($unsafe_variable);
mysql_query("INSERT INTO table (column) VALUES ('" . $safe_variable . "')");
于 2013-04-22T08:52:11.650 に答える