当前位置:首页 > 焦点

web安全技术论文

2023年某电商平台被拖库,全技2100万条用户记录在暗网挂售。术论攻击者没用什么零日漏洞,全技就是术论拿一个未授权的API接口,配合撞库,全技把数据一点点搬走了。术论这事让我意识到,全技web安全的术论核心矛盾从来没变过:开发者想让数据流动起来,攻击者想让数据流到自己兜里。全技

SQL注入是术论最老的漏洞之一,但每年OWASP Top 10它都在。全技原因很简单——拼接字符串写SQL太顺手了。术论很多教程为了省事,全技直接"SELECT * FROM users WHERE id=" + id,术论学生照着学,全技进了公司也这么写。参数化查询能解决,可总有人觉得“我做了输入过滤”。过滤这东西,黑名单永远漏。你禁了单引号,人家用编码绕过;你禁了union,人家用union/**/select。我见过一个系统,WAF规则写了三百多条,最后被一个/*!50000union*/打穿。防御思路不应该是“堵住所有坏东西”,而是“只让好东西通过”。

XSS的战场早就不在弹窗了。现在更值钱的是窃取Token和会话。存储型XSS在社交平台尤其致命——一个人发帖,所有浏览者中招。React和Vue默认转义确实降低了风险,但dangerouslySetInnerHTML和v-html就是专门开的后门。去年有个CMS,富文本编辑器过滤了<script>,但没过滤<img src=x onerror=alert(1)>。修复方式也粗暴:白名单标签,属性只留src和alt。有效,但产品经理会跟你吵架,因为用户想加粗字体。

CSRF现在被SameSite Cookie压下去不少。Chrome默认Lax之后,跨站POST请求不带Cookie,很多老漏洞自然失效了。但Lax不是万能的——顶级导航的GET请求仍然带Cookie。有个银行转账接口用GET,参数是?to=xxx&amount=1000,SameSite拦不住。更隐蔽的是JSON CSRF,利用Content-Type: text/plain绕过预检,配合Flash时代遗留的crossdomain.xml。防御靠Token,但Token放URL里会被Referer泄露,放LocalStorage又怕XSS。安全就是个跷跷板。

SSRF是我最近关注最多的。云原生架构下,一个url参数没校验,攻击者就能访问169.254.169.254拿云主机的临时凭证。Capital One那事就是这么干的。修复建议是白名单域名,但业务方说“用户要填任意图片地址”。折中方案是DNS重绑定防护加内网IP黑名单,可IPv6地址、十进制IP、八进制IP都能绕过黑名单。我现在的做法是:出站请求走代理,代理层做协议和IP双重校验。麻烦,但比被挖矿强。

文件上传漏洞的经典绕过是shell.php.jpg。Nginx配置不当会把.jpg当PHP解析。更骚的是.htaccess上传,直接让服务器把.txt当PHP跑。防御要三件事:白名单扩展名、重命名文件、存储目录不给执行权限。少一件都可能翻车。有次渗透测试,我传了个1.php被拦了,改成1.php%00.jpg,后端截断后存成1.php。PHP 5.3之后修复了,但老系统还在跑。

JWT的问题在于“签名”不等于“加密”。很多人把敏感信息塞payload里,以为Base64是加密。更糟的是alg: none攻击——把算法改成none,签名留空,服务端如果信任alg头就直接放行。还有弱密钥爆破,secret设成123456,hashcat几秒跑出来。正确做法是固定算法、强密钥、短过期。但短过期用户体验差,于是又上Refresh Token,复杂度上去了,漏洞面也大了。

我自己的习惯:写代码时假设所有输入都是恶意,输出时假设所有数据都要转义。安全不是加个WAF就完事,WAF只能挡脚本小子。真正的对抗在代码逻辑里,在架构设计里。每次Code Review,看到eval、exec、system就条件反射地皱眉。这行干久了,看什么都像漏洞。

分享到: