Rumah > pembangunan bahagian belakang > tutorial php > Amalan terbaik untuk menghalang fail PHP daripada mengandungi kelemahan

Amalan terbaik untuk menghalang fail PHP daripada mengandungi kelemahan

王林
Lepaskan: 2023-07-08 20:00:02
asal
1012 orang telah melayarinya

Amalan Terbaik untuk Mencegah Kerentanan Kemasukan Fail PHP

Ciri pemasukan fail PHP ialah ciri yang sangat biasa digunakan yang membolehkan pembangun menggabungkan coretan kod yang berbeza bersama-sama untuk mencapai penggunaan semula kod. Walau bagaimanapun, jika digunakan secara tidak betul, ciri pemasukan fail juga boleh membawa kepada kelemahan keselamatan, membolehkan penyerang melaksanakan kod hasad atau mengakses maklumat sensitif.

Artikel ini akan memperkenalkan beberapa amalan terbaik dan cadangan untuk membantu pembangun menghalang kelemahan keselamatan apabila menggunakan fungsi pemasukan fail PHP.

  1. Semak Input Pengguna

Input pengguna ialah salah satu sumber kelemahan keselamatan yang paling biasa. Input pengguna mesti ditapis dan diproses dengan betul sebelum menggunakan ciri pemasukan fail. Jangan gunakan input pengguna secara langsung untuk operasi pemasukan fail, sebaliknya sahkan dan bersihkannya.

Contoh kod:

$filename = $_GET['file'];
if (preg_match('/^[a-zA-Z0-9_-]+$/',$filename)) {
    include($filename . '.php');
} else {
    // 非法的文件名
    echo 'Invalid file name';
}
Salin selepas log masuk

Dalam contoh di atas, ungkapan biasa digunakan untuk menapis nama fail dan hanya membenarkan nama fail sah yang mengandungi huruf, nombor, garis bawah dan sempang. Jika nama fail adalah sah, operasi pemasukan fail dilakukan jika tidak, mesej ralat dikembalikan.

  1. Gunakan laluan mutlak

Menggunakan laluan mutlak dan bukannya laluan relatif menyediakan keselamatan yang lebih baik. Laluan relatif boleh menyebabkan fail sasaran yang terkandung dalam fail itu digantikan dengan fail yang dikawal oleh penyerang. Oleh itu, adalah disyorkan untuk menggunakan laluan mutlak untuk merujuk fail yang disertakan.

Kod Contoh:

$filename = '/path/to/included/file.php';
include($filename);
Salin selepas log masuk

Dalam contoh di atas, gunakan laluan mutlak untuk merujuk fail yang ingin anda sertakan, bukannya laluan relatif.

  1. Tetapkan senarai putih untuk fail yang disertakan

Untuk mengehadkan skop pemasukan fail, anda boleh menetapkan senarai putih untuk hanya membenarkan fail tertentu disertakan. Simpan senarai putih dalam tatasusunan atau fail konfigurasi dan sahkan fail sebelum memasukkannya.

Kod sampel:

$whitelist = ['file1.php', 'file2.php'];

$filename = $_GET['file'];
if (in_array($filename, $whitelist)) {
    include($filename);
} else {
    // 无权访问文件
    echo 'Access denied';
}
Salin selepas log masuk

Dalam contoh di atas, hanya fail yang ditakrifkan dalam senarai putih akan disertakan, jika tidak mesej ralat akan dikembalikan.

  1. Lumpuhkan kemasukan fail dinamik

Tetapkan allow_url_include dalam fail konfigurasi PHP kepada Mati untuk melumpuhkan kemasukan fail dinamik. Ini menghalang penyerang daripada melaksanakan kod berniat jahat dengan memasukkan fail jauh. allow_url_include设置为Off以禁用动态文件包含功能。这可以防止攻击者通过包含远程文件来执行恶意代码。

示例代码(php.ini):

allow_url_include = Off
Salin selepas log masuk

通过禁用动态文件包含,可以防止包含远程文件的风险。

  1. 限制包含路径

在PHP中,可以通过设置include_path变量来限制包含文件的搜索路径。将其设置为一个只包含必要文件的目录,可以减少攻击者可能利用的目标文件。

示例代码(php.ini):

include_path = ".:/path/to/includes"
Salin selepas log masuk

include_path

Contoh kod (php.ini):

rrreee

Dengan melumpuhkan pemasukan fail dinamik, anda boleh menghalang risiko memasukkan fail jauh. 🎜
    🎜Hadkan laluan sertakan🎜🎜🎜Dalam PHP, anda boleh mengehadkan laluan carian untuk memasukkan fail dengan menetapkan pembolehubah include_path. Menetapkannya kepada direktori yang mengandungi hanya fail yang diperlukan mengurangkan bilangan fail yang boleh disasarkan oleh penyerang. 🎜🎜Contoh kod (php.ini): 🎜rrreee🎜Tetapkan include_path kepada direktori dengan laluan tertentu untuk memastikan hanya fail dalam direktori yang ditentukan akan disertakan. 🎜🎜Untuk meringkaskan, amalan terbaik untuk mencegah kerentanan kemasukan fail PHP termasuk: menyemak input pengguna, menggunakan laluan mutlak, menetapkan senarai putih untuk fail yang disertakan, melumpuhkan kemasukan fail dinamik dan mengehadkan laluan termasuk. Penggunaan dan pelaksanaan amalan ini dengan betul boleh meningkatkan keselamatan aplikasi anda dan mengurangkan risiko fail yang mengandungi kelemahan. 🎜

Atas ialah kandungan terperinci Amalan terbaik untuk menghalang fail PHP daripada mengandungi kelemahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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