Nota Kajian PHP: Langkah Keselamatan dan Pertahanan
Pengenalan:
Dalam dunia Internet hari ini, keselamatan adalah sangat penting, terutamanya untuk aplikasi web. Sebagai bahasa skrip sebelah pelayan yang biasa digunakan, keselamatan PHP sentiasa menjadi aspek yang mesti diberi perhatian oleh pembangun. Artikel ini akan memperkenalkan beberapa isu keselamatan biasa dalam PHP dan menyediakan kod sampel untuk beberapa langkah pertahanan.
1. Pengesahan input
Pengesahan input ialah barisan pertahanan pertama untuk melindungi keselamatan aplikasi web. Dalam PHP, kami biasanya menggunakan teknik penapisan dan pengesahan untuk memastikan data yang dimasukkan oleh pengguna adalah sah dan selamat.
Proses data input melalui fungsi penapisan dan pengesahan, seperti menggunakan fungsi filter_var():
Contoh kod:
$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING); $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
Sekatan ketat pada input pengguna, seperti menentukan julat panjang nama pengguna dan kata laluan:
Contoh:
if (strlen($username) < 6 || strlen($username) > 20) { echo "用户名长度必须在6到20之间"; }
2. XSS attack defense
Cross-site scripting attack (XSS) ialah kaedah serangan biasa yang mengeksploitasi pemprosesan data input pengguna yang salah oleh aplikasi web untuk dilaksanakan pada penyemak imbas pengguna Skrip Hasad. Berikut ialah beberapa cara untuk mempertahankan diri daripada serangan XSS:
Gunakan fungsi htmlspecialchars() untuk melarikan diri daripada keluaran:
Contoh kod:
echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
Gunakan Dasar Keselamatan Kandungan (CSP) untuk mengehadkan pemuatan sumber luaran dan mencegah Suntikan Skrip berniat jahat:
Sampel kod:
header("Content-Security-Policy: script-src 'self'");
3. Pertahanan suntikan SQL
Suntikan SQL merujuk kepada penyerang yang mengganggu pernyataan pertanyaan pangkalan data melalui jujukan aksara yang dibina secara berniat jahat untuk melaksanakan operasi berniat jahat pada aplikasi web. Berikut ialah beberapa cara untuk mempertahankan diri daripada suntikan SQL:
Gunakan penyataan yang disediakan (Pernyataan Disediakan) untuk mengikat parameter:
Contoh kod:
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username"); $stmt->bindParam(':username', $username); $stmt->execute();
Gunakan fungsi petikan() PDO untuk melepaskan contoh kod:
Contoh kod:
4. Keselamatan muat naik fail
Fungsi muat naik fail ialah fungsi biasa dalam aplikasi web. Walau bagaimanapun, pengguna berniat jahat boleh memuat naik fail yang mengandungi skrip berniat jahat. Berikut ialah beberapa cara untuk mempertahankan diri daripada isu keselamatan muat naik fail:
Sahkan nama akhiran fail yang dimuat naik:
Contoh kod:
$username = $pdo->quote($_POST['username']); $query = "SELECT * FROM users WHERE username = $username";
Simpan fail yang dimuat naik dalam direktori terpencil untuk mengelakkan akses terus kepada muat naik pengguna Fail: Contoh Kod:
$allowedExtensions = ['jpg', 'png', 'gif']; $filename = $_FILES['file']['name']; $ext = pathinfo($filename, PATHINFO_EXTENSION); if (!in_array($ext, $allowedExtensions)) { echo "文件类型不允许"; }
Pengurusan sesi ialah bahagian penting dalam aplikasi web. Berikut adalah beberapa langkah keselamatan pengurusan sesi:
Contoh kod:
$filename = uniqid().'.'.$ext; move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$filename);
Contoh:
session_set_cookie_params(['httponly' => true]); session_start();
Dengan beberapa isu keselamatan dan langkah pertahanan yang dinyatakan di atas, kami boleh mengukuhkan keselamatan aplikasi web PHP. Walau bagaimanapun, keselamatan adalah proses yang berterusan dan pembangun harus terus mempelajari dan mengemas kini pengetahuan mereka untuk bertindak balas terhadap ancaman keselamatan yang berkembang dan berubah. Pada masa yang sama, anda juga harus memberi perhatian kepada cadangan amalan terbaik keselamatan dalam dokumentasi PHP rasmi untuk meningkatkan keselamatan aplikasi web anda.
Atas ialah kandungan terperinci Nota kajian PHP: langkah keselamatan dan pertahanan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!