Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menetapkan Perujuk HTTP dalam bentuk PHP untuk mengelakkan pemalsuan permintaan merentas tapak

Bagaimana untuk menetapkan Perujuk HTTP dalam bentuk PHP untuk mengelakkan pemalsuan permintaan merentas tapak

WBOY
WBOYasal
2023-06-25 19:23:051888semak imbas

Perkembangan pesat Internet dan keperluan pengguna yang semakin kompleks telah menjadikan keperluan dan fungsi aplikasi Web semakin kompleks dan pelbagai. Walau bagaimanapun, ini juga telah membawa kepada isu keselamatan web yang semakin ketara Salah satu kaedah serangan yang biasa ialah serangan pemalsuan permintaan silang (CSRF).

Ringkasnya, serangan CSRF bermaksud penyerang menggunakan pengesahan identiti pengguna yang sah di tapak tertentu untuk menyamar sebagai identiti pengguna dan menyelesaikan operasi tertentu atas nama pengguna tanpa kebenaran atau pengetahuan pengguna . Terdapat banyak kaedah serangan biasa, seperti menghantar permintaan berniat jahat melalui URL, iframe, gambar, dll. Menetapkan Perujuk HTTP dalam bentuk PHP ialah cara yang berkesan untuk mencegah serangan CSRF.

Jadi, bagaimana untuk menetapkan Perujuk HTTP dalam bentuk PHP?

Perujuk HTTP bermaksud sebelum menghantar permintaan, penyemak imbas akan menyemak alamat sumber halaman semasa, iaitu sumber permintaan. Permintaan dianggap sah jika sumber permintaan adalah sama dengan alamat sumber dalam permintaan yang diterima oleh pelayan. Oleh itu, dengan menetapkan Perujuk HTTP, anda boleh menambah lapisan perlindungan pada borang dan mengehadkan alamat sumber penyerahan borang, dengan itu berkesan menghalang serangan CSRF.

Proses tetapan khusus adalah seperti berikut:

1 Tambahkan kod berikut pada halaman borang:

<?php 
session_start();
$token = md5(uniqid(rand(), TRUE)); 
$_SESSION['csrf_token'] = $token;
?>
<form action="" method="post">
    <input type="hidden" name="csrf_token" value="<?php echo $token; ?>">
    //其他表单元素
    <input type="submit" value="提交">
</form>

Pertama, buka sesi dalam halaman borang, dan kemudian jana token rawak sebagai token CSRF dan simpannya dalam. sesi itu. Berikan token kepada elemen tersembunyi dan serahkannya ke pelayan bersama-sama dengan borang sebagai sebahagian daripada elemen borang.

2 Seterusnya, tambahkan kod berikut pada halaman pemprosesan borang:

session_start();
if($_POST['csrf_token'] != $_SESSION['csrf_token']) {
    //不合法的请求
    exit("非法请求!");
}
//处理表单数据之前。...

Dalam halaman pemprosesan borang, mula-mula buka sesi, dan kemudian bandingkan csrf_token dalam borang dengan token yang disimpan sebelum ini dalam sesi. Jika token tidak konsisten, penyerahan dianggap tidak sah dan pengendali akan tamat. Jika tidak, data borang boleh diproses secara normal.

Ringkasnya, menetapkan Perujuk HTTP dalam bentuk PHP tidak sukar Anda hanya perlu menjana Token CSRF secara rawak dalam halaman borang dan menyimpannya dalam sesi, dan kemudian membandingkan token dalam borang dengan token dalam. sesi sudah memadai. Ini boleh mengelakkan serangan pemalsuan permintaan merentas tapak dengan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk menetapkan Perujuk HTTP dalam bentuk PHP untuk mengelakkan pemalsuan permintaan merentas tapak. 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