Mysql
 sql >> Database >  >> RDS >> Mysql

Igienizzo/scappo correttamente?

Per qualche motivo abbiamo bisogno anche di evitare una barra rovesciata anche.
Quindi, il codice corretto sarebbe, credo

if(isset($_GET['q'])){
  $_GET['q'] = trim($_GET['q']);
  if(strlen($_GET['q']) >= 2){
    $q = $_GET['q'];
    $q = '%'.addCslashes($q, '\%_').'%';
    // now we have the value ready either for escaping or binding
    $q = mysql_real_escape_string($q);
    $sql = "SELECT name, age, address FROM book WHERE name LIKE '$q'";
    //or 
    $sql = "SELECT name, age, address FROM book WHERE name LIKE ?";
    $stm = $pdo->prepare($sql);
    $stm->execute(array($q));
    $data = $stm->fetchAll();
  }
}

Per l'output, utilizzare

echo htmlspecialchars($_GET['q']);

le stripslash non sono necessarie qui.

virgolette magiche non danneggeranno la tua sicurezza se non le utilizzerai.
charset è pericoloso in caso di codifiche estremamente rare, ma solo se impostato in modo improprio. se mysql(i)_set_charset o DSN (in caso di PDO) sono stati utilizzati allo scopo:sei di nuovo al sicuro.

Per quanto riguarda il DOP, un tag wiki dovrebbe essere sufficiente per cominciare, credo