Jorgen's blog Jorgen's blog
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
收藏
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

jorgen

Love it, make mistakes, learn, keep grinding.
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
收藏
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 平台架构
  • 技术选型
  • 开发脚手架
  • UI规范
  • 开发规范
  • 代码分支管理模型
  • 需求分析与管理
  • 权限设计
  • 树形组织设计
  • 协议设计
  • 指令交互
  • OTA
  • 规则引擎
  • 数据流转
  • 报告生成与导出
  • 监控设备接入
  • 时序数据库
  • 平台监控
  • 云⛈
  • 接口设计
  • 安全传输
    • 背景介绍
    • 密码加密
    • TLS/SSL
      • TLS和SSL如何保护数据?
    • 防火墙
      • 禁止docker使用iptables防火墙
  • CI&CD
  • 缓存
  • 消息处理引擎
  • 性能调优🔥
  • 线上事故🔥
  • 混合式开发记录
  • 推送服务
  • 机器人通信协议
  • 数据分析
  • flink模板工程
  • 实时调度
  • 机器人模块化设计
  • STM32入门
  • 开发日志
Jorgen
2023-02-18
目录

安全传输

# 背景介绍

近年来,以云计算、大数据、人工智能、物联网为代表的新兴技术的快速发展,网络安全风险全面泛化,复杂程度也在不断加深。特别是随着新冠肺炎疫情的蔓延,在加速企业数字化转型的进程的同时,也让网络安全风险开始遍布在越来越多的场景之中。

  1. 疑似超2亿国内个人信息在国外暗网论坛兜售

1月5日,国外安全研究团队Cyble发现多个帖子正在出售与中国公民有关的个人数据,经分析可能来自微博、QQ等多个社交媒体,本次发现的几个帖子中与中国公民有关的记录总数超过2亿。其中还发现了大量湖北省“公安县”的公民数据。

  1. 国内某银行疑似发生数据泄露高达1679万条

1月8日,有人在某国外论坛中发帖售卖国内某银行1679万笔数据,并放出部分数据样本,数据包括名字、性别、卡号、身份证号、手机号码、所在城市、联系地址、工作单位、邮编、工作电话、住宅电话、卡种、发卡行等等。

  1. 中国初创公司Socialarks泄露400GB数据,影响全球2亿多用户

安全公司Safety Detectives发现,中国初创公司Socialarks(笨鸟社交)泄露了400GB数据。此次数据泄露是由于ElasticSearch数据库设置错误,泄露了总计408GB,超过3.18亿条用户记录,涉及到11651162个Instagram用户、66117839个领英用户和81551567个Facebook用户。

值得注意的是,Socialarks在2020年8月也发生了类似的事件,泄露了1.5亿个用户的个人数据。

# 密码加密

由于隐私安全性的重要性。所以在使用平台时,一定要注意隐私性。这里分享一种思路 用户登录时,对登录密码进行加密。

修改密钥注意同步修改前后端的key ,必须为 16位。

<!DOCTYPE html>
<html>
<head>
  <meta charset='utf-8'>
  <meta http-equiv='X-UA-Compatible' content='IE=edge'>
  <title>Page Title</title>
  <meta name='viewport' content='width=device-width, initial-scale=1'>
  <link rel='stylesheet' type='text/css' media='screen' href='main.css'>
  <script src="http://cdn.bootcdn.net/ajax/libs/crypto-js/4.0.0/crypto-js.js"></script>
  <script>
    function btnAction() {
      var data = document.getElementById("content").value;
      var params = document.getElementById("key").value;
      const key = CryptoJS.enc.Latin1.parse(params)
      var iv = key
      // 加密
      var encrypted = CryptoJS.AES.encrypt(data, key, {
        iv: iv,
        mode: CryptoJS.mode.CFB,
        padding: CryptoJS.pad.NoPadding
      })
      var box = document.getElementById("result")
      box.innerHTML=encrypted.toString();
}
</script>
  密钥: <input type="text" id="key" /> <br/>

  内容: <input type="text" id="content" /> <br/>

  <button type="submit" id="btn_submit" onclick="btnAction()">加密</button> <br>

  <span id="result"></span>
</head>
<body>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

后端可解密,然后在使用更安全的方式来进行加密保存密码。例如使用SHA-256 加盐处理。

  public static String decode(String key, String encryptedMsg) {
        String password = "";
        try {
            AES aes = new AES(Mode.CFB, Padding.NoPadding,
                    new SecretKeySpec(key.getBytes(), KEY_ALGORITHM),
                    new IvParameterSpec(key.getBytes()));

            password = aes.decryptStr(encryptedMsg);
        } catch (Exception e) {
            throw new BaseException("解码错误");
        }
        if (StringUtils.isBlank(password)) {
            throw new BaseException("解码错误");
        }
        return password;
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# TLS/SSL

B/S大多通过HTTP的方式进行交互处理。此时尤为需要注意,要使用HTTPS的方式才是安全的。以为HTTP没有加密。通过抓包工具可以直接到请求/响应的原文。非常的不安全。

使用现代浏览器Chrome,如果你要访问http的网站,都会提示有隐私泄露的风险。

如果您想检查您的网络浏览器使用的是哪个SSL/TLS版本,您可以使用How’s My SSL工具 (opens new window)

# TLS和SSL如何保护数据?

以下是SSL和TLS工作原理的高级流程。

当您在Web服务器上安装SSL/TLS证书(通常简称为“SSL 证书”)时,它包含一个公钥和一个私钥,用于验证您的服务器并让您的服务器加密和解密数据。

当访问者访问您的站点时,他们的Web浏览器将查找您站点的SSL/TLS证书。然后,浏览器将执行“握手”以检查您的证书的有效性并验证您的服务器。如果SSL证书无效,您的用户可能会遇到“您的连接不是私密连接”错误,这可能会导致他们离开您的网站。

一旦访问者的浏览器确定您的证书有效并对您的服务器进行身份验证,它实际上会在它和您的服务器之间创建一个加密链接,以安全地传输数据。

这也是HTTPS的用武之地(HTTPS代表“HTTP over SSL/TLS”)。

HTTP和更新的HTTP/2是应用程序协议,在通过Internet传输信息方面发挥着重要作用。

使用普通HTTP,该信息容易受到攻击。但是,当您通过SSL或TLS (HTTPS)使用HTTP时,您会在传输过程中对该数据进行加密和身份验证,从而确保其安全。

这就是为什么您可以通过HTTPS而不是通过HTTP安全地处理信用卡详细信息的原因,也是Google Chrome如此努力地推动采用HTTPS的原因。

# 防火墙

防火墙只开放指定端口,做好管控。

如果使用的是云服务版本,支持安全组设置。只允许开放指定IP的用户。

# 禁止docker使用iptables防火墙

使用docker run -p 端口:端口启动容器时,docker会绕过防火墙firewalld的,原理是修改了iptables,那不让它修改iptables即可,此方法无需切换默认防火墙。

按照所述设置即可。详情请见: 解决docker容器开启端口映射后,会自动在防火墙上打开端口的问题 (opens new window)

# 暂时不用修改,如果无法使用外网或者内网再修改
vim /etc/default/docker

#修改文件,此处设置等同于在创建容器时手动指定iptables=false参数
DOCKER_OPTS="--dns 114.114.114.114 --dns 8.8.8.8 -iptables=false"
1
2
3
4
5
vim /etc/docker/daemon.json
增加如下内容
{
"iptables": false
}
1
2
3
4
5
#安全#密码加密#防火墙#TLS/SSL
上次更新: 2023/02/19, 11:42:06
接口设计
CI&CD

← 接口设计 CI&CD→

最近更新
01
STM32入门
03-09
02
ADB调试
03-09
03
微信小程序学习记录
02-09
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Jorgen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式