: es la prevención de XSS (cross-site scripting) tan simple usando strip_tags
en cualquier campo de entrada guardados en funcionamiento htmlspecialchars
en cualquier mostrado salida y la prevención de ... Inyección de SQL mediante el uso de instrucciones preparadas por PHP PDO?es la prevención de XSS y SQL Injection tan fácil como lo hace esta pregunta
He aquí un ejemplo:
// INPUT: Input a persons favorite color and save to database
// this should prevent SQL injection (by using prepared statement)
// and help prevent XSS (by using strip_tags)
$sql = 'INSERT INTO TABLE favorite (person_name, color) VALUES (?,?)';
$sth = $conn->prepare($sql);
$sth->execute(array(strip_tags($_POST['person_name']), strip_tags($_POST['color'])));
// OUTPUT: Output a persons favorite color from the database
// this should prevent XSS (by using htmlspecialchars) when displaying
$sql = 'SELECT color FROM favorite WHERE person_name = ?';
$sth = $conn->prepare($sql);
$sth->execute(array(strip_tags($_POST['person_name'])));
$sth->setFetchMode(PDO::FETCH_BOTH);
while($color = $sth->fetch()){
echo htmlspecialchars($color, ENT_QUOTES, 'UTF-8');
}
No te atrapé del todo - ¿vas a mysql_query() el valor $ save_to_database? Entonces todavía necesita llamar 'mysql_real_escape_string()' antes de enviar su consulta, de lo contrario no estará protegido de las inyecciones de SQL (que no es XSS, nuevamente) – naivists
@naivists: ¿Está seguro de eso? Él está usando declaraciones preparadas. – Erlend