Rumah >pembangunan bahagian belakang >tutorial php >Penyelesaian keselamatan borang PHP: gunakan kaedah penyemakan direktori fail selamat

Penyelesaian keselamatan borang PHP: gunakan kaedah penyemakan direktori fail selamat

WBOY
WBOYasal
2023-06-24 11:51:071074semak imbas

Dengan perkembangan pesat Internet, kami telah terbiasa menghantar borang dan mengumpul maklumat melalui laman web. Walau bagaimanapun, maklumat yang terkandung dalam borang sering terdedah kepada serangan penggodam, jadi kami mesti mengambil beberapa langkah keselamatan untuk melindungi borang daripada serangan semasa membangunkan tapak web. Dalam artikel ini, kami akan membincangkan cara untuk melindungi borang PHP anda menggunakan kaedah pemeriksaan direktori fail selamat.

Isu keselamatan borang PHP

Dalam borang web biasa, pengguna boleh memasukkan pelbagai jenis data, seperti teks, nombor, tarikh, dsb. Data ini akan disimpan pada pelayan dan boleh diakses atau diubah oleh halaman lain. Jika dibiarkan tanpa perlindungan, penggodam boleh menyerang maklumat ini dalam pelbagai cara. Berikut ialah beberapa serangan biasa:

Penskripan silang tapak (XSS): Penyerang menyuntik kod hasad ke dalam borang untuk mendapatkan maklumat sensitif mangsa.

Serangan suntikan SQL: Penyerang mencuri, menukar atau memadam maklumat sensitif dalam pangkalan data dengan memasukkan kod SQL berniat jahat ke dalam borang.

Kerentanan muat naik fail: Penyerang boleh melaksanakan kod sewenang-wenangnya dengan memuat naik fail berniat jahat.

Oleh itu, pembangun mesti mengambil langkah untuk melindungi borang mereka dan menghalang penggodam daripada mengeksploitasi kelemahan ini untuk menyerang tapak web. Berikut menerangkan cara menggunakan kaedah pemeriksaan direktori fail selamat PHP untuk melindungi keselamatan borang.

Gunakan kaedah semakan laluan selamat PHP

Apabila menulis kod borang PHP, sebaiknya gunakan fungsi laluan terbina dalam PHP, seperti realpath() dan basename(). Berikut ialah beberapa fungsi dan pembolehubah yang anda mesti ketahui:

realpath(): Menghuraikan laluan relatif kepada laluan mutlak dan mengembalikannya. Jika laluan tidak dapat diselesaikan, false dikembalikan.

basename(): Mengembalikan bahagian nama fail pada laluan.

$_SERVER['DOCUMENT_ROOT']: Pembolehubah ini mengandungi direktori akar skrip PHP semasa.

Berikut ialah contoh kod cara menggunakan fungsi ini untuk menyemak laluan fail:

  1. Semak sama ada ia adalah laluan yang sah
if (realpath($_POST['file']) === false) {
    //非法路径,不进行处理
    return;
}
  1. Pastikan anda memuat naik nama fail yang unik
$target_dir = $_SERVER['DOCUMENT_ROOT'] . "/uploads/"; //定义上传目录
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); //获取上传文件名

//确保文件名唯一
$i = 0;
while (file_exists($target_file)) {
    $i++;
    $target_file = $target_dir . $i . '_' . basename($_FILES["fileToUpload"]["name"]);
}
  1. Semak jenis fail
$allowed_types = array('image/jpeg', 'image/png', 'image/gif');
if (!in_array($_FILES["fileToUpload"]["type"], $allowed_types)) {
    //文件类型不匹配,不进行处理
    return;
}
  1. Tetapkan saiz fail maksimum
rreee

Nota: Kod ini hanya menyediakan kaedah pemeriksaan keselamatan asas dan pembangun perlu membuat pengubahsuaian dan tambahan yang sesuai mengikut keperluan mereka sendiri untuk memastikan keselamatan borang tersebut.

Kesimpulan

Menggunakan kaedah penyemakan direktori fail selamat boleh melindungi keselamatan borang PHP dan mencegah serangan penggodam dengan berkesan. Apabila menulis borang PHP, pembangun harus membiasakan diri menggunakan fungsi laluan dan pembolehubah terbina dalam PHP dan membuat semakan keselamatan yang sesuai seperti yang diperlukan. Paling penting, pembangun mesti sentiasa berwaspada dan mengemas kini serta menambal kelemahan dengan segera untuk melindungi keselamatan tapak web mereka.

Atas ialah kandungan terperinci Penyelesaian keselamatan borang PHP: gunakan kaedah penyemakan direktori fail selamat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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