Rumah > pangkalan data > tutorial mysql > Bagaimana untuk melaksanakan pemangkasan aksara panjang dalam MySQL

Bagaimana untuk melaksanakan pemangkasan aksara panjang dalam MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-06-03 11:37:12
ke hadapan
1742 orang telah melayarinya

Pemotongan aksara ultra-panjang MySQL, juga dikenali sebagai "SQL-Column-Truncation", telah dicadangkan oleh penyelidik keselamatan Stefan Esser pada Ogos 2008.

Terdapat pilihan sql_mode dalam tetapan dalam MySQL Apabila sql_mode ditetapkan kepada lalai, iaitu apabila pilihan STRICT_ALL_TABLES tidak dihidupkan (MySQLsql_mode lalai), MySQL hanya akan menggesa amaran apabila memasukkan. nilai yang terlalu panjang dan bukannya ralat, ini mungkin menyebabkan beberapa masalah pemotongan.

Buat jadual baharu untuk ujian Struktur jadual adalah seperti berikut (MySQL5.1):

CREATE TABLE USERS(
id int(11) NOT NULL, //长度为7
username varchar(7)NOT NULL,
password varchar(12)NOT NULL , 
)
Salin selepas log masuk

Masukkan pernyataan SQL berikut (inject prompt messages) masing-masing.

①Masukkan pernyataan SQL biasa.

mysql> insert into users(id,username,password)values(1,'admin','admin');//成功插入,无警告,无错误
 
Query OK,1 row affected(0.00 sec)
Salin selepas log masuk

②Masukkan pernyataan SQL yang salah Pada masa ini, terdapat tiga ruang di sebelah kanan "admin" dan panjangnya ialah 8, yang telah melebihi panjang asal yang ditetapkan.

mysql> insert into users(id,username,password)values(2,'admin       ','admin');
//成功插入,一个警告
Query OK,1 row affected,1 warning(0.00 sec)
Salin selepas log masuk

③Pernyataan SQL yang salah telah dimasukkan dan panjangnya telah melebihi panjang yang ditentukan asal.

mysql> insert into users(id,username,password) values(3,'admin    x','admin');
//成功插入,一个警告
Query OK,1 row affected,1 warning(0.00 sec)
Salin selepas log masuk

MySQL menggesa bahawa ketiga-tiga pernyataan telah dimasukkan ke dalam pangkalan data, tetapi dua pernyataan terakhir menghasilkan amaran. Anda boleh mengesahkan sama ada ia telah dimasukkan ke dalam pangkalan data dengan melaksanakan pernyataan SQL.

mysql> select username from users;
Salin selepas log masuk

Anda dapat melihat bahawa ketiga-tiga keping data telah dimasukkan ke dalam pangkalan data, tetapi nilai telah berubah Pada masa ini, panjang diperoleh melalui panjang dan panjang nilai dinilai.

mysql> select length(username)from users where id =1 ;
Salin selepas log masuk

Ia boleh didapati bahawa panjang data kedua dan ketiga ialah 7, iaitu panjang lajur yang ditentukan Ia boleh dilihat secara lalai, jika data melebihi panjang lalai lajur , MySQL akan Dipotong.

Tetapi bagaimana kita boleh menyerangnya seperti ini?

Hanya tanya pengguna yang nama penggunanya ialah 'admin'.

mysql> select username from users where username='admin';
Salin selepas log masuk

Hanya bertanya kepada pengguna yang bernama pentadbir, tetapi dua lagi pengguna pentadbir dengan panjang yang tidak konsisten turut disoal, yang akan menyebabkan beberapa masalah keselamatan Sebagai contoh, terdapat log masuk pentadbir yang dinilai seperti ini: Pernyataan itu adalah seperti berikut:

$sql = "select count(*) from users where username='admin' and password='*******;
Salin selepas log masuk

Walaupun pernyataan SQL tidak mempunyai kerentanan suntikan, penyerang masih boleh log masuk ke halaman pengurusan. Dengan mengandaikan bahawa nama pengguna log masuk pentadbir adalah pentadbir, maka penyerang hanya perlu mendaftarkan pengguna "admin" untuk memasuki halaman pengurusan backend dengan mudah WordPress yang terkenal telah diserang dengan cara ini.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pemangkasan aksara panjang dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan