Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gunakan PHP untuk menapis dan mengesahkan input untuk mengelakkan serangan suntikan arahan

Gunakan PHP untuk menapis dan mengesahkan input untuk mengelakkan serangan suntikan arahan

WBOY
WBOYasal
2023-07-05 19:03:071115semak imbas

Gunakan PHP untuk menapis dan mengesahkan input untuk mencegah serangan suntikan arahan

Pengenalan:
Serangan suntikan arahan ialah masalah keselamatan rangkaian biasa di mana penyerang melakukan operasi yang menyalahi undang-undang pada pelayan dengan memasukkan arahan berniat jahat ke dalam data yang dimasukkan pengguna. Untuk melindungi keselamatan tapak web, kami perlu menapis dan mengesahkan input pengguna. Sebagai bahasa sebelah pelayan yang biasa digunakan, PHP mempunyai fungsi penapisan dan pengesahan yang kaya, yang boleh membantu kami mencegah serangan suntikan arahan dengan berkesan.

Tapis input pengguna:
Sebelum memproses input pengguna, kami harus menapis data input untuk mengalih keluar aksara khas dan kandungan sensitif. PHP menyediakan fungsi berikut untuk menapis input pengguna:

  1. strip_tags(): digunakan untuk mengalih keluar tag HTML dalam input untuk mengelakkan serangan XSS.
  2. htmlentities(): Tukar pengekodan entiti HTML kepada aksara yang sepadan untuk mengelakkan serangan XSS.
  3. addslashes(): Digunakan untuk menambah backslash sebelum aksara khas (seperti petikan) dalam input untuk mengelakkan serangan suntikan SQL.
  4. trim(): Alih keluar ruang pada kedua-dua hujung input.
  5. filter_var(): Menapis input dan menyokong berbilang penapis, seperti menapis URL, alamat e-mel, integer, dsb.

Kod sampel adalah seperti berikut:

// 过滤用户输入
$input = $_POST['input'];

// 去除HTML标签和实体编码
$input = strip_tags($input);
$input = htmlentities($input, ENT_QUOTES, 'UTF-8');

// 添加反斜杠
$input = addslashes($input);

// 去除两端空格
$input = trim($input);

// 使用过滤器进行进一步验证
if (!filter_var($input, FILTER_VALIDATE_EMAIL)) {
    // 输入不是有效的邮箱地址
}

if (!filter_var($input, FILTER_VALIDATE_URL)) {
    // 输入不是有效的URL
}

if (!filter_var($input, FILTER_VALIDATE_INT)) {
    // 输入不是有效的整数
}

Sahkan input pengguna:
Penapisan hanyalah langkah pertama Bagi memastikan data yang dimasukkan oleh pengguna adalah sah dan selamat, kami juga perlu mengesahkannya. PHP menyediakan beberapa fungsi pengesahan terbina dalam untuk mengesahkan jenis data biasa.

  1. is_numeric(): Tentukan sama ada input ialah nombor.
  2. ctype_alpha(): Tentukan sama ada input hanya mengandungi huruf.
  3. ctype_digit(): Tentukan sama ada input hanya mengandungi nombor.
  4. preg_match(): Gunakan ungkapan biasa untuk mengesahkan input.

Kod sampel adalah seperti berikut:

// 验证用户输入为数字
$input = $_POST['input'];

if (!is_numeric($input)) {
    // 输入不是一个数字
}

// 验证用户输入只包含字母
$input = $_POST['input'];

if (!ctype_alpha($input)) {
    // 输入包含非字母字符
}

// 验证用户输入只包含数字
$input = $_POST['input'];

if (!ctype_digit($input)) {
    // 输入包含非数字字符
}

// 使用正则表达式验证用户输入
$input = $_POST['input'];

$pattern = '/^[a-zA-Z0-9]{6,}$/';

if (!preg_match($pattern, $input)) {
    // 输入不符合要求
}

Kesimpulan:
Untuk melindungi keselamatan laman web, kami harus sentiasa menapis dan mengesahkan input pengguna, terutamanya sebelum mengendalikan operasi sensitif (seperti pertanyaan pangkalan data, pelaksanaan arahan sistem). Artikel ini menerangkan cara menggunakan fungsi penapisan dan pengesahan PHP untuk menghalang serangan suntikan arahan dan memberikan contoh kod yang sepadan. Mengikuti langkah keselamatan ini boleh meningkatkan keselamatan tapak web anda dengan berkesan.

Atas ialah kandungan terperinci Gunakan PHP untuk menapis dan mengesahkan input untuk mengelakkan serangan suntikan arahan. 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