0%

spring-security

Security

Basic

  • Crypto:密码(学)
  • Cipher:密码(工具)
  • Secret:密钥(密码)、密文
  • SecretKey:秘钥
  • PublicKey:公钥
  • PrivateKey:私钥
  • Encrypt/Encryption:加密
  • Decrypt/Decryption:解密
  • Sign/Signature:签名
  • Verify/Verification:校验
  • Authenticate/Authentication:认证
  • Authorize/Authorization:鉴权

Secure

安全有哪些方向

数据安全、服务安全(API和WEB)、机器安全、网络安全、信息安全

安全有哪些技术

古代有哪些安全相关的技术
  • 签字
  • 画押
  • 印章
    • 私印(私(印)章,适用于书画)
    • 官印(公(印)章,适用于公文)
  • 银票
  • 地契
近代有哪些安全相关的技术
  • 数字证书
  • 电子签名
  • 电子印章
    • 电子发票
    • 电子合同
  • 电子证件(身份证,驾驶证)
  • 数字人名币

ps:电子邮件(email)也是电子的,电子邮件(email)是邮件(mail)的一种

Secret

密钥 加密的钥匙,分为 非对称密钥对称密钥

  • 非对称密钥:包含秘钥(需要秘密保存的钥匙,不能泄露),加密和解密都是同一把钥匙
  • 对称密钥:包含公钥(需要公开的钥匙)和私钥(需要私藏的钥匙),其中一把加密,必须用另一把钥匙解密

ps: 公钥私钥 都具备加密和解密的功能,但是不能自己加密又自己解密,如果其中一把钥匙既能加密又能自己解密,那就相当于 秘钥

Auth

认证 的作用:验证用户的身份
鉴权 的作用:检验用户的权限

Usage

SecureRandom

MessageDigest

Cipher

KeyGenerator

KeyStore

Algorithm(算法)

Codec(编码算法)

Url

Base64

Digest(摘要算法)

  • CRC32:32位,8字(十六进制字符)
  • MD5:128位,32字(十六进制字符)
  • SHA1:160位,40字(十六进制字符)
  • SHA256:256位,64字(十六进制字符)
  • SHA512:512位,128字(十六进制字符)

CRC32

MD5

SHA1

Crypto(加密算法)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Q:base64和md5是加密算法吗
A:base64和md5不是加密算法

加密算法保密性的特性

1. 隐蔽的传递信息
2. 自己人(持有密钥或者密码本)可以解密
3. 其他人(不持有密钥或者密码本)不能解密

urlencode base64 任何人可以编码和解码,所以不能算加密算法,只能算编码算法

crc32 md5 sha1 任何人不能不依靠查表解密,所以也不算加密算法,只能算摘要算法

如果依靠不能简单读懂来判断base64和md5算加密算法的话,那

方言(dialect)
压缩(compress)
进制(十六进制 hex、八进制 octal、二进制 binary)转换

岂不是也能算作加密算法

对称加密

DES(已经不安全了)、AES

非对称加密

RSA

Authentication(认证)

常见的认证方案

  • HTTP基本认证(HTTP Basic Authentication)
  • HTTP摘要认证(HTTP Digest Authentication)
  • HTTP相互认证(HTTP Mutual Authentication)
  • 客户端SSL认证(Client SSL Authentication)
  • 表单认证(Form-Based Authentication)

ps:表单认证需要与Cookie和Token配合使用

常见的认证方式

  • 账号密码
  • 邮箱链接
  • 手机号验证码
  • 指纹
  • 掌纹
  • 眼纹
  • 脸纹
  • 签名

认证成功后返回的是 token(令牌) , token关联或者包含了用户的 身份权限 信息

Application

Private

注册:Register、Sign Up
登录:Login、Sign In
登出:Logout、Sign Out

Register

账号的常见形式

  • 自动选号
  • 手动选号
  • 邮箱号
  • 手机号
  • 身份证号

Login

登录的常见方式

  • 账号密码登录
  • 邮箱链接登录
  • 手机号验证码登录
  • 第三方登录
  • 扫码登录
  • 动态密码登录
  • 动态令牌登录
Session
Token

Logout

Public

OpenAPI

Account
Signature

开放接口认证时用的不是Token(令牌)机制,而是Signature(签名)机制

Service

SSO

SSO的实现方案

  • 基于共享Cookie:多个应用需要共享父级域名
  • 基于CAS认证中心:多个应用不需要共享父级域名

IAM

IAM:身份和访问管理

  • 单点登录 (SSO)
  • 多因素身份验证 (MFA)

