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

php:cara mencegah injeksi SQL dari $_POST

Sepertinya bisa berjalan, jadi jika gagal tolong jelaskan caranya.

Namun, ada satu kesalahan yang langsung terlihat di dalamnya:Di baris

$sQuery = "SELECT COUNT(*) FROM (SELECT LINE_NAME, MODEL_ONLY, VER_ONLY, PROD_NO,
                                         LOT_SIZE, START_SERIAL, SERIAL_NO_LOW, SERIAL_NO_UP, PROD_DATE 
                                  FROM DOC_TO'.$sWhere.$sOrder.$sLimit.')";

Anda memulai string dengan tanda kutip ganda dan Anda mencoba menginterupsi string dengan tanda kutip tunggal, yang tidak akan berfungsi. Jadi kodenya harus:

$sQuery = "SELECT COUNT(*) FROM (SELECT LINE_NAME, MODEL_ONLY, VER_ONLY, PROD_NO,
                                         LOT_SIZE, START_SERIAL, SERIAL_NO_LOW, SERIAL_NO_UP, PROD_DATE 
                                  FROM DOC_TO".$sWhere.$sOrder.$sLimit.")";

Selain itu, tergantung pada lingkungan Anda, ada kelemahan keamanan penting dalam kode Anda:Misalnya di baris

$sLimit = " FIRST ".$_POST['iDisplayStart']." SKIP ".$_POST['iDisplayLength'];

Anda menggunakan $_POST untuk memasukkannya langsung ke dalam kueri SQL, yang membuka apa yang disebut lubang keamanan injeksi SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan MySQL dalam satu lingkaran vs menggunakan gabungan SQL

  2. Kode Kesalahan MySQL:1411. Nilai datetime salah:'' untuk fungsi str_to_date

  3. Menu rekursi hierarkis dengan PHP/MySQL

  4. Tentukan apakah kombinasi record banyak-ke-banyak ada

  5. Database:Membuat Log tindakan, bagaimana menangani berbagai referensi?