Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy prawidłowo odkażam/uciekam?

Z jakiegoś powodu potrzebujemy także uciec odwrotnego ukośnika też.
Właściwy kod byłby więc, jak sądzę

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

Aby uzyskać dane wyjściowe, użyj

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

paski ukośne nie są tutaj potrzebne.

magiczne cytaty nie zaszkodzą Twojemu bezpieczeństwu, jeśli ich nie użyjesz.
charset jest niebezpieczny w przypadku niektórych niezwykle rzadkich kodowań, ale tylko wtedy, gdy jest niewłaściwie ustawiony. jeśli mysql(i)_set_charset lub DSN (w przypadku PDO) zostały użyte do tego celu - znów jesteś bezpieczny.

Jeśli chodzi o PDO, tag wiki powinien wystarczyć na początek, jak sądzę




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmodyfikuj kolumnę Vs zmień kolumnę

  2. Jak ponownie zsynchronizować bazę danych Mysql, jeśli Master i Slave mają inną bazę danych w przypadku replikacji Mysql?

  3. Jak połączyć GROUP BY, ORDER BY i HAVING

  4. Czy MySQL external_key_checks wpływa na całą bazę danych?

  5. MySQL:ustawienie trybu sql_mode na stałe