Rumah > pembangunan bahagian belakang > tutorial php > Bina kubu yang tidak dapat ditembusi: perisai padu terhadap pemalsuan permintaan rentas tapak PHP (CSRF)

Bina kubu yang tidak dapat ditembusi: perisai padu terhadap pemalsuan permintaan rentas tapak PHP (CSRF)

王林
Lepaskan: 2024-02-25 13:12:02
ke hadapan
636 orang telah melayarinya

editor php Yuzai akan menunjukkan kepada anda cara membina kubu yang kukuh dan membina barisan pertahanan kedap udara untuk menentang serangan pemalsuan permintaan rentas tapak (CSRF). Artikel ini akan memperkenalkan prinsip dan bahaya serangan CSRF secara terperinci, dan berkongsi beberapa langkah pencegahan yang berkesan untuk membantu pembangun mengukuhkan perlindungan keselamatan semasa menulis aplikasi PHP untuk memastikan keselamatan data dan sistem pengguna. Marilah kita belajar bersama-sama cara membina perisai yang kukuh dan melindungi keselamatan dunia dalam talian!

Pemalsuan permintaan merentas tapak (CSRF) ialah kerentanan WEB Keselamatan yang membolehkan penyerang melakukan tindakan berniat jahat bagi pihak mangsa tanpa kebenaran. Serangan CSRF biasanya dimulakan dengan mendorong pengguna untuk mengklik pautan berniat jahat atau membuka tapak web berniat jahat Penyerang menggunakan kepercayaan pengguna untuk menggesa mangsa mengakses pelayan penyerang secara tidak sedar, dan membawa maklumat pengesahan mangsa ke aplikasi web mangsa menghantar permintaan. dibuat oleh penyerang. Penyerang boleh menggunakan permintaan ini untuk melakukan pelbagai operasi berniat jahat, seperti mengubah suai atau memadam data sensitif, menjalankan transaksi penipuan, menghantar spam, dsb.

2. Bahaya pemalsuan permintaan rentas tapak (CSRF)

Kemudaratan serangan CSRF adalah besar, dan ia mungkin membawa kepada akibat serius berikut:

  • Curi maklumat sensitif: Penyerang boleh menggunakan serangan CSRF untuk mencuri maklumat sensitif mangsa, seperti nama pengguna, kata laluan, nombor kad kredit, nombor keselamatan sosial, dsb.
  • Lakukan operasi hasad: Penyerang boleh menggunakan serangan CSRF untuk melakukan pelbagai operasi hasad, seperti mengubah suai atau memadam maklumat peribadi mangsa, menjalankan transaksi penipuan, menghantar spam, dsb.
  • Merosakkan reputasi tapak web: Serangan CSRF boleh merosakkan reputasi tapak web, menyebabkan pengguna hilang kepercayaan terhadap tapak web.

3. Langkah mencegah serangan CSRF

Untuk mengelakkan serangan CSRF, anda boleh mengambil langkah berikut:

  1. Sahkan sumber permintaan: Semasa memproses permintaan pengguna, sahkan sama ada sumber permintaan itu sah. Anda boleh menggunakan salah satu kaedah berikut:
  • Pengepala permintaan asal: Semak pengepala permintaan Asal untuk memastikan permintaan itu datang daripada sumber yang sah.
  • Pengepala permintaan perujuk: Semak pengepala permintaan perujuk untuk memastikan permintaan itu datang daripada halaman yang sedang digunakan oleh pengguna.
  • Kuki SameSite: Tetapkan Kuki SameSite untuk mengelakkan serangan pemalsuan permintaan merentas tapak.
  1. Gunakan token nombor rawak: Jana token nombor rawak unik setiap sesi pengguna dan hantar token itu sebagai parameter kepada pelayan pada setiap permintaan. Pelayan mengesahkan kesahihan token semasa memproses permintaan dan menolak permintaan jika token tidak sah.
  2. Laksanakan sekatan merentas domain yang ketat: Laksanakan sekatan merentas domain yang ketat pada tapak web dan larang permintaan daripada domain lain daripada mengakses sumber sensitif tapak web.
  3. Pemeriksaan ketat input pengguna: Pemeriksaan ketat input pengguna untuk menghalang input pengguna daripada mengandungi kod atau skrip berniat jahat.
  4. Gunakan rangka kerja dan perpustakaan keselamatan: Gunakan keselamatan rangka kerja dan perpustakaan, seperti Symfony, Laravel, dsb., yang biasanya sudah termasuk fungsi perlindungan CSRF.

4. Kod tunjuk cara untuk menghalang serangan CSRF dalam PHP

<?PHP
// 从表单中获取数据
$username = $_POST["username"];
$passWord = $_POST["password"];

// 验证随机数令牌
if (!isset($_POST["token"]) || $_POST["token"] !== $_SESSioN["token"]) {
// 令牌无效,拒绝请求
die("Invalid token");
}

// 验证用户身份
if ($username === "admin" && $password === "password") {
// 登录成功
echo "Login success";
} else {
// 登录失败
echo "Login failed";
}
?>
Salin selepas log masuk

5. Kesimpulan

Serangan CSRF ialah kelemahan keselamatan web biasa yang boleh membawa kepada akibat keselamatan yang serius. Dengan mengambil langkah pencegahan yang berkesan, seperti mengesahkan sumber permintaan, menggunakan token nombor rawak, melaksanakan sekatan merentas domain yang ketat, memeriksa input pengguna dengan ketat, dan menggunakan rangka kerja dan perpustakaan keselamatan, anda boleh mencegah serangan CSRF dengan berkesan dan memastikan keselamatan aplikasi web. .

Atas ialah kandungan terperinci Bina kubu yang tidak dapat ditembusi: perisai padu terhadap pemalsuan permintaan rentas tapak PHP (CSRF). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:lsjlt.com
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