重複の可能性:
最高の PHP 入力サニタイズ関数は何ですか?
htmlspecialchars() を入力/出力の HTML サニタイズに使用していますか? MySQL データベースの設計が悪いのですか?
代わりに、これらの「危険な」兆候を許可しないでください。これは、b-tag、i-tag などを引き続き表示するためですか? そして、どうやってそうするのですか?
ウィキhttp://en.wikipedia.org/wiki/HTML_sanitizationに書いてあるので聞いています
「HTML サニタイズは、ユーザーが送信した HTML コードをサニタイズすることで、クロスサイト スクリプティングや SQL インジェクション攻撃から保護するために使用できます。」
そのため、PDO プリペアド ステートメントを使用する以外に、SQL インジェクションを防ぐために、すべての入力と出力にこの htmlspecialchars を使用したいと考えています。しかし、多分私は何か他のものを使うべきですか?
たとえば、これは挿入ステートメントを実行する良い方法ですか?:
$type= htmlspecialchars($_POST['animaltype']);
$name= htmlspecialchars($_POST['animalname']);
$age= htmlspecialchars($_POST['animalage']);
$descr= htmlspecialchars($_POST['animaldescription']);
$foto= htmlspecialchars($_POST['animalfotourl']);
$date=htmlspecialchars($_POST['animalhomelessdate']);
$sqlquery = "INSERT INTO animals_tbl(animaltype, animalname, animalage, animaldescription, animalfotourl, animalhomelesssince) VALUES (':type',':name',':age',':descr', ':foto', ':date')";
$stmt = $conn->prepare($sqlquery);
$stmt->bindParam(':type',$type, PDO::PARAM_STR);
$stmt->bindParam(':name',$name, PDO::PARAM_STR);
$stmt->bindParam(':age',$age, PDO::PARAM_INT);
$stmt->bindParam(':descr',$descr, PDO::PARAM_STR);
$stmt->bindParam(':foto',$foto, PDO::PARAM_STR);
$stmt->bindParam(':date',$date, PDO::PARAM_STR);
$stmt->execute();