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

PHP Apa charset default untuk pdo mysql?

Opsi character_set_client adalah apa yang digunakan MySQL untuk kumpulan karakter kueri dan data yang dikirim klien.

Standarnya adalah utf8 di MySQL 5.5, 5.6, dan 5.7, dan utf8mb4 di 8.0.

Itu juga dapat diubah secara global di file opsi my.cnf Anda, atau per sesi dengan SETEL NAMA pernyataan.

Sebaiknya atur opsi secara eksplisit saat Anda terhubung, jadi Anda tidak perlu menganggap nilai defaultnya.

Kembali komentar Anda:

Saya khawatir Anda membingungkan dua kasus injeksi SQL yang berbeda. Ada risiko saat menggunakan lima set karakter tertentu, tetapi tidak terkait dengan injeksi SQL orde kedua.

Risiko set karakter disebabkan oleh beberapa set karakter multi-byte. Biasanya menyisipkan garis miring terbalik untuk menghindari karakter kutipan literal. Tetapi dalam beberapa set karakter, byte garis miring terbalik digabungkan ke dalam byte sebelumnya, membentuk karakter multi-byte. Itu membuat kutipan tidak bisa dihindari.

Injeksi SQL orde kedua benar-benar berbeda. Itu dapat terjadi dengan set karakter apa pun. Ini adalah saat penyerang menambahkan data ke database Anda melalui cara yang sah, seperti mengisi formulir. Memasukkan data ditangani tanpa kesalahan. Tetapi nilai yang mereka masukkan berisi sintaks yang dirancang untuk mengeksploitasi beberapa kueri SQL selanjutnya.

Itu bergantung pada pengembang yang percaya bahwa data yang telah disimpan dengan aman ke database mereka entah bagaimana "aman" untuk digunakan tanpa parameterisasi yang tepat.

Contoh injeksi SQL orde kedua yang hanya tidak disengaja dan bukan berbahaya dapat berupa seseorang memiliki nama belakang "O'Reilly", dan nama tersebut dibaca oleh kode dan digunakan dalam kueri berikutnya.

$name = $db->query("SELECT last_name FROM people WHERE id = 123")->fetchColumn();
$sql = "SELECT * FROM accounts WHERE account_owner_last_name = '$name'";

Jika nama berisi apostrof literal, itu akan mengacaukan kueri kedua dalam contoh itu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks apa yang harus saya gunakan saat menggunakan JOIN pada PRIMARY KEY

  2. Kesalahan MySQL:Plugin otentikasi 'caching_sha2_password' tidak dapat dimuat

  3. MYSQL - Pilih hanya jika baris di LEFT JOIN tidak ada

  4. php 5.x 7.x, ssl pdo error:Peer certificate CN=`someName' tidak sesuai dengan yang diharapkan CN='someIP'

  5. KESALAHAN:SQLSTATE[HY000] [2002] Tidak ada koneksi yang dapat dibuat karena mesin target secara aktif menolaknya