En realidad, desactive las comillas mágicas.
En PHP, donde es, filtros adecuados de uso:
$inUser = $_POST['user'];
$outUser = filter_var($inUser, FILTER_SANITIZE_STRING);
Filtros Franja de formularios HTML etiquetas y escapar de diversos personajes.
Además, puede dejar escapar su base de datos por usted:
$inUser = $_POST['user'];
$outUser = mysqli_real_escape_string($conn, $inUser);
Esta escapa caracteres especiales específicas de MySQL como comillas dobles, comillas simples, etc.
Por último, se debe utilizar consultas parametrizadas :
$sql = "SELECT user FROM table WHERE user = ?";
$stmt = $pdo->prepare($sql);
$params = array($outUser);
$stmt->execute($params);
consultas con parámetros agregar automáticamente las comillas en cadenas, etc., y tienen más restricciones que hacen que las inyecciones SQL aún más di difícil
Uso los tres, en ese orden.
¿Hay alguna razón por la que se opone al uso de mysql_real_escape_string? –
No sé dónde lo conseguiste, pero el sprintf no escapa nada. –
ACtualmente esto es parte de la asignación para encontrar la inyección sql. Repetí el escenario en mi local e intenté todas las inyecciones sql normales $ a = sprintf ("seleccionar usuario de la tabla donde el usuario = '% s'", $ _POST ["usuario"]); echo $ a Sigo obteniendo las comillas escapadas con \. ¿Hay algo en el medio que podría estar escapando de las cotizaciones? – user294924