《白帽子讲web安全》第一章 笔记

第一章 我的安全史观

一、系统最高权限:root (不想拿到root的黑客不是一个好黑客!)

web1.0 服务器端和动态脚本的安全问题
web2.0 客户端、浏览器和用户的安全问题

安全的本质是信任问题!!!

二、安全三要素

保密性:保证信息不泄露给未经授权的用户。
完整性:保证信息从真实的发信者传送到真实的收信者手中,传送过程中没有被非法用户添加、删除、替换等。
可用性:保证授权用户能对数据进行及时可靠的访问。


三、如何实施安全评估

1.资产等级划分
资产等级划分是所有工作的基础,它帮助我们明确目标是什么,要保护什么。

2.威胁分析
威胁是指可能造成危害的来源。

威胁分析阶段往往由于在设计安全解决方案时确定攻击面时想的不够全面从而导致攻击者利用事先完全没有想到的漏洞。

STRIDE模型
image

3.风险分析
风险是指可能会出现的损失。

风险由以下因素组成:

Risk = Probability + Damage Potential

DREAD模型
image
(高、中、低三个等级以1、2、3代表其权重分)


4.设置安全方案

一个好的安全方案不能牺牲业务的一些易用性或者性能,从产品角度来说,安全也应该是产品的一种属性。一个从未考虑过安全的产品,至少是不完整的。

一个好的安全方案应该具备以下特点:

1.能够有效解决问题;

2.用户体验好;

3.高性能;

4.低耦合;

5.易于扩展与升级;


四、白帽子兵法

1.Secure By Default原则

(一)黑名单、白名单(更安全但不是绝对安全)
   如果更多的来使用白名单,那么系统就会变的更安全。
(二)最小权限原则
   最小权限原则要求系统只授予主体必要的权限,而不要过度授权,这样能有效减少出错的机会。

2.纵深防御原则

纵深防御模型的基本思路就是将信息网络安全防护措施有机组合起来,针对保护对象,部署合适的安全措施,形成多道保护线,各安全防护措施能够相互支持和补救,尽可能地阻断攻击者的威胁。

  (一)要从不同的层面、不同的方面对系统做出整体的解决方案。
  (二)要在正确的地方做正确的事。

3.数据与代码分离原则

  在Web应用安全中,注入类型的漏洞(XSS,SQL注入,CSRF等)通常产生的原因都是违背了数据与代码分离的原则。
  实际上,缓冲区溢出,也可以认为是程序违背了这一原则的后果--程序在栈或者堆中,将用户数据当做代码执行,混淆了代码与数据的边界,从而导致安全问题的发生。
  在Web安全中,由"注入"引起的问题比比皆是,如XSS、SQL Injection、CRLF Injection、X-Path Injection等。此类问题均可以根据"数据与代码分离原则"设计出真正安全的解决方案,因为这个原则抓住了漏洞形成的本质原因。

4.不可预测性原则

  不可预测性原则是从让攻击者失效的角度来进一步保护系统的安全。比如接口调用中的关键参数(如ID、email)进行加密、APP登录使用的随机Token等,都是为了让攻击者找不到攻击的规律,使得攻击失效。

总结:
数据和代码分离原则是从漏洞成因上设计(比如避免xsss漏洞;
纵深防御原则是从全局防御视角,避免单个薄弱点带来整个系统被攻陷;
不可预测性原则是从让攻击者失效的角度来进一步保护系统的安全。
image


2022-09-23 19:07:14 星期五

posted @ 2022-09-23 19:08  liao_y  阅读(65)  评论(0)    收藏  举报