sql >> Databasteknik >  >> RDS >> Mysql

Desinficerar/rymmer jag på rätt sätt?

Av någon anledning behöver vi också undkomma ett snedstreck a> också.
Så den rätta koden skulle vara, tror jag

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

För utdata, använd

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

Här behövs inte snedstreck.

magiska citat kommer inte att skada din säkerhet om du inte använder dem.
teckenuppsättning är farlig i händelse av extremt sällsynta kodningar men bara om de är felaktigt inställda. om mysql(i)_set_charset eller DSN (vid PDO) användes för ändamålet - du är säker igen.

När det gäller PDO, en taggwiki borde räcka till förrätt tror jag




  1. PostgreSQL Autoincrement

  2. Hur visar jag de senaste frågorna som kördes på MySQL?

  3. Infoga nya kolumner i mitten av en tabell?

  4. Hur man skapar historik ELLER granskar vyer från Change Data Capture-tabeller (CDC) i SQL Server - SQL Server Tutorial