游客发表

web安全面试题

发帖时间:2026-10-17 04:50:55

面试一个后端候选人,全面简历写着“精通Web安全”。试题我问他:用户上传头像功能,全面你怎么防GetShell?试题他愣了一下,说“限制文件后缀名”。全面我又问:那如果对方传的试题是`.htaccess`呢?他沉默。再问:如果服务器是全面Nginx,你只允许`.jpg`,试题但Nginx配置里有个`location ~ \.php$`的全面解析漏洞,你怎么办?试题他彻底不说话了。

这不是全面个例。很多人把Web安全等同于“SQL注入加XSS”,试题背完OWASP Top 10就觉得自己会了。全面实际面试里,试题面试官只需要两三个场景题,全面就能把背题的人筛干净。

先说SQL注入。面试官问你“预编译为什么能防注入”,你答“因为参数不参与SQL拼接”——对,但不够。他接着问:如果预编译语句里表名是动态的,比如`SELECT * FROM ? WHERE id=1`,还能防吗?不能。表名、列名、ORDER BY后面的字段,预编译都处理不了。这时候要么白名单校验,要么用`quote`函数转义。我见过一个真实案例:某电商搜索接口用`ORDER BY ${ sortField}`排序,前端传`price`正常,攻击者传`price,(select case when (select count(*) from users)>0 then 1 else 1/0 end)`,直接布尔盲注。预编译救不了这种写法。

XSS的面试题更爱挖坑。问“HttpOnly能防XSS吗”,标准答案是“不能,只能防Cookie被JS读取,XSS本身还在”。但面试官会追问:那如果Cookie设了HttpOnly,攻击者还能干什么?能干的事多了——发请求、改页面、钓鱼、键盘记录。我遇到过一道题:某后台只有管理员能访问,但存在存储型XSS,攻击者怎么利用?答案不是偷Cookie,而是用XSS发一个添加管理员的请求,因为管理员登录态还在,CSRF Token也能从页面里读出来。HttpOnly挡不住这个。

CSRF现在问得少了,但一问就是细节。问“SameSite=Lax能防CSRF吗”,能防一部分。Lax模式下,跨站POST不带Cookie,但跨站GET带。如果接口用GET做敏感操作——比如`GET /delete?id=1`——Lax就废了。更坑的是,Lax不区分顶级导航和子资源请求,有些浏览器行为不一致。我面试时喜欢问:Token放Cookie里,再让前端读出来放到Header里,这算双重提交吗?算,但前提是Cookie得是SameSite=Strict或者独立域名。否则攻击者可以用自己的站点发请求,浏览器自动带Cookie,Token也被带上了,等于没防。

文件上传是重灾区。限制后缀?黑名单永远漏。`.phtml`、`.php5`、`.phar`、`.htaccess`,甚至`.user.ini`都能搞事。白名单也不安全——如果服务器是Apache,你允许`.jpg`,但`AddHandler application/x-httpd-php .jpg`一配,图片直接当PHP跑。更隐蔽的是二次渲染:图片马在GD库处理后,恶意代码可能被裁掉,但攻击者可以用`exif`字段藏代码,配合`include`漏洞。我见过一个CTF题:上传`.htaccess`文件,内容写`AddType application/x-httpd-php .png`,然后传一个`.png`的webshell,直接GetShell。

SSRF面试题现在喜欢结合云环境。问“怎么防SSRF”,答“限制协议、限制IP”。面试官会问:如果对方用`http://169.254.169.254/latest/meta-data/`拿AWS临时凭证呢?你限制内网IP,但`169.254.169.254`是链路本地地址,很多防火墙规则会漏。还有DNS重绑定:攻击者控制一个域名,第一次解析到公网IP让你校验通过,第二次解析到内网IP发起请求。防御得用`curl`的`--resolve`固定IP,或者自己实现DNS缓存加校验。

面试官最后常问一句:“你实际挖过什么漏洞?”背题的人答“我复现过靶场”。真正干过的人会说:“某次测试发现登录接口返回包里有`Set-Cookie: token=xxx`,但token是base64的`user:role`,我改成admin就越权了。”或者“某系统密码重置用手机号,但验证码校验后没绑定会话,我A手机收码,B手机重置,直接接管。”这些细节,背不出来。

Web安全面试,考的不是你记得多少漏洞名字,而是你遇到一个陌生场景时,能不能想到数据流从哪里进、经过哪些处理、最终到哪里去。想清楚这条链路,漏洞自然就出来了。

    热门排行

    友情链接