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

WBOY
Lepaskan: 2023-09-21 10:32:01
asal
1008 orang telah melayarinya

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

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!