防止伪造跨站请求的小招式
伪造跨站请求介绍
伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发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校验失败,错误提示流程
}

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Apabila menggunakan perisian Tomato Novel, log masuk ke akaun anda supaya anda boleh menikmati perkhidmatan dan kemudahan yang lebih diperibadikan. Selepas log masuk ke akaun anda, anda juga boleh melihat UID (Pengenal Pengguna Unik), yang merupakan maklumat yang sangat penting Kadangkala uid ini sangat penting, jadi di manakah anda boleh melihat UID anda dalam Novel Tomato? Pengguna yang ingin tahu, sila ikuti artikel ini untuk mengetahui lebih lanjut mengenai langkah tontonan Di mana untuk menyemak jawapan uid Novel Tomato: [Novel Tomato] - [Saya] - [Maklum Balas dan Bantuan] - [Maklum Balas] - [Klik 5! kali]. Langkah-langkah khusus: 1. Mula-mula buka perisian Tomato Novel Selepas memasuki halaman utama, kita perlu klik [My] di sudut kanan bawah 2. Kemudian dalam halaman Saya, kita luncurkan ke halaman

DJI belum mengesahkan sebarang rancangan untuk memperkenalkan kamera aksi baharu lagi. Sebaliknya, nampaknya GoPro akan mendahului pesaingnya tahun ini, setelah mengusik bahawa ia akan memperkenalkan dua kamera aksi baharu pada 4 September. Untuk konteks, ini dijangka

Hello semua, saya Xianyu. Rakan-rakan yang telah terdedah kepada Linux semua tahu bahawa terdapat tiga jenis pengguna dalam Linux (atau seperti Unix): Pengguna super (UID 0): pengguna akar, yang mempunyai kebenaran tertinggi. Pengguna sistem (UID 1~999): Pengguna terbina dalam sistem, digunakan untuk menjalankan perkhidmatan sistem dan proses daemon. Pengguna biasa (UID 1000~60000): Dicipta untuk membolehkan pengguna menggunakan sumber sistem Linux Akaun yang dibuat oleh pengguna pada umumnya adalah akaun biasa. Jadi sekarang persoalannya, bagaimana untuk mengetahui dengan cepat pengguna sebenar (pengguna akar dan pengguna biasa) di Linux? Sebelum kami bermula secara rasmi, kami mula-mula memperkenalkan alat-getent. pandai

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Hampir setahun telah berlalu sejak DJI mengeluarkan Osmo Action 4 (kurr. $299 di Amazon). Sejak itu, syarikat itu telah memberi tumpuan kepada bahagian lainnya, termasuk gimbal kamera RS baharu. Selain itu, ia juga telah memperkenalkan pelbagai dron seperti Avata

UID dan GID pengguna ialah pengecam berangka yang digunakan untuk mengenal pasti pengguna dan kumpulan dalam sistem Linux. Apabila menggunakan sistem Linux, kita selalunya perlu melihat UID dan GID pengguna untuk mengurus kebenaran pengguna dan fail. Artikel ini akan memberikan pengenalan mendalam kepada pelbagai cara untuk melihat UID dan GID pengguna dalam sistem Linux dan melampirkan contoh kod tertentu. 1. Semak UID dan GID pengguna melalui arahan Semak UID dan GID pengguna semasa: id Selepas menjalankan arahan di atas, sistem akan memaparkan UID, GID dan GID pengguna semasa.

Sistem pengendalian Linux ialah sistem pengendalian sumber terbuka yang digunakan secara meluas yang menyediakan pengguna dengan pelbagai alatan baris arahan untuk membolehkan pengguna mengurus sistem dengan lebih mudah. Dalam sistem Linux, setiap pengguna mempunyai pengecam pengguna unik (UserID, UID) dan pengecam kumpulan (GroupID, GID). Memahami UID dan GID pengguna adalah sangat penting untuk pengurusan sistem dan pengurusan kebenaran fail Artikel ini akan memperkenalkan beberapa teknik untuk melihat UID dan GID pengguna untuk mengurus sistem Linux dengan lebih baik.

UID bukan nombor akaun, tetapi singkatan Pengenalan Pengguna Ia adalah nilai yang dijana secara automatik oleh sistem apabila mendaftar pada platform rangkaian Selepas pengguna UID mendaftar pada platform rangkaian, sistem akan memberikan anda nilai UID secara automatik. yang bermaksud memberi nama ini Pengguna memberikan nombor.
