Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengesahan pengguna dan langkah perlindungan pemalsuan permintaan merentas tapak dalam sistem pembunuh kilat PHP

Pengesahan pengguna dan langkah perlindungan pemalsuan permintaan merentas tapak dalam sistem pembunuh kilat PHP

WBOY
WBOYasal
2023-09-21 10:30:111010semak imbas

Pengesahan pengguna dan langkah perlindungan pemalsuan permintaan merentas tapak dalam sistem pembunuh kilat PHP

Tajuk: Langkah-langkah Perlindungan Pemalsuan Permintaan Pengguna dan Merentas Tapak dalam Sistem Pembunuhan Kilat PHP

Pengenalan:
Dalam era Internet hari ini, platform dan tapak web e-dagang sering menghadapi kesan daripada jumlah lawatan dan permintaan pengguna yang besar . Untuk memastikan keadilan dan keselamatan, sistem jualan kilat diwujudkan. Walau bagaimanapun, sistem jualan kilat sendiri menimbulkan beberapa risiko keselamatan, terutamanya pengesahan pengguna dan serangan pemalsuan permintaan merentas tapak (CSRF). Artikel ini akan membincangkan cara melaksanakan pengesahan pengguna yang berkesan dan perlindungan CSRF dalam PHP.

1. Pengesahan pengguna:
Pengesahan pengguna ialah bahagian terpenting dalam sistem jualan kilat Ia digunakan untuk mengesahkan identiti dan kebenaran pengguna serta menghalang operasi jahat oleh pengguna dan robot yang berniat jahat. Berikut adalah beberapa kaedah pengesahan pengguna biasa:

  1. Pengesahan Nama Pengguna dan Kata Laluan:
    Pengguna mesti memberikan nama pengguna dan kata laluan yang unik semasa mendaftar dalam sistem jualan kilat. Apabila pengguna log masuk, sistem akan menyemak sama ada nama pengguna dan kata laluan yang dimasukkan adalah konsisten dengan yang disimpan dalam pangkalan data. Berikut ialah contoh pelaksanaan mudah:
// 用户登录处理
function login($username, $password) {
    // 首先从数据库中获取该用户名对应的密码
    $db_password = getPasswordFromDatabase($username);
    
    // 对比输入的密码和数据库中保存的密码是否一致
    if (md5($password) == $db_password) {
        return true;
    } else {
        return false;
    }
}
  1. Kod pengesahan:
    Untuk menghalang bot dan pengguna berniat jahat daripada meretas kata laluan brute force, anda boleh menambah kod pengesahan pada halaman log masuk. Pengguna perlu memasukkan kod pengesahan yang betul untuk meneruskan log masuk. Berikut ialah contoh penggunaan perpustakaan GD untuk menjana kod pengesahan:
// 生成验证码
function generateCaptcha() {
    $captcha = imagecreatetruecolor(100, 30);
    $bg_color = imagecolorallocate($captcha, 255, 255, 255);
    $text_color = imagecolorallocate($captcha, 0, 0, 0);
    
    // 在验证码上绘制随机数字
    $code = rand(1000, 9999);
    imagestring($captcha, 5, 40, 10, $code, $text_color);
    
    // 将验证码保存到会话中
    $_SESSION['captcha'] = $code;
    
    // 输出验证码图像
    header('Content-Type: image/png');
    imagepng($captcha);
    imagedestroy($captcha);
}

// 验证验证码
function verifyCaptcha($input_code) {
    if ($_SESSION['captcha'] == $input_code) {
        return true;
    } else {
        return false;
    }
}

2. Perlindungan pemalsuan permintaan merentas tapak:
CSRF ialah kaedah serangan yang menggunakan identiti pengguna untuk membuat permintaan yang menyalahi undang-undang tanpa pengetahuan mereka. Untuk mengelakkan serangan CSRF, anda boleh mengambil langkah berikut:

  1. Tambah token rawak:
    Tambah token yang dijana secara rawak pada setiap borang dan simpannya dalam sesi atau kuki. Apabila pengguna menyerahkan borang, sistem menyemak untuk melihat sama ada token dalam borang sepadan dengan token dalam sesi atau kuki. Berikut ialah contoh kod:
// 生成并存储令牌
function generateToken() {
    $token = md5(uniqid(rand(), true));
    $_SESSION['token'] = $token;
    return $token;
}

// 输出包含令牌的表单
function printForm() {
    $token = generateToken();
    echo '<form action="submit.php" method="POST">';
    echo '<input type="hidden" name="token" value="' . $token . '">';
    echo '<input type="submit" value="Submit">';
    echo '</form>';
}

// 验证令牌
function verifyToken($input_token) {
    if ($_SESSION['token'] == $input_token) {
        return true;
    } else {
        return false;
    }
}
  1. Sumber pengesahan:
    Di bahagian pelayan, anda boleh menyemak sama ada sumber permintaan itu konsisten dengan nama domain halaman web semasa. Berikut ialah contoh kod:
function verifyReferer() {
    $referer = $_SERVER['HTTP_REFERER'];
    $host = $_SERVER['HTTP_HOST'];
    
    if ($referer != $host) {
        return false;
    } else {
        return true;
    }
}

Kesimpulan:
Dalam sistem jualan kilat PHP, pengesahan pengguna dan langkah perlindungan CSRF adalah langkah keselamatan yang sangat penting. Dengan mengesahkan identiti pengguna secara berkesan dan mencegah serangan CSRF, keselamatan dan pengalaman pengguna sistem boleh dipertingkatkan. Contoh kod di atas hanyalah sebahagian daripada pelaksanaan asas, dan aplikasi praktikal khusus perlu diubah suai dan ditambah baik mengikut keperluan mereka sendiri.

Atas ialah kandungan terperinci Pengesahan pengguna dan langkah perlindungan pemalsuan permintaan merentas tapak dalam sistem pembunuh kilat PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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