ユーザーが画像を保存できるサイトがあります。私は 'mysql_real_escape_string' で mysql の挿入をサニタイズしますが、誰かが行って、画像の説明にコンテンツ リダイレクトを含むメタを入力したため、サイトが読み込まれるたびに (最新の画像も読み込まれます)、リダイレクトされます。
それを防ぐために、文字列またはSQLクエリをサニタイズするにはどうすればよいですか?
前もって感謝します!
ユーザーが画像を保存できるサイトがあります。私は 'mysql_real_escape_string' で mysql の挿入をサニタイズしますが、誰かが行って、画像の説明にコンテンツ リダイレクトを含むメタを入力したため、サイトが読み込まれるたびに (最新の画像も読み込まれます)、リダイレクトされます。
それを防ぐために、文字列またはSQLクエリをサニタイズするにはどうすればよいですか?
前もって感謝します!
この特定の例では、データを出力するときにhtmlentitiesを使用することで回避できた可能性があります。
<?php
$str = "A 'quote' is <b>bold</b>";
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str);
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str, ENT_QUOTES);
?>
キャッチは、保存しているもので使用されているほとんどすべてのHTMLを破壊することです。特定のタグを許可し、他のタグを禁止しようとすると、すぐに複雑になります。
mysql_real_escape_string
SQLインジェクションを防ぐためにのみ使用されます。
XSS を防ぐには、htmlspecialcharsまたはhtmlentitiesを使用して html コンテンツをサニタイズする必要があります。
htmlspecialchars();
データベースから何かを入力する前と、ユーザー入力をデータベースに送信する前に、毎回使用する必要があると思います。準備されたステートメント + htmlspecialchars();
[オプション]
ここにあなたができることがいくつかあります
strip_tags()
mysqli_*
の代わりに関数を使用mysql_
htmlentities()