
1. Web安全工程师面试核心考点解析作为从业十年的安全工程师我面试过上百名候选人发现80%的求职者在Web安全基础问题上栽跟头。今天我们就来深度拆解面试必考的五大漏洞类型SQL注入、XSS、CSRF、SSRF和XXE。这些知识点不仅是面试高频考点更是日常安全防护的重中之重。2. SQL注入攻防实战2.1 注入原理与危害SQL注入的本质是通过构造特殊输入改变原始SQL语句的逻辑结构。去年某电商平台就因订单查询接口存在注入漏洞导致百万用户数据泄露。常见攻击手法包括联合查询注入 UNION SELECT username, password FROM users--布尔盲注admin AND 1CONVERT(int, (SELECT table_name FROM information_schema.tables))--时间盲注1; IF(SYSTEM_USERsa) WAITFOR DELAY 0:0:5--2.2 防护方案对比防护方案原理适用场景优缺点预编译语句SQL与参数分离所有数据库操作100%防注入需改造代码存储过程业务逻辑封装在数据库复杂业务场景性能好维护成本高ORM框架对象关系映射新项目开发开发快学习曲线陡输入过滤关键字黑名单遗留系统临时方案易被绕过不推荐实战经验MyBatis的#{}和${}要严格区分我曾遇到开发混用导致注入的案例。参数化查询才是终极解决方案。3. XSS跨站脚本攻防体系3.1 三种XSS类型对比反射型恶意脚本随URL参数即时执行http://example.com/search?qscriptalert(1)/script存储型恶意脚本存入数据库长期生效textareaimg srcx onerrorstealCookie()/textareaDOM型前端JS动态解析导致执行document.write(location.hash.slice(1))3.2 企业级防护方案CSP策略配置示例Content-Security-Policy: default-src self; script-src unsafe-inline cdn.example.comSpringBoot防XSS实践Bean public FilterRegistrationBeanXssFilter xssFilter() { FilterRegistrationBeanXssFilter registration new FilterRegistrationBean(); registration.setFilter(new XssFilter()); registration.addUrlPatterns(/*); return registration; }前端转义库选型DOMPurifyjs-xssOWASP ESAPI4. CSRF跨站请求伪造防护4.1 攻击场景还原攻击者构造恶意页面img srchttp://bank.com/transfer?tohackeramount1000000 width0 height0当已登录用户访问该页面时资金自动转出。4.2 防护方案实现Spring Security配置Override protected void configure(HttpSecurity http) throws Exception { http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()); }双重Cookie验证// 前端 fetch(/api/transfer, { headers: { X-CSRF-TOKEN: getCookie(csrf_token) } })关键操作二次验证短信验证码密码确认生物识别5. SSRF服务端请求伪造5.1 漏洞利用链探测内网服务http://vuln.com/api?urlhttp://127.0.0.1:8080/admin云元数据泄露http://vuln.com/api?urlhttp://169.254.169.254/latest/meta-data/文件协议读取http://vuln.com/api?urlfile:///etc/passwd5.2 防护方案进阶请求目标过滤ALLOWED_DOMAINS [api.example.com] if parsed_url.netloc not in ALLOWED_DOMAINS: raise ValueError(Invalid URL domain)DNS重绑定防护解析域名后立即使用IP禁止DNS缓存网络层隔离内网服务设置ACL关键服务启用双向认证6. XXE外部实体注入6.1 漏洞利用方式!DOCTYPE foo [ !ENTITY xxe SYSTEM file:///etc/passwd ] userxxe;/user6.2 Java防护方案DocumentBuilderFactory dbf DocumentBuilderFactory.newInstance(); dbf.setFeature(http://apache.org/xml/features/disallow-doctype-decl, true); dbf.setFeature(http://xml.org/sax/features/external-general-entities, false); dbf.setFeature(http://xml.org/sax/features/external-parameter-entities, false);7. 面试实战技巧7.1 漏洞排查checklistSQL注入所有数据库交互是否使用预编译动态SQL是否做字段白名单校验XSSCSP策略是否配置富文本是否经过严格过滤CSRF关键操作是否有Token保护GET请求是否用于数据修改7.2 高频面试题解析Q如何设计安全的用户认证系统 A需要分层防御传输层强制HTTPSHSTS存储层bcrypt加密盐值会话层JWT短期有效Refresh Token操作层关键操作二次验证Q发现SSRF漏洞如何深入利用 A典型利用链扫描内网存活主机访问云元数据接口攻击Redis等内存数据库通过gopher协议执行RCE8. 靶场环境搭建建议8.1 本地实验环境DVWADamn Vulnerable Web AppWebGoatOWASP Juice Shop8.2 在线练习平台PortSwigger Web Security AcademyHack The BoxCTFshow Web关卡我曾用DVWA给团队做培训时发现90%的开发在不知道答案的情况下无法通过黑盒测试发现存储型XSS漏洞。这提醒我们安全不能靠猜测必须系统化学习。