Bagaimana untuk mengesahkan input pengguna dalam borang PHP dan meningkatkan keselamatan

WBOY
Lepaskan: 2023-06-24 09:36:01
asal
1215 orang telah melayarinya

Dengan populariti Internet, semakin banyak laman web memerlukan pengguna untuk log masuk, mendaftar, pertanyaan dan operasi lain, yang memerlukan penggunaan borang PHP. Walau bagaimanapun, apabila menggunakan borang PHP, isu keselamatan perlu diambil kira. Untuk meningkatkan keselamatan tapak web, kami perlu mengesahkan kandungan yang dimasukkan oleh pengguna. Artikel ini akan memperkenalkan cara mengesahkan input pengguna dalam borang PHP untuk meningkatkan keselamatan tapak web.

1. Tapis data input pengguna

Langkah pertama ialah menapis data input pengguna. Terdapat banyak aksara yang tidak diperlukan dalam data input pengguna, seperti ruang, tab, pemulangan pengangkutan, suapan baris, dll. Aksara ini boleh menyebabkan skrip PHP gagal dilaksanakan atau dieksploitasi oleh penyerang. Oleh itu, kita perlu menggunakan fungsi dalam PHP untuk menapis aksara ini.

Fungsi strip_tags() dalam PHP boleh menapis keluar teg HTML dan PHP dan mengembalikan rentetan yang ditapis. Contohnya:

$username = strip_tags($_POST['username']); // 过滤掉HTML和PHP标签
Salin selepas log masuk

Fungsi trim() dalam PHP boleh menapis lebihan ruang, tab, pemulangan pengangkutan dan suapan baris pada kedua-dua hujung rentetan. Contohnya:

$username = trim($_POST['username']); // 过滤掉两端空格、制表符、回车和换行符
Salin selepas log masuk

2. Sahkan data input pengguna

Dalam langkah kedua, data input pengguna perlu disahkan. Kami boleh menggunakan ungkapan biasa dalam PHP untuk mengesahkan data yang dimasukkan pengguna. Ungkapan biasa ialah ungkapan yang digunakan untuk memadankan rentetan dan boleh digunakan untuk menyemak sama ada data yang dimasukkan oleh pengguna memenuhi keperluan.

Sahkan nombor telefon mudah alih:

$phone = $_POST['phone'];
if(!preg_match('/^1[3|4|5|7|8][0-9]{9}$/', $phone)){ // 使用正则表达式进行校验
    echo '手机号码格式不正确';
}
Salin selepas log masuk

Sahkan alamat e-mel:

$email = $_POST['email'];
if(!preg_match('/^[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z]+$/', $email)){ // 使用正则表达式进行校验
    echo '邮箱格式不正确';
}
Salin selepas log masuk

3. Halang serangan suntikan SQL

Langkah ketiga ialah untuk mencegah serangan suntikan SQL . Serangan suntikan SQL ialah kaedah serangan biasa Penyerang boleh merosakkan pangkalan data atau bahkan mencuri data dengan menyuntik kod berniat jahat ke dalam pernyataan SQL. Oleh itu, dalam bentuk PHP, kita perlu menggunakan beberapa fungsi untuk menapis data yang dimasukkan oleh pengguna.

Fungsi mysqli_real_escape_string() dalam PHP boleh melepaskan aksara khas seperti petikan tunggal, petikan berganda, garis miring ke belakang, dsb. dalam input rentetan oleh pengguna untuk mengelakkan serangan suntikan SQL. Contohnya:

$username = mysqli_real_escape_string($conn, $_POST['username']); // 过滤掉单引号、双引号、反斜线等特殊字符
Salin selepas log masuk

4. Gunakan kod pengesahan

Akhir sekali, untuk mengelakkan serangan berniat jahat, kami boleh menggunakan kod pengesahan. Kod pengesahan ialah teknologi pengenalan mesin manusia yang boleh menghalang robot atau program berniat jahat daripada menyerang tapak web secara berniat jahat. Kami boleh menambah fungsi kod pengesahan pada borang PHP untuk mengesahkan input pengguna.

Fungsi penjanaan kod pengesahan PHP:

$code = '';
for($i = 0; $i < 4; $i++){
    $code .= rand(0, 9); // 生成四位随机验证码
}
$img = imagecreatetruecolor(80, 30); // 创建图片
$bg_color = imagecolorallocate($img, 255, 255, 255); // 设置背景颜色
$font_color = imagecolorallocate($img, 0, 0, 0); // 设置字体颜色
imagefill($img, 0, 0, $bg_color); // 填充背景颜色
imagettftext($img, 18, 0, 10, 20, $font_color, 'arial.ttf', $code); // 添加文本
header('Content-Type:image/png'); // 设置图像类型
imagepng($img); // 输出图像
imagedestroy($img); // 销毁图片
Salin selepas log masuk

Pengesahan kod pengesahan PHP:

$code = $_POST['code'];
if($code != $_SESSION['code']){ // 判断验证码是否匹配
    echo '验证码不正确';
}
Salin selepas log masuk

Ringkasan:

Dengan menapis data input pengguna dan mengesahkan data input pengguna , mencegah serangan suntikan SQL, menggunakan kod pengesahan dan langkah lain boleh meningkatkan keselamatan dalam borang PHP ke tahap yang agak tinggi. Apabila menggunakan borang PHP, kita perlu memberi perhatian kepada isu keselamatan dan mengemas kini program tapak web tepat pada masanya untuk mengelakkan serangan penggodam.

Atas ialah kandungan terperinci Bagaimana untuk mengesahkan input pengguna dalam borang PHP dan meningkatkan keselamatan. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!