Cita:
Iniciado por PHPeros Ciertamente si no sabes PHP mejor que no lo utilizes, esque tampoco tiene mas explicación...
Entonces no des soluciones por las cuales no vas a explicar
mysql_real_escape_string según el manual, escapa los caracteres que pueden generar conflictos a la hora de realizar una operación mysql_real_escape_string
Me explico
Código PHP:
Ver original<?php
// No hemos comprobado $_POST['password'], ¡podría ser cualquier cosa que el usuario quisiera! Por ejemplo:
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";
// Consultar la base de datos para comprobar si existe algún usuario que coincida
$consulta = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
// Esto significa que la consulta enviada a MySQL sería:
echo $consulta;
//que retorna SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''
?>
Si ves el ejemplo anterior ya que no se escapan los caracteres correctamente un atacante puede divinamente sacarte toda la informacion de la base de datos solo porque los caracteres que provienen de la consulta no están escapados
Si se usa mysql_real_escape_string la consulta quedaria SELECT * FROM users WHERE user='aidan' AND password='\' OR \'\'=\'' evitando así que los atacantes puedan aprovecharse y sacarte informacion de la base de datos por medio de datos externos
PD: No uses las funciones mysql_* ya que estan obsoletas y se eliminaran en un futuro, usa mysqli o PDO que te dan mucho mejores herramientas y la seguridad en la bd es mejor
Saludos