51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

请列举至少3种Web应用中常见的安全漏洞,并说明每种漏洞的原理、常见触发场景以及如何通过代码审计或开发时避免。

360安全开发初级工程师难度:中等

答案

1) 【一句话结论】Web应用常见安全漏洞如SQL注入、XSS、CSRF,需从“输入验证-输出编码-请求校验”三原则防范,核心是阻断攻击者通过恶意输入篡改系统行为。

2) 【原理/概念讲解】

  • SQL注入:攻击者通过恶意输入绕过应用对用户输入的验证,将非法SQL片段注入到数据库查询中,导致数据库执行非预期的操作(如查询所有数据、删除表)。例如,用户输入“' or 1=1 -- ”,原本查询“select * from users where username='admin'”变成“select * from users where username='admin' or 1=1 -- ”,返回所有用户。触发场景是应用直接拼接SQL语句或未过滤特殊字符(如单引号、分号)。
  • XSS(跨站脚本):将恶意脚本注入到网页中,当用户访问该页面时,脚本在用户浏览器中执行(如窃取Cookie、重定向到钓鱼网站)。例如,用户输入“<script>alert('XSS')</script>”,页面渲染时执行alert。触发场景是应用对用户输入未做输出编码,直接输出到页面(如用户名、评论内容)。
  • CSRF(跨站请求伪造):攻击者诱导已登录用户在当前会话中执行非授权操作,因为请求包含用户的会话令牌(如Cookie),服务器无法区分请求是否来自用户本人。例如,攻击者发送伪造的POST请求到“/logout”,包含用户Cookie,服务器执行注销。触发场景是表单提交时未校验请求来源或会话状态(如Referer伪造、Cookie未设置SameSite)。

3) 【对比与适用场景】

漏洞类型定义原理常见触发场景防御方法
SQL注入攻击者通过恶意输入注入SQL语句,篡改数据库操作绕过输入验证,拼接非法SQL直接拼接SQL、未过滤特殊字符参数化查询、ORM、输入验证
XSS注入恶意脚本到网页,在用户浏览器执行输入未编码直接输出未对用户输入编码、模板引擎不安全输出编码、安全模板引擎、CSP
CSRF诱导已登录用户执行非授权操作请求包含会话令牌,服务器无法区分表单提交未校验来源、Referer伪造CSRF token、Referer检查、SameSite Cookie

4) 【示例】

  • SQL注入:用户输入“' or '1'='1”,查询“select * from users where username='admin' and password='123'”变成“select * from users where username='admin' and password='123' or '1'='1'”,返回所有用户。
  • XSS:用户输入“<script>alert('XSS')</script>”,页面渲染时执行alert。
  • CSRF:攻击者发送POST请求到“/logout”,包含用户Cookie(如JSESSIONID=abc123),服务器执行注销操作。

5) 【面试口播版答案】
面试官您好,我列举三种常见Web安全漏洞:SQL注入、XSS、CSRF。首先SQL注入,原理是攻击者通过恶意输入绕过应用对用户输入的验证,将非法SQL片段注入到数据库查询中,导致数据库执行非预期操作。比如用户输入“' or 1=1 -- ”,原本查询“select * from users where username='admin'”变成“select * from users where username='admin' or 1=1 -- ”,返回所有用户。触发场景是应用直接拼接SQL语句或未过滤特殊字符。避免方法是使用参数化查询(预编译语句)或ORM框架,避免手动拼接SQL。然后XSS,原理是将恶意脚本注入到网页中,当用户访问时在浏览器执行,可窃取Cookie或重定向。比如用户输入“<script>alert('XSS')</script>”,页面渲染时执行alert。触发场景是应用对用户输入未做输出编码,直接输出到页面。避免方法是对用户输入进行HTML实体编码,使用安全的模板引擎(如Thymeleaf)。最后CSRF,原理是攻击者诱导已登录用户在当前会话中执行非授权操作,因为请求包含用户的会话令牌,服务器无法区分请求是否来自用户本人。比如攻击者发送伪造的POST请求到“/logout”,包含用户Cookie,服务器执行注销。触发场景是表单提交时未校验请求来源或会话状态。避免方法是用CSRF token(在表单中添加隐藏字段)、验证Referer头、使用SameSite属性(如Strict)。

6) 【追问清单】

  • 问题1:SQL注入的防御是否只靠参数化?
    回答要点:不是,还需输入验证(如白名单过滤)和输出编码(如数据库查询结果输出)。
  • 问题2:XSS的存储型、反射型和DOM型有什么区别?
    回答要点:存储型是恶意脚本存储在数据库中,反射型是脚本随响应返回,DOM型是脚本通过DOM操作注入。
  • 问题3:CSRF的防御方法中,SameSite属性的作用是什么?
    回答要点:SameSite=Strict时,Cookie仅在原站请求中发送,防止CSRF;SameSite=Lax时,允许GET请求发送Cookie。
  • 问题4:如何区分SQL注入和命令注入?
    回答要点:SQL注入针对数据库,命令注入针对操作系统(如Windows的cmd.exe)。
  • 问题5:XSS的防范中,内容安全策略(CSP)的作用是什么?
    回答要点:CSP限制页面加载的资源,防止加载恶意脚本。

7) 【常见坑/雷区】

  • 坑1:认为SQL注入只发生在数据库操作,忽略其他组件(如文件系统、命令执行)。
  • 雷区2:混淆XSS和CSRF,认为两者都是注入漏洞。
  • 坑3:忽略CSRF的前端防护,只讲后端token。
  • 雷区4:认为参数化查询能完全解决SQL注入,忽略输入验证。
  • 坑5:对XSS的防范只讲输出编码,忽略输入验证和模板引擎安全。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1