Authorization(鉴权)

常见的权限模型

  • ACL:Access Control List,基于控制列表的权限验证
  • RBAC:Role-Based Access Control,基于角色的权限验证
  • ABAC:Attribute-Based Access Control,基于属性的权限验证

Application

Linux

Linux的文件权限是基于ACL权限模型实现的

基于控制列表的认证

Database

Database的操作权限是基于RBAC权限模型实现的

基于用户角色的认证

Service

OAuth2

OAuth2是一个行业标准的授权协议,包含一系列流程和标准

OAuth2和CAS对比

  • OAuth2和CAS的流程基本一致
  • OAuth2未授权时返回的是授权页面,CAS未登录时返回的是登录页面
  • OAuth2回跳时返回的是code用来获取accessToken,CAS回跳时返回的是ticket用来获取用户信息

ps:OAuth2是用来授权的,不是用来认证的,因为OAuth2中只包含资源信息不包含用户信息

Data(数据安全)

数据脱敏、数据加密

Password

Service(服务安全)

常见的服务安全问题

  • 身份认证 login token logout
  • 权限控制
  • 密码加密
  • 数据脱敏
  • sql注入
  • 跨站脚本攻击 xss
  • 跨站请求伪造 csrf
  • 同源策略 sop
  • 跨域共享 cors
  • 身份盗用 二次验证
  • 反爬虫
  • 流量攻击

API(接口安全)

流量攻击:DDos攻击(分布式拒绝服务攻击)、Sync攻击(洪泛攻击)、Ack攻击(洪泛攻击)
中间人工具:通过抓包工具破解和篡改数据进行攻击(需注意https也是可以抓包的)

接口安全的主要内容

  • 接口认证:防止系统被非法访问
  • 接口签名:防止请求参数被篡改和伪造恶意请求
  • 接口加密:防止接口参数被破解和伪造恶意请求

ps:当有人篡改请求时,即 只篡改请求参数不篡改摘要信息 时,后端生成的摘要信息和客户端生成的摘要信息会因为 参数不同 而不一致
ps:当有人伪造请求时,即 既伪造请求参数又伪造摘要信息 时,后端生成的摘要信息和伪造者生成的摘要信息会因为 密钥不同 而不一致

接口安全的主要机制

  • token:防非法访问
  • nouce:防重放攻击
  • timestamp:防流量攻击
  • sign:防中间人攻击(防篡改param、nouce、timestamp)
  • key:签名时用的密钥

Authentication

参考认证的部分

Signature

参考认证的部分

Crypto

Captcha

图形验证码:防爬虫
手机验证码:防他人

Crawler

Web(Web安全)

攻击方式:sql注入、跨站脚本攻击(xss)、跨站请求伪造(csrf)
安全策略:同源策略(sop)
资源共享:跨域资源共享(cors)

sql注入:Sql Injection
跨站脚本攻击(xss):Cross Site Scripting
跨站请求伪造(csrf): Cross-site Request Forgery
同源策略(sop):Same Origin Policy
跨域资源共享(cors):Cross-Origin Resource Sharing

Https

Tools

Certificate

数字证书(Certificate)的主要作用

  • 加密(Encrypt):防泄密(保密性)
  • 签名(Sign)和校验(Verify):防抵赖(不可否认性)、防伪造(真实性)、防篡改(完整性)

ps:签名是私钥加密,公钥解密,所以不能抵赖,不能伪造,不能篡改

数字证书(Certificate)的主要内容

  • 证书主体(Subject):持有者的身份信息
  • 证书公钥(PublicKey):解密证书摘要
  • 证书摘要(Digest):证书内容的摘要信息
  • 证书签名(Signature):证书摘要的签名信息(使用私钥签名和公钥解签可以检验证书的真实性)
  • 证书链(Chain):检查证书链可以检验证书是否可信
  • 版本
  • 序列号
  • 过期时间
  • 颁发机构
  • 签名算法

Tools

KeyTool
Openssl
ssh-keygen

Android

Hijack

Pay(支付安全)

UKey:U盾

支付的主要方式

  • 密码支付(大额支付时短信验证)
  • 指纹支付
  • 刷脸支付

Machine(机器安全)

动态密码 动态口令(令牌) 堡垒机(跳板机)

Network(网络安全)

Information(信息安全)

信息安全

流量监控、电脑截屏、截图水印

代码安全

代码混淆

Android、Python(magic number)、JavaScript

密钥安全

数据库密码、各种密钥

只想买包辣条