这是我参与「第四届青训营 」笔记创作活动的的第6天。
Web开发安全:
一.攻击
1.CSRF
CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。
CSRF的特点
- 攻击一般发起在第三方网站。
- 攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作。
2.XSS
Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息,进而危害数据安全。为了和 CSS 区分,这里把攻击的第一个字母改成了 X,于是叫做 XSS。
XSS 的本质是:恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。
3.Injection
a. SQL Injection
SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。
b. CLI
命令行注入。
c. OS command
系统命令。
d. Server - Side Request Forgery(SSRF)
服务端伪造请求,严格来说,SSRF不是Injection但是原理类似
4.DOS攻击
DOS攻击是利用程序漏洞一对一的执行资源耗尽的Denial of Service拒绝服务攻击。
攻击特点:
- 直接访问IP
- 任意API
- 消耗大量API
二.防护
1.CSRF
1.阻止不明外域访问
- 同源检测
使用Origin Header确定来源域名和使用Referer Header确定来源域名。
2.提交时附加本域才能获取的信息
- CSRF Token
本页面请求时携带Token。
2.XSS
1.过滤用户的恶意代码
2.对HTML充分转义
3.代码和数据分开
4.在使用 .innerHTML、.outerHTML、document.write() 时要特别小心,不要把不可信的数据作为 HTML 插到页面上,而应尽量使用 .textContent、.setAttribute() 等。
3.Injection
1.最小权限原则
2.建立白名单
3.对于URL类型参数进行限制。
4.DDOS
1.流量治理
- 负载均衡
- API网关
- CDN
2.快速非自动扩容
3.非核心服务降解