Использует ли htmlspecialchars () для очистки ввода / вывода HTML, для базы данных MySQL плохой дизайн? [Дубликат]
Возможный дубликат:
Каковы лучшие функции очистки ввода PHP?
Использует ли htmlspecialchars () для очистки ввода / вывода HTML, для базы данных MySQL плохой дизайн?
Если вы вместо этого просто не позволите этим "опасно» признаки, потому что это все еще будет показывать b-теги, i-теги и другие? И как это сделать?
Я спрашиваю, потому что это говорит в викиhttp://en.wikipedia.org/wiki/HTML_sanitization»
Санация HTML может использоваться для защиты от межсайтовых сценариев и атак с использованием SQL-инъекций путем санации любого HTML-кода, предоставленного пользователем ».
Таким образом, помимо использования подготовленных инструкций 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();