cari
Rumahphp教程php手册防止伪造跨站请求的小招式

  伪造跨站请求介绍

  伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。这种攻击常见的表现形式有:

  伪造链接,引诱用户点击,或是让用户在不知情的情况下访问

  伪造表单,引诱用户提交。表单可以是隐藏的,用图片或链接的形式伪装。

  比较常见而且也很廉价的防范手段是在所有可能涉及用户写操作的表单中加入一个随机且变换频繁的字符串,然后在处理表单的时候对这个字符串进行检查。这个随机字符串如果和当前用户身份相关联的话,那么攻击者伪造请求会比较麻烦。

  yahoo对付伪造跨站请求的办法是在表单里加入一个叫.crumb的随机串;而facebook也有类似的解决办法,它的表单里常常会有post_form_id和fb_dtsg。

  随机串代码实现

  咱们按照这个思路,山寨一个crumb的实现,代码如下:

 

  

  class Crumb {

  CONST SALT = "your-secret-salt";

  static $ttl = 7200;

  static public function challenge($data) {

  return hash_hmac('md5', $data, self::SALT);

  }

  static public function issueCrumb($uid, $action = -1) {

  $i = ceil(time() / self::$ttl);

  return substr(self::challenge($i . $action . $uid), -12, 10);

  }

  static public function verifyCrumb($uid, $crumb, $action = -1) {

  $i = ceil(time() / self::$ttl);

  if(substr(self::challenge($i . $action . $uid), -12, 10) == $crumb

  substr(self::challenge(($i - 1) . $action . $uid), -12, 10) == $crumb)

  return true;

  return false;

  }

  }

 

  代码中的$uid表示用户唯一标识,而$ttl表示这个随机串的有效时间。

  应用示例

  构造表单

  在表单中插入一个隐藏的随机串crumb

 

  处理表单 demo.php

  对crumb进行检查

 

  

  if(Crumb::verifyCrumb($uid, $_POST['crumb'])) {

  //按照正常流程处理表单

  } else {

  //crumb校验失败,错误提示流程

  }



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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa