csrf(Cross-site request forgery)跨站请求伪造
原理:
- 网站对用户的信任(比如用户在知乎登录成功,用户发请求带上token,后台就会通过)
- 欺骗诱导用户对目标站点发送请求(比如你在其他网站上,有一个连接,“如何学习编程 http://zhihu/api/answer/del/xxxx”,当你点击了,就发送了一个GET请求)
如何构造 csrf 攻击:
- 伪造成网址,引诱用户点击
- 通过修改 <img> 等带有 src 属性的标签发送请求
- 通过 js 代码操作表单,发送数据
防御:
- 验证码,每次发送请求都进行验证
- token,每次生成的链接都带上一个随机 token,发送给服务器再进行验证是否本人发送
xss 跨站脚本攻击
原理:
- 往页面加入一段 script 标签包着的 js 代码,浏览器就会解析运行这段代码
- 如果一不小心被其他人在自己正在登陆的页面中注入了代码,他就有可能拿到 cookie,伪装成自己的身份了
如何构造 xss 攻击:
- 在页面的输入框中输入带有 <script> 标签的代码
防御:
- 转义,使 js 代码变为普通的文本
- 保护好 cookie,不让其他人在页面中拿到