面试题答案
一键面试1. 中间人攻击
- 原理:攻击者介入通信双方,拦截并篡改通信数据。在HTTPS通信中,攻击者伪装成服务器向客户端发送伪造的证书,客户端如果未严格验证证书合法性就会信任该证书,攻击者就能解密、修改和重新加密数据后再转发给服务器,从而实现窃听与篡改。
- 防范措施:
- 严格证书验证:客户端要验证证书颁发机构(CA)的合法性,检查证书是否被吊销,证书中的域名是否与访问的域名一致等。
- 证书钉扎:客户端预先保存服务器公钥或证书的哈希值,每次通信时对比收到的证书哈希值与预存值,若不一致则拒绝连接。
- 后端开发确保安全性方法:
- 使用可靠CA颁发的证书:从受信任的证书颁发机构获取证书,确保证书在互联网上被广泛认可。
- 及时更新证书:避免证书过期导致客户端信任问题,同时防止因旧证书存在已知漏洞而被攻击。
2. SSL剥离
- 原理:攻击者干扰HTTP与HTTPS之间的切换机制。当客户端尝试从HTTP升级到HTTPS时,攻击者阻止升级,使通信保持在不安全的HTTP层面,从而能轻易窃听和篡改数据。攻击者一般通过ARP欺骗等手段,拦截客户端请求,去掉HTTP响应头中的
Strict - Transport - Security
(HSTS)等强制HTTPS连接的指令。 - 防范措施:
- 启用HSTS:服务器在响应头中添加HSTS字段,告知浏览器在一定时间内始终通过HTTPS访问该网站,即使攻击者去掉HSTS指令,浏览器仍按HSTS策略进行HTTPS连接。
- HTTP严格重定向到HTTPS:服务器配置将所有HTTP请求重定向到HTTPS,确保通信始终在安全协议上进行。
- 后端开发确保安全性方法:
- 正确配置HSTS:设置合适的HSTS有效期和其他参数,避免因设置不当导致兼容性问题或安全风险。
- 定期检查重定向配置:确保HTTP到HTTPS的重定向机制正常工作,防止因配置错误而使攻击者有机可乘。
其他安全漏洞及防范
- 心跳漏洞(Heartbleed):
- 原理:OpenSSL库实现心跳扩展时存在缺陷,攻击者可通过构造畸形心跳请求,读取服务器内存中的敏感信息,如私钥等。
- 防范措施:及时更新OpenSSL库到安全版本,定期检查服务器使用的库版本及安全性。后端开发中在引入相关库时,关注库的安全性和更新情况。
- POODLE漏洞:
- 原理:攻击者利用SSL 3.0协议的Padding Oracle On Downgraded Legacy Encryption漏洞,通过多次尝试解密受保护的内容,获取加密数据。
- 防范措施:禁用SSL 3.0协议,优先使用TLS 1.2及以上版本。后端开发时正确配置服务器支持的加密协议版本,避免使用存在已知漏洞的协议。