Untuk memastikan keselamatan pengurusan sesi PHP, dasar keselamatan berikut mesti dilaksanakan: Gunakan kuki selamat (pengangkutan HTTPS, dengan bendera HttpOnly dan Secure) Sediakan kitaran hayat sesi yang munasabah Gunakan penjanaan semula sesi untuk mengelakkan rampasan sesi Larang permintaan merentas tapak pemalsuan (CSRF), seperti menggunakan token anti-CSRF Menggunakan pangkalan data untuk menyimpan data sesi dan bukannya storan fail
Dasar Keselamatan dalam Pengurusan Sesi PHP
Pengenalan
untuk pengurusan web adalah kerana ia Membenarkan maklumat disimpan antara permintaan pengguna. Walau bagaimanapun, pengurusan sesi yang tidak selamat boleh membawa kepada kelemahan yang serius, jadi melaksanakan strategi keselamatan yang teguh adalah penting.
Dasar Keselamatan
1. Gunakan kuki selamat
ID sesi biasanya disimpan dalam kuki. Pastikan kuki dihantar menggunakan HTTPS dan mempunyai bendera HttpOnly dan Secure. Ini akan menghalang skrip daripada mengakses kuki dan mengurangkan risiko serangan XSS.
ini_set('session.cookie_secure', true); ini_set('session.cookie_httponly', true);
2. Tetapkan kitaran hayat sesi
Tetapkan kitaran hayat sesi yang munasabah yang cukup lama untuk mengelak daripada mengganggu pengalaman pengguna, tetapi cukup singkat untuk mengurangkan risiko akses tanpa kebenaran.
session_set_cookie_params([ 'lifetime' => 1800, // 30 分钟 ]);
3. Gunakan Penjanaan Semula Sesi
Penjanaan semula sesi boleh menghalang rampasan sesi dengan mencipta sesi baharu dan memusnahkan sesi lama sambil memastikan pengguna kekal log masuk.
session_regenerate_id(true);
4. Larang Pemalsuan Permintaan Merentas Tapak (CSRF)
Sertakan token anti-CSRF dalam borang untuk mengelakkan penyerahan pemalsuan permintaan yang tidak dibenarkan.
<?php $token = bin2hex(random_bytes(16)); $_SESSION['csrf_token'] = $token; ?> <form action="/submit" method="post"> <input type="hidden" name="csrf_token" value="<?php echo $token; ?>"> ... </form>
5 Gunakan pangkalan data untuk menyimpan data sesi
Menyimpan data sesi dalam pangkalan data adalah lebih selamat daripada menyimpannya dalam fail kerana ia menghalang penyerang tempatan daripada mengakses maklumat sesi.
ini_set('session.save_handler', 'user'); session_set_save_handler(...);
Kes praktikal
Andaikan anda mempunyai borang log masuk:
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username']) && isset($_POST['password'])) { // 验证登录凭证 if (authenticate($_POST['username'], $_POST['password'])) { session_start(); $_SESSION['username'] = $_POST['username']; header('Location: dashboard.php'); exit; } else { // 处理登录失败 } }
Untuk melindungi borang ini, kami harus menggunakan strategi keselamatan berikut:
Atas ialah kandungan terperinci Strategi keselamatan untuk pengurusan sesi PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!