XSS
黑客往网页里注入恶意脚本代码,当用户访问时获取到包含恶意代码的网页。通过恶意脚本,黑客可以获取和控制用户信息。
反射型XSS(非持久型)
诱导用户点击恶意链接来造成一次性攻击。
黑客把带有恶意脚本代码参数的URL地址发送给用户,用户点击此链接,服务端获取请求参数并且直接使用,服务器发射回结果界面。
- 反射型XSS攻击是一次性的,必须通过用户点击链接才能发起。
- 一些浏览器如Chrome,内置了一些XSS过滤器,可以防止大部分反射型XSS攻击。
- 反射型XSS其实就是服务器没有对恶意的用户输入进行安全处理就直接反射响应内容,导致恶意代码在浏览器中执行的一种XSS漏洞。
存储型XSS(持久型)
黑客将代码存储到漏洞服务器中,用户浏览相关页面发起攻击。
黑客将恶意脚本代码上传或存储到漏洞服务器,服务器会把恶意脚本保存。当正常客户访问服务器时,服务器会读取恶意数据并直接使用。
存储型XSS危害更大。
基于DOM的XSS
在web资源传输过程中或用户使用页面过程中修改页面数据。如网络劫持、WiFi路由劫持、本地恶意软件等。
payload
实现XSS攻击的恶意脚本被称为XSS payload。
危害:
1、窃取用户的cookie document.cookie
2、识别用户浏览器 navigator.userAgent
3、伪造请求get post
4、XSS钓鱼,通过XSS向网页注入钓鱼链接,让用户访问假冒的网站。
XSS防御
- 给cookie设置httpOnly属性,脚本无法读取该cookie,自己也不能使用。
- 服务器端过滤
- URL编码 encodeURI encodeURIComponent
- HTML编码 如 < >
- JS 转义 特殊字符
- 输入检查
- 验证码
CSRF 跨站请求伪造
用户A登录银行网站,登录后会设置cookie。黑客诱导用户A登录到黑客的站点,然后返回一个页面。用户访问这个页面时,这个页面会伪造一个转账请求到银行网站。
利用用户的登录态和服务器漏洞,通过第三方站点来做一些坏事。
攻击方式
- 自动发起get请求
- 自动发起post请求
- 引诱用户点击链接
CSRF 攻击的三个必要条件
1、目标站点一定有CSRF漏洞。
2、用户登录过目标站点,并在浏览器上保持该站点的登录态。
3、需用户打开一个第三方站点。
防御
- 验证码,二次密码校验
- 跨站请求使用refer验证、origin属性验证 不可靠 因为refer可伪造
- token — 目前最主流的CSRF防御。
- 利用好cookie的samesite属性
DDOS攻击
分布式拒绝服务攻击
黑客控制大量的肉鸡向受害主机发送正常请求,导致目标主机资源耗尽不能为合法用户提供服务。
防御
- 验证码
- 限制每个客户端请求频率。
- 增加机器、增加服务带宽
- 设置分布式服务,防止单点失效
- 使用主流云系统和CDN
- 优化资源使用提高web server的负载能力
安全防护原则
- 不轻信任何数据(用户输入,后台返回)
- 慎用公共CDN资源
- 慎用第三方服务JSONP接口
- 转义 (HTML、JS、富文本输入)
- 配置安全协议头
- 使用HTTPS