Apakah kelemahan keselamatan biasa dalam Php 7 dan bagaimana untuk mengelakkannya? Kelemahan ini sering berpunca daripada amalan pengekodan yang tidak selamat dan bukannya kelemahan yang wujud dalam bahasa itu sendiri. Berikut adalah beberapa yang paling lazim:
- suntikan sql: Ini berlaku apabila input pengguna yang tidak dipercayai dimasukkan secara langsung ke dalam pertanyaan SQL tanpa sanitisasi yang betul. Penyerang boleh memanipulasi input ini untuk melaksanakan perintah SQL sewenang -wenangnya, berpotensi mendapatkan akses kepada data sensitif atau menguasai pelayan pangkalan data. Mitigasi: Sentiasa gunakan pertanyaan parameter atau pernyataan yang disediakan. Tidak pernah secara langsung menggabungkan input pengguna ke dalam pertanyaan SQL. Menggunakan ORM yang teguh (Mapper-Relational Mapper) yang sering mengendalikan parameterisasi secara automatik. Skrip ini boleh mencuri cookies, mengalihkan pengguna ke tapak pancingan data, atau membuang laman web.
Mitigasi: - Strictly Sanitize semua data yang dibekalkan pengguna sebelum memaparkannya di laman web. Gunakan fungsi pengekodan output yang sesuai dengan konteks (HTML, JavaScript, dan lain -lain). Melaksanakan Dasar Keselamatan Kandungan (CSP) untuk mengawal sumber-sumber penyemak imbas dibenarkan untuk memuatkan. Sebagai contoh, penyerang mungkin membuat pautan yang mengemukakan borang untuk memindahkan dana tanpa pengetahuan pengguna. Mitigasi: Gunakan token CSRF. Ini adalah nilai yang unik dan tidak dapat diramalkan yang dijana untuk setiap penyerahan bentuk. Pelayan mengesahkan bahawa token yang diserahkan sepadan dengan yang dihasilkan, menghalang permintaan yang tidak dibenarkan. Menggunakan atribut cookie untuk mengurangkan risiko CSRF. Ini boleh dicapai melalui pelbagai kaedah, seperti mengeksploitasi kelemahan dalam sistem pengurusan sesi atau memintas ID sesi semasa penghantaran. Mitigasi:
Gunakan ID sesi yang selamat dan tidak dapat diramalkan. Melaksanakan HTTPS untuk menyulitkan komunikasi antara klien dan pelayan. ID sesi yang kerap menjana semula. Data sesi kedai dengan selamat, idealnya dalam pangkalan data dan bukannya bergantung pada fail. Ini sering berlaku apabila aplikasi secara dinamik termasuk fail berdasarkan input pengguna tanpa pengesahan yang betul. - Mitigasi: Elakkan secara dinamik termasuk fail berdasarkan input pengguna. Gunakan pendekatan putih, menentukan dengan tepat fail mana yang dibenarkan dimasukkan. Melaksanakan pengesahan laluan fail yang ketat.
- Pelaksanaan Kod Jauh (RCE): Kerentanan RCE membolehkan penyerang melaksanakan kod sewenang -wenang pada pelayan. Ini sering disebabkan oleh kelemahan lain, seperti suntikan SQL atau kemasukan fail. Mitigasi: menangani kelemahan asas yang boleh membawa kepada RCE. Secara kerap mengemas kini PHP dan semua perpustakaan bergantung kepada kelemahan keselamatan yang diketahui. Melaksanakan prinsip -prinsip keistimewaan yang paling rendah, hanya memberikan kebenaran yang diperlukan untuk bahagian -bahagian yang berlainan dari aplikasi. Ini termasuk:
: Fungsi ini melaksanakan rentetan sebagai kod PHP. Menggunakan dengan input pengguna yang tidak berasas sangat berbahaya dan harus dielakkan di semua kos, kerana ia boleh membawa kepada pelaksanaan kod sewenang -wenangnya. Gunakan alternatif yang lebih selamat apabila mungkin. Sama seperti
, menggunakan fungsi -fungsi ini dengan input pengguna yang tidak berasas boleh membenarkan penyerang melaksanakan perintah sewenang -wenang pada pelayan. Jika anda benar -benar mesti menggunakannya, dengan tegas mengesahkan dan membersihkan semua input. Pertimbangkan untuk menggunakan pendekatan alternatif yang tidak memerlukan pelaksanaan perintah shell. Sentiasa gunakan pendekatan putih dan mengesahkan laluan dengan ketat. Menggunakannya dengan input pengguna yang tidak berasas boleh membawa kepada pelbagai kelemahan, termasuk suntikan penggantian dan suntikan kod yang berpotensi. Lebih suka menggunakan
dan
secara langsung dan membersihkan data dengan sewajarnya. Sentiasa mengesahkan dan membersihkan data sebelum deserialization. Pertimbangkan untuk menggunakan kaedah siri alternatif jika boleh. Ini melibatkan dua langkah yang berbeza:
1. Pengesahan: Pemeriksaan ini jika data input mematuhi format dan kekangan yang diharapkan. Ini harus berlaku sebelum sanitisasi. Pengesahan boleh melibatkan:
- jenis pemeriksaan jenis data: Pastikan input adalah jenis yang betul (mis., Integer, String, Boolean). Mengesahkan format input (mis., Alamat e -mel, nombor telefon). Ini biasanya lebih disukai daripada penyenaraian hitam. SANITISASI: Ini membersihkan data input untuk menghapuskan atau meneutralkan unsur -unsur yang berpotensi berbahaya. Sanitisasi mestilah konteks khusus:
- sanitisasi html:
mengeluarkan atau melarikan diri tag HTML untuk mencegah serangan XSS. Gunakan perpustakaan seperti pembersih html untuk sanitisasi html yang teguh. SANITISASI: Keluarkan atau melarikan diri dari watak -watak khas yang boleh digunakan dalam ekspresi biasa. Pertimbangkan menggunakan penapis input dan perpustakaan pengesahan untuk menyelaraskan proses. Ikuti amalan terbaik ini: - Gunakan pernyataan yang disediakan atau pertanyaan parameter: Ini adalah cara yang paling berkesan untuk mencegah suntikan SQL. Ia memisahkan kod SQL dari data, menghalang penyerang daripada menyuntik kod berniat jahat. Gunakan pembolehubah persekitaran atau fail konfigurasi yang disimpan di luar webroot. Elakkan memberikan keizinan yang berlebihan. Data sensitif:
menyulitkan data sensitif yang disimpan dalam pangkalan data, seperti kata laluan dan maklumat kad kredit. pelayan dengan menggunakan https. Ikuti cadangan keselamatan khususnya. Sentiasa mengutamakan amalan terbaik keselamatan sepanjang kitaran hayat pembangunan dan penempatan aplikasi anda. -
Atas ialah kandungan terperinci Apakah kelemahan keselamatan biasa dalam Php 7 dan bagaimana untuk mengelakkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!