面试题答案
一键面试可能存在的安全漏洞
- CORS错误配置导致的安全隐患:
- 允许所有来源访问:若在CORS配置中设置
Access - Control - Allow - Origin
为*
,恶意网站可能利用此漏洞发起跨域请求,获取敏感数据。例如,一个银行网站错误配置CORS允许所有来源访问,恶意网站可通过跨域请求获取用户账户信息。 - 错误设置允许的方法:若CORS配置中错误允许了不必要的HTTP方法(如
DELETE
、PUT
),攻击者可利用这些方法对服务器资源进行恶意操作。比如,攻击者可跨域发送DELETE
请求删除服务器上的重要数据。
- 允许所有来源访问:若在CORS配置中设置
- 跨域脚本攻击(XSS):
- 反射型XSS:攻击者通过诱使用户访问包含恶意脚本的URL,当服务器将恶意脚本反射给用户浏览器时,脚本在用户浏览器中执行,可窃取用户会话Cookie、进行钓鱼攻击等。例如,用户点击了一个看似正常的链接,但链接中包含恶意脚本,该脚本在用户访问的网站页面中执行。
- 存储型XSS:攻击者将恶意脚本存储在服务器端,当其他用户访问该页面时,恶意脚本会在其浏览器中执行。常见于留言板、评论区等可输入内容的地方,攻击者在留言中插入恶意脚本,其他用户浏览留言时脚本执行。
防范策略
- 前端安全措施:
- 严格验证输入:在前端对用户输入的数据进行严格的验证和过滤,防止恶意脚本注入。例如,使用正则表达式过滤掉
<script>
标签等危险字符。 - 设置HTTPOnly Cookie:通过设置
document.cookie
的httponly
属性为true
,可防止JavaScript脚本访问Cookie,降低XSS攻击窃取Cookie的风险。 - 内容安全策略(CSP):通过设置
Content - Security - Policy
HTTP头,限制页面可以加载的资源来源。例如,只允许从特定域名加载脚本,可有效防止XSS攻击。如设置Content - Security - Policy: script - src'self'
只允许从当前域名加载脚本。
- 严格验证输入:在前端对用户输入的数据进行严格的验证和过滤,防止恶意脚本注入。例如,使用正则表达式过滤掉
- 后端安全措施:
- 正确配置CORS:
- 明确指定允许的来源,而不是使用
*
。例如,在Node.js中使用cors
中间件时,可配置app.use(cors({origin: 'http://allowed - domain.com'}))
。 - 限制允许的HTTP方法,只允许必要的方法,如
GET
、POST
等。
- 明确指定允许的来源,而不是使用
- 输入验证和转义:对来自用户的输入在后端进行再次验证和转义,防止恶意数据进入数据库。例如,在使用SQL数据库时,使用参数化查询,防止SQL注入攻击的同时也可辅助防止XSS攻击。
- 验证请求来源:在后端验证请求的来源是否合法,可通过检查
Origin
或Referer
头信息,但需注意Referer
头信息可被伪造。
- 正确配置CORS:
- 安全测试和监控:
- 安全测试:
- 渗透测试:模拟攻击者的行为,使用工具如OWASP ZAP对应用进行全面的安全测试,检测是否存在跨域安全漏洞。
- 代码审查:定期对前端和后端代码进行审查,检查是否存在未处理的跨域风险点,如未验证的输入、错误的CORS配置等。
- 监控:
- 日志监控:记录所有的跨域请求和异常行为,通过分析日志及时发现潜在的安全威胁。例如,记录CORS错误配置导致的跨域请求失败日志,以及异常的XSS攻击尝试日志。
- 实时监控工具:使用实时监控工具,如New Relic等,监控应用的运行状态,及时发现异常的跨域流量或脚本执行行为。
- 安全测试: