画布 1
信息安全
  第一章 概述
    跨站脚本攻击（XSS)
Cross Site Scripting
    SQL注入
      web应用未检验用户输入合法性，通过在输入表单中添加额外的SQL语句，导致其未授权但仍登录进服务器
    信息安全最基本的三个属性
CIA三元组
      机密性
        一种确保资源只被授权的当事人查看的系统能力
          被破坏的例子
            未授权的人得知了部分/全部信息
      完整性
        一种确保资源只被授权的当事人修改的系统能力
          被破坏的例子
            DOS攻击，硬件故障，网络中断
      可用性
        确保资源能被任何授权的人使用的系统能力
          被破坏的例子
            信息被修改
    维护信息安全的方式
      消息认证和数据签名
      身份控制
      访问控制
    计算机安全
      什么是资源？
        资源指硬件（服务器、终端）、软件（操作系统、应用）和数据（用户信息、业务数据）等系统资产
      脆弱点-威胁-控制范式
        脆弱点
          能被利用并造成伤害的薄弱点
            如编程时疏忽导致的软件漏洞（SQL注入可能性）
配置项目时添加了不必要的功能等
使用简单的密码123456等
          注：脆弱点指系统本身存在的弱点和缺陷
          攻击面是系统所有脆弱点的总和
        威胁
          可能对资源造成损失的条件或事件，分为人为（黑客、操作失误）和非人为（设备故障、自然灾害）
            人为
              恶意
                通过钓鱼邮件窃取信息
              非恶意
                误删数据库文件，错误配置防火墙规则
            非人为
              服务器损坏，被拔电，物理设施损坏
            注：威胁是可能发生的危险状态
          访问控制
            给不同的用户划分不同的权限，只能严格依照权限办事
              在数据库中，按照角色权限（如管理员、审计员、普通用户）配置访问控制列表（ACL），仅允许角色对应的操作
        攻击
          攻击者利用脆弱点实施的行为
            利用SQL注入获取数据
            主动攻击：影响系统的正常运行
              DDoS和SQL注入
            被动攻击：不直接影响
              如获取系统内的信息
            注：攻击是已经发生的行为
          根据行为表征划分攻击类型
            截取interception：未经授权获取信息复制，如监听或窃听
              破坏了机密性
                用户的数据被攻击者截获
            中断interruption：阻断服务或资源访问，如拒绝服务攻击
              破坏了可用性
                DDoS攻击，使得服务器瘫痪
            篡改modification：未经授权修改资源，如数据注入或重放
              完整性
                修改已有的数据
            伪造fabrication：创建虚假信息或数据，如伪造报文
              完整性
                添加全新的虚假数据
          重放攻击replay attack
            攻击者截取用户的数据包后，接收方由于未收到理应到达的数据包触发发送方的重传，攻击者等待一段时间后重新传输这个数据包，接收方会将这个数据包的操作认为是合法操作！
        脆弱点，威胁，攻击的区别
        控制
          阻止或减轻脆弱点带来的威胁的手段
          控制的方法
            预防
              阻止利用脆弱点
            阻止
              提高攻击成本或关闭漏洞
            转移
              转移攻击者的目标
                部署蜜罐系统（Honeypot），将扫描和攻击流量引至蜜罐，保护真实主机
            减轻
              减少攻击发生时的损失
            检测
              攻击发生后部署检测攻击的措施
            恢复
              攻击发生后恢复系统运作的能力
          控制的分类
            物理控制
              机房加锁
            流程化/管理化控制
              法律
            技术控制
              密码学，防火墙
        案例
  第二章 身份鉴别和访问控制
    加密技术
      加密
        将可读的明文转为不可读的密文
      加密算法
        对称加密
          为什么叫对称加密？因为加密与解密使用同一密钥，运算速度快，适合大规模数据加密。
            数据加密标准DES
Data Encryption Standard
              可以被暴力破解
            高级加密标准AES
Advanced Encryption Standard
              更安全，是目前的主流
          发送方使用密钥加密，接收方使用同一个密钥还原
        非对称加密
          为什么叫非对称加密？因为使用了一对密钥：公钥和私钥进行加密和解密
            示例：RSA 算法，用于密钥交换和数字签名。
            特点：公钥公开，私钥仅所有者持有；加密效率低于对称加密。
          接收方生成一个公钥和一个私钥
发送方使用公钥加密，接收方使用私钥解密
由于不传输解密的私钥，因此加密更加安全
      加密模式
        流密码
        块密码
      密码学工具
        哈希函数
          哈希函数并不用于加密，它只是用于将信息转为哈希值，且无法从哈希值逆推得到原信息，用于检查数据是否完整或被纂改，因为同一输入只能产生同一输出，如果数据被纂改，那么它的哈希值也会改变，接收方只需要对比数据签名的哈希值和源数据的哈希值即可
          但是简单的哈希函数容易被攻破
            有一种攻击叫彩虹表攻击，攻击者会存储大量常用密码的哈希值，建立一个"密码-哈希值"对应表，窃取到哈希值后，若用户使用简单常用密码，容易很容易被破解得到原密码
            解决方案
              加盐算法：为用户生成一个随机的字符串，将该字符串与密码拼接后再进行哈希，只存储用户的哈希值和盐值，将用户的密码和盐值拼接后求哈希，对比哈希值，相同则登录成功
        数字签名
          数字签名是用于验证信息是否被纂改的，原理在上方
          发送方计算原始信息的哈希值，再用私钥加密哈希值得到数字签名
接收方使用公钥还原数字签名对应的哈希值，再计算原始信息的哈希值，若不一样则说明消息被纂改
    身份鉴别
      基于用户已知事情的鉴别
        口令系统（密码系统）
          如何攻击？
            彩虹表攻击
              描述同上
            字典攻击
              攻击者预先准备好所有常用的密码列表，一个一个尝试
              聪明替换是无效的
                字母转数字：a→@，o→0，e→3，l→1，s→$
                单词变形：password→p@ssw0rd，hello→h3ll0
                混合替换：admin→@dm1n，love→l0v3
            穷举攻击
              暴力地尝试密码的所有可能性
      基于生物特征鉴别
        指纹
          日本明胶指纹事件：攻击者使用廉价明胶成功伪造指纹，突破了指纹识别系统，暴露了生物特征识别的脆弱性。
        人脸识别
        错误率指标
          误承认
            错误接受非授权用户
          误否认
            错误拒绝授权用户
        缺点
          经济成本高
          若生物特征受损，则可能无法通过认证
      基于令牌的身份鉴别
        物理令牌
          身份证、银行卡、智能卡、USB安全钥匙
        令牌分类
          活跃性
            被动令牌
              需要从外部设备读取
            主动令牌
              自主生成的信息
          时效性
            静态令牌
              信息固定不变
            动态令牌
              按时间变化
    访问控制
      什么是访问控制
        决定哪些主体（用户、程序、进程）能够以哪种方式访问哪些对象（文件、数据、资源）的安全机制
      访问策略
        系统对验证每一次访问请求，确保其请求符合其权限
        用户和进程应仅被授予完成其工作所必需的最小权限，避免权限过度分配导致的安全风险
        权限不仅包括"能否访问"的判断，还涵盖"访问后可执行的操作"，如读取、写入、执行、删除等具体操作权限
      粒度控制
      实现方式
        访问控制目录
          为每个用户维护一个目录，记录该用户可以访问的所有对象及其权限
          缺点
            用户数量增多，目录规模也会增大
        访问控制矩阵
          将所有用户和对象组织在一个二维表中，行代表用户（主体），列代表对象，交叉点记录具体的访问权限
        访问控制列表
          每个对象维护一个列表，记录哪些主体可以访问该对象以及具体的访问方式
      高级访问控制模型
        面向程序的访问控制（Program-Oriented Access Control）
        基于角色的访问控制（RBAC）
          RBAC将权限赋予角色而非直接赋予用户，用户通过被分配特定角色来获得相应权限
  第三章
    对策与防护
      什么是对策？
        为了防范、检测、响应和恢复各种安全威胁而采取的综合性措施和方法
      用户对策
        仅使用来自可靠来源的软件
        在隔离环境中测试新软件
        定期创建和维护数据备份
        将所有网站视为潜在威胁
      开发者对策
        模块化设计：将复杂系统分解为独立模块
        封装和信息隐藏：限制数据暴露范围
        防御性编程：假设输入总是错误的，对所有输入进行验证
      安全设计原则
        最小权限原则
          只授予用户/程序完成任务所需的最小权限
        完全中介原则
          所有对资源的访问都必须验证，不能存在绕过验证的后门
      无效对策
        虽然某些看似合理的安全措施被广泛采用，但是它们实际上并不能提供真正的安全保障
          渗透后打补丁
            虽然发现漏洞后及时修补很重要，但是这种被动防御方式无法阻止零日攻击，因此应该采用主动防御策略
          通过模糊实现安全
    程序漏洞（非恶意的，无意的）
      缓冲区溢出
        虽然为数组/缓冲区分配了固定的内存空间，但是程序在写入数据时可能超出这个边界，当写入的数据超过了预分配的缓冲区大小时，多余的数据会覆盖相邻的内存区域
        攻击者可以利用缓冲区溢出来实现攻击，使得额外溢出的部分覆盖函数的返回地址，使得程序跳转到恶意代码
        如何防护？
          对所有输入数据进行严格验证，因此防止超长数据写入缓冲区
          执行控制
            区分“可以执行代码的区域”和“只能存放数据的区域
          栈金丝雀（stack canary）检测溢出
            在栈中插入随机数，但是函数返回前会检查这个值是否被修改
      不完全验证、仲裁
        系统可能不会检查到所有用户发送的请求，此时未被检查的请求可能会被攻击者利用，攻击者可能借此绕过检查
      未公开的访问点
        虽然开发过程中会添加调试接口来便于测试，但是这些访问点在产品发布时可能被遗忘删除，因此形成了后门或陷阱门，攻击者可以利用这些接口获得设备控制权
    恶意代码，恶意软件
      恶意软件指一类被恶意植入系统、具有破坏性或控制性的程序
      计算机病毒
        计算机病毒是指旨在传播恶意代码的程序，因此它会将自身附加到其他程序或文件中进行传播
            下载后运行入侵
      计算机蠕虫
        蠕虫是通过网络大量复制自身的恶意代码，因此它能够独立传播而无需依附于其他程序
            即使不做操作也会入侵
      特洛伊木马
        指的是表面上具有良性功能、实则包含恶意代码的程序
            下载后被控制
      病毒植入方式
        接触式病毒
          病毒会将自身代码附加在目标程序的末尾，因此当程序运行时病毒代码也会被执行
        包裹病毒
          病毒会将原程序完全包装起来，因此当用户运行程序时，实际上首先执行的是病毒代码
        整合替换型
          病毒会将自身代码与原程序代码混合或完全替换原程序
  第六章
    拒绝服务DoS
      DoS攻击通过消耗服务器资源，阻止正常用户使用服务
      当攻击者同时发送数千个Ping请求时会占用大量网络带宽，因此导致目标服务器无法处理哪些是正常的请求，哪些是异常的请求
      Ping洪水攻击
        攻击者向服务器发送大量ping包
      Smurf攻击
      泪滴攻击
        泪滴攻击利用IP分片重组的漏洞来攻击目标系统，发送重叠或不连续的分片数据包，使得目标系统无法重组这些分片导致错误乃至崩溃
      DNS欺骗
        DNS欺骗攻击通过伪造DNS响应来误导用户访问恶意网站，使得用户访问目标网站时却跳转到其他网站
      分布式拒绝服务DDoS
Distributed Denial of Service
        利用僵尸网络（Botnets）控制大量主机，同时向目标发送流量，耗尽带宽或资源。
    入侵检测和入侵防御系统
      入侵检测系统（IDS）：虽然能够监控和识别攻击行为，但是主要起到报警作用的被动防护设备，因此无法直接阻止攻击
      入侵防御系统（IPS）：具备检测功能，还能够主动采取措施阻止攻击的主动防护设备，因此可以实时防御威胁
    无线网络安全
      最早的无线安全标准WEP
        缺点极多
          WEP声称提供64位或128位加密，但是实际有效密钥长度要短得多
          使用静态密钥，不常更换，给攻击者提供充足攻击时间
      目前的无线安全标准WPA/WPA2
        采取动态密钥
        使用强加密算法
    网络传输介质
      电缆：广泛使用，成本低，但易受电磁辐射和物理窃听。
      光纤：抗电磁干扰，难以窃听，但连接点可能暴露。
      微波：信号强，受天气影响小，但需视距传输，易被截获。
      无线WiFi：普及性高，内置设备多，但信号随距离衰减，易被周围设备截获。
      卫星通信：信号强且快，但因距离产生延迟，接收端覆盖范围广易暴露。
    防火墙技术
      为什么防火墙是一种有效的控制访问技术？
        什么是防火墙？
          防火墙是一种网络安全设备，工作在网络的边界位置，对进出网络的数据包进行检查、过滤和控制
        因为防火墙可以基于IP地址，端口号等进行过滤
基于IP地址可以过滤掉外网想要访问内网的请求，也能限制内网用户访问外网危险网站，保护了数据安全
基于端口号进行过滤，可以精准控制内网用户所能使用的网络类型，以及防止恶意软件使用特定的端口
    网络加密概念和工具
      加密方式
        链路加密
        端到端加密
      主要加密工具
        安全外壳协议SSH
        SSL/TLS (安全套接层/传输层安全)
        VPN (虚拟专用网络)
          VPN在公共网络上创建加密通道，让用户远程访问内网资源。
            虽然员工在家办公需要访问公司内网，但是通过VPN连接后就像直接在公司内部网络中工作一样，因此可以安全地访问内网服务器和数据库。
          用户与VPN服务器建立逻辑上的专用加密通道，于是用户的请求先发送到VPN服务器，再由服务器转发给目标地址，返回时同样经过加密隧道返回给用户
            于是VPN也可以实现跨地区访问，使得我虽然身在中国，但我把请求发送到在美国的VPN服务器，由该服务器转发我的请求，让我的请求看起来像是从美国本地发送的一样
          这种技术可以隐藏真实用户
        洋葱路由
          洋葱路由实现了更强的匿名保护，因为用户把信息进行了多层加密，每到达一层就像剥洋葱一样解开一层加密，才能得知下一个节点的位置，直到最终到达终点，返回时执行同样的过程
          这样可以实现，每个节点都不知道用户的完整路径