sql >> Database >  >> RDS >> Mysql

Ontsmet/ontsnap ik op de juiste manier?

Om de een of andere reden moeten we ook ontsnappen aan een backslash ook.
Dus de juiste code zou zijn, geloof ik

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();
  }
}

Gebruik voor de uitvoer

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

stripswimpers zijn hier niet nodig.

magische aanhalingstekens zullen uw veiligheid niet schaden als u ze niet gebruikt.
charset is gevaarlijk in het geval van enkele uiterst zeldzame coderingen, maar alleen als ze onjuist zijn ingesteld. if mysql(i)_set_charset of DSN (in het geval van BOB) werden voor dit doel gebruikt - u bent weer veilig.

Wat betreft BOB, een tag-wiki zou genoeg moeten zijn om mee te beginnen, denk ik




  1. Schakel een partitie in SQL Server (T-SQL) in

  2. Hoe te controleren of de cursor records in orakel retourneert?

  3. Liquibase/PostgreSQL:hoe de tafelkast correct te bewaren?

  4. Reverse Engineering van een MySQL-database met MySQL Workbench