Langkah perlindungan keselamatan untuk PHP dan CGI: Bagaimana untuk mengelakkan tapak web daripada diserang oleh penggodam
Dengan populariti dan perkembangan Internet, isu keselamatan laman web telah menarik perhatian lebih dan lebih. PHP dan CGI, sebagai bahasa pengaturcaraan web yang biasa digunakan, juga perlu mengukuhkan langkah keselamatan untuk mencegah serangan penggodam. Artikel ini akan memperkenalkan beberapa langkah perlindungan keselamatan untuk PHP dan CGI serta menyediakan contoh kod yang sepadan.
Input pengguna adalah bahagian yang paling terdedah kepada penggodam Risiko diserang boleh dikurangkan dengan banyaknya dengan mengesahkan dan menapis input pengguna. Berikut ialah beberapa contoh kod pengesahan input pengguna biasa.
1.1 Untuk input rentetan, anda boleh menggunakan fungsi penapis untuk menapis input pengguna untuk mengelakkan serangan suntikan biasa.
Kod sampel:
$input = $_GET['input']; $filteredInput = filter_var($input, FILTER_SANITIZE_STRING);
1.2 Untuk input angka, anda boleh menggunakan fungsi is_numeric() untuk mengesahkan bagi memastikan bahawa input adalah nombor yang sah.
Contoh kod:
$input = $_GET['input']; if(!is_numeric($input)){ die("Invalid input"); }
1.3 Untuk input dalam format tertentu seperti alamat e-mel dan URL, ungkapan biasa boleh digunakan untuk pengesahan.
Contoh kod:
$email = $_GET['email']; if(!preg_match("/^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/", $email)){ die("Invalid email"); }
Kata laluan ialah perlindungan penting untuk akaun pengguna. Adalah amat perlu untuk mengambil beberapa langkah untuk meningkatkan keselamatan kata laluan.
2.1. Gunakan fungsi cincang kata laluan
Apabila menyimpan kata laluan pengguna, anda harus menggunakan fungsi cincang untuk menyulitkan dan menyimpan kata laluan untuk melindungi keselamatan kata laluan pengguna.
Contoh kod:
$password = $_POST['password']; $hashedPassword = password_hash($password, PASSWORD_DEFAULT); // 存储 $hashedPassword 到数据库
2.2. Keperluan kekuatan kata laluan
Tetapkan keperluan kekuatan kata laluan, seperti panjang kata laluan, kerumitan, dsb., untuk mengingatkan pengguna untuk menetapkan kata laluan selamat.
Contoh kod:
$password = $_POST['password']; if(strlen($password) < 8){ die("密码长度至少为8位"); }
Fungsi muat naik fail ialah salah satu fungsi biasa dalam tapak web, tetapi ia juga merupakan potensi risiko keselamatan. Berikut adalah beberapa langkah keselamatan biasa.
3.1. Pengesahan jenis fail
Sahkan kesahihan fail dengan menyemak sambungan fail atau jenis MIME untuk mengelakkan muat naik beberapa fail berniat jahat.
Contoh kod:
$file = $_FILES['file']; $allowedExtensions = ['jpg', 'png', 'gif']; $allowedMimeTypes = ['image/jpeg', 'image/png', 'image/gif']; if(!in_array(pathinfo($file['name'], PATHINFO_EXTENSION), $allowedExtensions) || !in_array($file['type'], $allowedMimeTypes)){ die("不允许上传该类型的文件"); }
3.2. Keselamatan laluan penyimpanan fail
Pastikan laluan di mana fail disimpan selepas dimuat naik adalah selamat untuk mengelakkan isu keselamatan yang disebabkan oleh kebocoran laluan fail.
Contoh kod:
$savePath = '/path/to/save'; $filename = uniqid().'.jpg'; // 使用唯一的文件名 move_uploaded_file($_FILES['file']['tmp_name'], $savePath.'/'.$filename);
SQL injection attack adalah salah satu kaedah serangan biasa Berikut adalah beberapa langkah biasa untuk mencegah suntikan SQL.
4.1. Gunakan pernyataan yang disediakan
Gunakan pernyataan yang disediakan untuk mengikat parameter untuk mengelakkan serangan suntikan SQL.
Kod sampel:
$username = $_POST['username']; $password = $_POST['password']; $stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password"); $stmt->execute([':username' => $username, ':password' => $password]);
4.2 Gunakan pertanyaan berparameter
Gunakan pertanyaan berparameter untuk menghantar input pengguna sebagai parameter kepada pernyataan pertanyaan pangkalan data untuk mengelakkan serangan suntikan SQL.
Contoh kod:
$username = $_POST['username']; $password = $_POST['password']; $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ? AND password = ?"); $stmt->execute([$username, $password]);
Ringkasnya, melalui satu siri langkah perlindungan keselamatan seperti mengesahkan input pengguna, keselamatan kata laluan, keselamatan muat naik fail dan mencegah serangan suntikan SQL, keselamatan tapak web boleh dipertingkatkan dengan lebih baik dan risiko menjadi diserang oleh penggodam boleh meningkatkan risiko. Semasa proses pembangunan, adalah perlu untuk memberi lebih perhatian kepada aspek-aspek ini untuk melindungi keselamatan maklumat laman web dan pengguna.
Atas ialah kandungan terperinci Langkah keselamatan untuk PHP dan CGI: Bagaimana untuk menghalang tapak web anda daripada digodam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!