Cara mengkonfigurasi sistem CentOS untuk melindungi aplikasi web daripada serangan suntikan SQL
Pengenalan:
Dengan perkembangan Internet, penggunaan aplikasi web menjadi semakin meluas, tetapi ia juga membawa isu keselamatan aplikasi web. Antaranya, serangan suntikan SQL adalah kaedah serangan yang paling biasa. Untuk melindungi aplikasi web kami, kami perlu melakukan satu siri konfigurasi dan pengoptimuman pada sistem CentOS. Artikel ini akan menerangkan cara mengkonfigurasi sistem CentOS untuk melindungi aplikasi web daripada serangan suntikan SQL.
Pasang dan Konfigurasi Pelayan Web
Mula-mula, kami perlu memasang dan mengkonfigurasi pelayan web yang boleh dipercayai untuk mengehoskan aplikasi web kami. Di sini, kami memilih pelayan Apache yang biasa digunakan sebagai contoh. Berikut ialah contoh arahan untuk memasang pelayan Apache pada CentOS:
sudo yum install httpd
Selepas melengkapkan pemasangan, kami perlu melakukan beberapa konfigurasi keselamatan pada Apache. Pertama, kami akan melumpuhkan penyemakan imbas direktori pada pelayan untuk menghalang penyerang daripada mendapatkan maklumat sensitif pada pelayan. Berikut ialah contoh melumpuhkan penyemakan imbas direktori dengan mengubah suai fail httpd.conf:
sudo vi /etc/httpd/conf/httpd.conf
Cari baris ini dalam fail:
Options Indexes FollowSymLinks
Tukar kepada:
Options -Indexes FollowSymLinks
Simpan dan keluar dari fail. Kemudian, kami akan memulakan semula pelayan Apache untuk menjadikannya berkesan:
sudo systemctl restart httpd
Mengkonfigurasi Pelayan Pangkalan Data
Aplikasi web selalunya perlu menggunakan pangkalan data untuk menyimpan dan mengurus data. Di sini, kami memilih MySQL sebagai pelayan pangkalan data untuk menyimpan data kami. Berikut ialah contoh arahan untuk memasang pelayan MySQL pada CentOS:
sudo yum install mysql-server
Selepas melengkapkan pemasangan, kami perlu membuat beberapa konfigurasi keselamatan untuk MySQL. Mula-mula, kami akan melumpuhkan akses jauh dan hanya membenarkan akses tempatan kepada pangkalan data. Berikut ialah contoh melumpuhkan capaian jauh dengan mengubah suai fail my.cnf:
sudo vi /etc/my.cnf
Cari baris berikut:
bind-address = 127.0.0.1
Tambah simbol ulasan "#" sebelum baris untuk menjadikannya baris ulasan:
#bind-address = 127.0.0.1
Simpan dan keluar fail tersebut. Kami kemudiannya akan memulakan semula pelayan MySQL untuk konfigurasi berkuat kuasa:
sudo systemctl restart mysqld
Gunakan pernyataan pertanyaan berparameter: Apabila melaksanakan pertanyaan SQL, kita harus menggunakan pernyataan pertanyaan berparameter dan bukannya rentetan gabungan. Ini menghalang penyerang daripada menyuntik kod SQL tambahan menggunakan input berniat jahat. Berikut ialah contoh menggunakan pertanyaan berparameter:
import pymysql conn = pymysql.connect(host='localhost', user='username', password='password', database='dbname') cursor = conn.cursor() sql = "SELECT * FROM users WHERE username = %s" username = 'admin' cursor.execute(sql, (username,)) result = cursor.fetchall() for row in result: print(row) conn.close()
Tapis dan sahkan input: Apabila menerima input pengguna, kami harus menapis dan mengesahkan input untuk memastikan bahawa input mematuhi format dan jenis yang diharapkan. Berikut ialah contoh penapisan dan pengesahan input:
username = input("请输入用户名:") # 过滤非法字符 for char in username: if char not in ('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_'): username = username.replace(char, '') # 验证用户名长度 if len(username) > 20: username = username[:20] print("处理后的用户名为:", username)
Kesimpulan:
Dengan konfigurasi dan pengoptimuman kod di atas, kami boleh melindungi aplikasi web kami dengan berkesan daripada serangan suntikan SQL. Sudah tentu, ini hanya sebahagian daripada langkah perlindungan Kami juga perlu memberi perhatian kepada isu keselamatan lain dan mengemas kini serta menyelenggara sistem tepat pada masanya. Dengan menggabungkan pelbagai langkah keselamatan, kami boleh melindungi keselamatan aplikasi web dan data kami dengan lebih berkesan.
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi sistem CentOS untuk melindungi aplikasi web daripada serangan suntikan SQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!