PHP知名开发框架Laravel,之前在官方博客通报了一个高危SQL注入漏洞,这里简单分析下。
首先,这个漏洞属于网站coding写法不规范,官方给了提示:
但官方还是做了修补,升级最新版本V5.8.7可修复。
我们先定位下这里:
Illuminate\Validation\Rule
官方推荐的写法是:
Rule::unique('users')->ignore($id),
如果网站coding没有预先对$id的值做处理时,用户可以直接传递恶意数据给ignore函数,就会导致SQL注入。
我们来跟一下函数:
\Illuminate\Validation\Rules\Unique.php class Unique { ... public function ignore($id, $idColumn = null) { if ($id instanceof Model) { return $this->ignoreModel($id, $idColumn); } $this->ignore = $id; $this->idColumn = $idColumn ?? 'id'; return $this; }
这里我们不考虑把$id写成实例的情况,$id是用户可控的话,$idColumn直接写为空即可,最后赋值情况如下:
$this->ignore = $id; $this->idColumn = 'id';
如果网站代码类似这样构造的话,黑客输入的值就属于可控状态:
$id = $request->input('id');
最后我们会走到这儿:
Illuminate\Validation\Rules\Unique.php public function __toString() { ... ... }
我们看下关键的代码变更:
Illuminate\Validation\Rules\Unique.php V5.8.7【最新版】 public function __toString() { $this->ignore ? '"'.addslashes($this->ignore).'"' : 'NULL', } Illuminate\Validation\Rules\Unique.php V5.8.4 public function __toString() { $this->ignore ? '"'.$this->ignore.'"' : 'NULL', }
这里最新的代码v5.8.7,把$this->ignore直接给addslashes了,以前这里是没有防护的。
有趣的是,笔者对比了下diff,期间官方还试图对其他引用的地方进行过滤。最后还是在__toString处,进行了统一的过滤。
最后提一句,后面的代码会进入DatabaseRule,进行后续SQL规则匹配。
Illuminate\Validation\Rules\DatabaseRule.php
这之后就没有再进一步处理,接着形成了SQL注入。
更多Laravel相关技术文章,请访问Laravel框架入门教程栏目进行学习!
Atas ialah kandungan terperinci 浅析PHP框架Laravel最新SQL注入漏洞. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Migrasiinlaravelmanagedatabaseschema, pemantauan.1) MigrationsActasblePrucePrucePruceFordataBasestructure, membenarkan pengubahsuaian, pengubahsuaian, dandeletionoftables.2) ModelsRepresentDataandProvideanInterfaceForIntion, EnablingCrudoperations

SoftdeletesinlaravelareBetterformaintaininghistoricaldataandrecoverability, whilephysicaldeletesarepreferableFordataminimizationandprivacy.1) softdeletesusethesoftdeletestrait, membolehkanRecordRestorationAndaudtrails, tetapiMayincreasceSsize.2)

SoftdeletesinlaravaafeAtureTHATAllowsowarRarkRecordSassasSasdeletEldeletWithWithoVeVeMemFROMthedataBase.toimplementsoftdeletes: 1) addthesoftdeletSraittoyourmodelandInincludethedeletEldeleDeleteDeletEdeletEldeleDeleTeletEldeleDeleTeletEldeleDeleTeletEldeleDeluDeleDeleDeleDeleDeleDeleDeleDeleDeluTelEdeletEdeleteDeleDeleDeleDeleDeleDeluSteluSdeluSdeluSdelum.2)

LaravelmigrationsareeffectiveduetotheirversionControlandreversibility, streamliningdatabasemanagementinwebdevelopment.1) theencapsulateschemachangesinphpclass, membolehkanasyrollbacks.2) Migrationstrackexecutioninalinalinable, pencegahanDuplicateruns.3) mereka mereka

LaravelmigrationsareBestWhenFollowingThesepractics: 1) useclear, descriptivenamingformigrations, like'addemailtouserstable'.2) ensuremigrationsarereversiblewitha'down'method.3) PertimbangkanThebroaderimpactondateAdtaintegrityAntity.4)

Aplikasi satu halaman (SPA) boleh dibina menggunakan Laravel dan Vue.js. 1) Tentukan penghalaan dan pengawal API di Laravel untuk memproses logik data. 2) Buat front-end komponen di Vue.js untuk merealisasikan antara muka pengguna dan interaksi data. 3) Konfigurasikan CORS dan gunakan AXIOS untuk interaksi data. 4) Gunakan vuerouter untuk melaksanakan pengurusan penghalaan dan meningkatkan pengalaman pengguna.

Langkah -langkah untuk membuat fungsi penolong tersuai di Laravel adalah: 1. Tambah konfigurasi pemuatan automatik dalam komposer.json; 2. Jalankan ComposerDump-Autoload untuk mengemas kini Loader Automatik; 3. Buat dan tentukan fungsi dalam direktori aplikasi/pembantu. Fungsi -fungsi ini dapat memudahkan kod, meningkatkan kebolehbacaan dan kebolehkerjaan, tetapi memberi perhatian kepada penamaan konflik dan kesesuaian.

Apabila mengendalikan urus niaga pangkalan data di Laravel, anda harus menggunakan kaedah urus niaga DB :: dan memberi perhatian kepada perkara -perkara berikut: 1. Gunakan lockForupdate () untuk mengunci rekod; 2. Gunakan blok percubaan untuk mengendalikan pengecualian dan secara manual melancarkan atau melakukan transaksi apabila diperlukan; 3. Pertimbangkan prestasi transaksi dan memendekkan masa pelaksanaan; 4. Elakkan kebuntuan, anda boleh menggunakan parameter percubaan untuk mencuba semula transaksi. Ringkasan ini sepenuhnya meringkaskan cara mengendalikan transaksi dengan anggun di Laravel dan menyempurnakan titik teras dan amalan terbaik dalam artikel.


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

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
