Laravel 5.8 被曝安全漏洞(已修复)
转载自 Facebook 传送门
https://blog.laravel.com/unique-rule-sql-i...
https://github.com/laravel/framework/pull/...
简单来讲在台湾时间 2019/03/20 时 laravel 5.8 被安全测试人员报告说有安全漏洞,这个漏洞已经在最新的 commit 修正了。
reddit 战成一团,不过战错地方了,详情可以参考上面那个 pr 连接,taylorotwell 有亲自说明成因。
我下面会详细说明有错请指正:
这个漏洞的成因来自于:
https://learnku.com/docs/laravel/5.8/validation#ru...
乍看之下没啥问题,问题是出在于你想要自定义他的时候。
Rule::unique('users')->ignore($request->input('id'))
乍看之下也没啥问题,pdo binding value 会 escape。但请注意看文件说明:他可以自定义 table column ignore
laravel 会藉由,去区分 table column ignore,而 pdo 并不会去 escape column,所以你可以在 request 做 sql injection,比如像是 * from users;insert XXXX,3
laravel 会因为看到,以为你有自定义 column 把它放到 column 那边,这样就可以达到 sql injection。
推荐文章: