网络协议-Web安全漏洞
1. XSS跨站脚本攻击
答:XSS(Cross-Site Scripting)跨站脚本攻击,通过在用户提交数据中加入恶意代码,从而破坏页面结构,盗取用户资料等。XSS利用用户对网站的信任。
1.1 产生原因
答:过分信任客户端数据,没有对数据进行过滤和转移。
1.2 分类
答:分为:
- 存储型:恶意代码放在数据库中,每次Server响应Client请求时返回并执行;
- 反射型:恶意代码加在URL中作为参数提交,Server解析响应,恶意代码存在结果中;
- DOM型:前端JS的漏洞,恶意代码在Client执行。
1.3 防御
答:简单方法:
- 过滤特殊字符,比如将<转义为<。
- 对重要cookie设置httpOnly,防止前端通过document获得。
2. CSRF跨站请求伪造
答:CSRF(Cross-site request forgery)跨站请求伪造,通过恶意网站伪装成受信任用户进行请求访问获取数据。恶意网站只能冒用cookie,不能获得cookie。CSRF利用网站对Client的信任。
2.1 过程
2.2 防御
答:常用方法:
- Referer字段验证:不适用,Referer能被篡改。HTTP头中用Referer字段记录请求的源地址。
- Token验证:Server发给Client一个Token,Client发出带Token的请求,若Token不合法,则Server拒绝请求。
- 双重Cookie验证:Client将Cookie参数加入请求参数中,Server校验,若无附加的cookie参数则拒绝请求。
- 验证码:在用户进行敏感操作时,要求用户输入验证码。
2.3 XSS和CSRF区别
答:总结为:
- CSRF需要用户先登录网站A,恶意网站B再冒用用户在A的cookie。XSS不需要登录。
- CSRF本质是利用网站漏洞请求接口,XSS本质是注入恶意代码篡改内容。
3. SSRF服务端请求伪造
答:SSRF(Server-site request forgery)服务端请求伪造,通过Server使得外网能访问内网系统。
3.1 过程
3.2 原因
答:Server提供从其他服务器获取数据,但没有对地址做过滤限制。
3.3 防御
答:常用方法:
- 限制请求端口。保留常用HTTP端口。
- 设置IP黑名单。一经发现直接拉黑。
- 禁用不必要的协议。只保留HTTP和HTTPS。
- 过滤返回信息。
4. SQL注入
答:SQL注入指把SQL命令插入请求字符串或者页面提交中,欺骗Server执行。比如:
strSQL = “SELECT * FROM users WHERE (name = ‘1’ OR ‘1’=‘1’) and (pw = ‘1’ OR ‘1’=‘1’);” 获得用户信息。
4.1 防御
答:常用方法:
- 预编译语句。直接传入数据执行,避免进行SQL语句拼接。
- 对Client的输入进行类型检查。
5. DoS拒绝服务攻击
答:DoS(denial-of-service attack)拒绝服务攻击,亦称洪水攻击。目的是使目标电脑的网络或系统资源耗尽,迫使服务中断停止,导致用户无法访问。
DDos(distributed denial-of-service attack)分布式拒绝服务攻击,指攻击者使用两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动Dos。
5.1 分类
答:常见的有SYN Flood,Ping Flood,缓冲区溢出等。
5.2 防御
答:DoS攻击的防御方式因攻击方式而变化。
- SYN洪水攻击:通过发送大量半连接的请求耗尽资源。可以缩短SYN Timeout时间或者设置SYN cookie标识IP地址,短时间连续收到某个IP的重复SYN就认定受到攻击,将此IP地址拉黑。
- Ping Flood:原理差不多。只要Server禁止ping访问就可以防御。
图片来源:https://blog.nowcoder.net/n/a3776d83a8014f618dc50e78bcc95b53