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

Masukan pengguna, bersihkan dan sanitasi sebelum mengirim ke db

Pertama, jaga agar teks tetap logis dan bersih:

trim() -- OK
htmlentities($comment, ENT_NOQUOTES)  -- No; do later
mysqli_real_escape_string()  -- Yes; required by API
nl2br()  -- No; see below

Logika di balik rekomendasi tersebut:Data dalam database seharusnya hanya data biasa. Bukan entitas html, bukan tag-br. Namun, Anda harus melakukan escape_string untuk meneruskan data dari PHP ke MySQL; pelarian tidak akan disimpan.

Tapi... Itu hanya langkah tengah. Dari mana data itu berasal? Versi PHP yang lebih lama mencoba untuk "melindungi" Anda dengan menambahkan pelarian dan sampah lain yang berfungsi baik untuk HTML, tetapi mengacaukan MySQL. Matikan pelarian ajaib seperti itu, dan dapatkan data mentahnya.

Ke mana datanya pergi? Mungkin HTML? Setelah SELECTing data keluar dari tabel, lalu pertama lakukan htmlentities() dan (opsional) nl2br();

Catatan, jika Anda mengharapkan untuk mempertahankan hal-hal seperti <I> (untuk miring), Anda meminta masalah -- masalah besar. Yang perlu dilakukan peretas hanyalah <script> ... untuk menyuntikkan segala macam keburukan ke halaman web Anda dan mungkin seluruh sistem Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. aplikasi web spring-boot kehilangan kemampuan untuk terhubung ke MySQL / RDS setelah beberapa saat

  2. Alat Google Chart dengan PHP &MySQl

  3. Bagaimana cara membagi output dari mysqldump menjadi file yang lebih kecil?

  4. Mysql + php dengan karakter khusus seperti '(Apostrof) dan (Tanda kutip)

  5. Sekuel:Menggunakan Banyak Basis Data