Langkah keselamatan untuk PHP dan CGI: Bagaimana untuk menghalang tapak web anda daripada digodam

WBOY
Lepaskan: 2023-07-22 16:12:01
asal
809 orang telah melayarinya

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.

  1. Sahkan input pengguna

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);
Salin selepas log masuk

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");
}
Salin selepas log masuk

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");
}
Salin selepas log masuk
  1. Keselamatan kata laluan

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 到数据库
Salin selepas log masuk

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位");
}
Salin selepas log masuk
  1. Muat naik fail

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("不允许上传该类型的文件");
}
Salin selepas log masuk

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);
Salin selepas log masuk
  1. SQL injection protection

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]);
Salin selepas log masuk

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]);
Salin selepas log masuk

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!

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