私のWebサイトでは、登録ユーザーはスタイル付きのテキストコンテンツを作成でき(私は nicEdit を使用しています)、それらをmysqlデータベースに保存できます。それらの内容をmysql dbのテキスト型フィールドに保存します。次に、ユーザーが HTML コンテンツを取得して、Web サイトのユーザー ページに表示できるようにしました。私の質問は、ユーザーの html コンテンツを mysql データベースに送信する前に、mysql インジェクション回避技術を使用するべきかということです。また、ユーザーが Web 上の HTML コンテンツを取得するとき、HTML コンテンツを Web サイトに表示する前に何をすべきですか。
1 に答える
0
の特殊文字をエスケープするunsafe_variable
か、パラメーター化されたクエリを使用して MySQL インジェクションを防ぎます。パラメーター化されたクエリはより良い方法と考えられていますが、変数内の文字をエスケープすることで必要な変更が少なくなります。
HTML をユーザーに出力するには、適切な HTML パーサーを備えた HTML サニタイズ ライブラリを使用する必要があります。たとえば、HTML purifierを参照してください。
htmlspecialchars
HTML 内のすべてのタグを引用符で囲むため、ユーザーにはプレーン テキストのみが表示されます。を使用できます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 に答える