Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah saya membersihkan/melarikan diri dengan benar?

Untuk beberapa alasan, kami juga perlu menghindari garis miring terbalik juga.
Jadi, saya percaya kode yang tepat adalah

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

Untuk outputnya, gunakan

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

stripslash tidak diperlukan di sini.

kutipan ajaib tidak akan membahayakan keamanan Anda jika Anda tidak menggunakannya.
charset berbahaya jika ada beberapa penyandian yang sangat langka tetapi hanya jika tidak disetel dengan benar. jika mysql(i)_set_charset atau DSN (dalam kasus PDO) digunakan untuk tujuan tersebut - Anda aman kembali.

Untuk PDO, tag wiki seharusnya cukup untuk pemula, saya percaya




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bandingkan kesamaan antara dua set hasil

  2. Konversi string/varchar ke tanggal antara tabel MySQL

  3. Benar menggunakan kelas di kelas lain di php?

  4. Salin baris tetapi dengan id baru

  5. Konfigurasi indeks MySQL