我先自爆个黑历史,刚毕业实习那会做后端,跟着老大做了个社区团购的小项目,我负责用户中心模块,当时觉得不就是个给小县城用的项目,哪来那么多黑客,请求伪造防护这种东西,开不开都无所谓,省两行代码早点下班不好吗?结果你猜怎么着?上线第三天,就被人刷走了一万多块钱的新人优惠券,老板站在我工位旁边脸都绿了,我熬夜三天补所有安全漏洞,那滋味,现在想起来头还疼。所以今天说的全是我踩过坑摸出来的经验,放心看,没废话。
咱不说那些绕人的术语,就把你做的网站当成你开的社区奶茶店,你开门做生意,客人给你下单,你做单收钱对吧?那请求伪造是什么?就是坏人造了一张假的「积分兑换免费奶茶」的订单,直接塞给你的收银台,你没做请求伪造防护,分辨不出来真假,就给人做了奶茶,坏人白嫖,你亏本钱。
说的再具体点,常见的请求伪造分两种,都是坏人常用的套路:一种是跨站请求伪造CSRF,就是坏人把假订单藏在乱七八糟的网站里,只要用户之前登录过你的网站,一点开坏人的网站,假订单就偷偷发给你了,我当年被薅优惠券,就是栽在这个上面;另一种是服务端请求伪造SSRF,这个更狠,相当于坏人哄着你家的厨师(就是你的服务端),帮他去你家后台仓库偷原料,因为厨师是内部人,仓库不对外面开门,但对内部开啊,没做请求伪造防护,人家直接把你数据库密码都偷走。
所以你看,请求伪造防护说白了就是你收银台的验票机,就是你店门的锁,没有这个东西,你就是开了个不锁门的店,扫端口的黑客一抓一个准,专薅你这种没防护的软柿子。
我也不给你整那些高大上的玄学方案,就给你说普通人做开发就能直接用的,成本低效果好,都是我试过靠谱的。
第一步:开框架自带的Token验证,这是核心
还是奶茶店的比方,Token就是你给每个订单生成的独一无二的暗号,只有你家系统能做出来,坏人伪造不了,你收单先对暗号,对不上直接踢出去,就这么简单。现在不管是SpringBoot、Django还是Express,全都自带请求伪造防护的Token功能,你只要加个配置开一下就行,都不用你自己写代码,我当年就是懒,没开这个配置,才出的事,听我的,只要做带用户登录的网站,这个直接开,别犹豫。

第二步:开SameSite Cookie,成本最低收益最高
这个更简单,就是给你的Cookie加个SameSite属性,告诉浏览器,这个Cookie只能在你自家网站用,别的网站发请求带不出来,坏人自然就伪造不了请求了,改一行配置的事,属于请求伪造防护里躺赚的操作,为啥不做?
第三步:Referer校验当辅助,双保险更稳
这个就是查一下订单是不是从你自家网站出来的,不是就不认,适合小型项目再加一层防护,缺点就是有些浏览器会藏Referer,容易误杀好人,所以当个备胎就行,核心还是前两个。
SSRF的核心就是坏人让你服务端访问不该访问的内网地址,所以请求伪造防护的核心就是拦,把不该访问的全拦住,就完事了:
很多刚入行的朋友跟我当年一样,觉得我就是做个小项目、练手项目,做什么请求伪造防护,纯浪费时间,对吧?我跟你说,真不是这样,现在网上扫端口扫漏洞的机器人一抓一大把,不管你网站大小,只要挂在公网上,人家不到一小时就能扫到,你没锁门,人家不薅你薅谁?
而且现在请求伪造防护根本不需要你从头写,所有主流框架都给你写好了,你多花十分钟开配置、加过滤,就能把绝大多数请求伪造攻击挡在门外,这不比你事后被黑了,熬夜删垃圾数据、赔老板钱香?
做开发这行,赚的就是稳当钱,你把该做的防护做了,晚上回家睡觉都踏实,不用怕第二天一醒,服务器被人搞了,数据被人偷了。反正我帮你踩过请求伪造防护的坑了,上面这些操作都是最简单最靠谱的,你照着做,基本就没什么大问题了,踏实得很。












易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图