关于hardcoded账号和密码的问题的想法

        在编写应用程序时,都会访问一些存储系统获取相关的信息。最简单的例子就是用户登录,需要访问存储的用户和密码,进而可以验证用户是否可以正常登录。为了访问数据库各种框架结构也都提供了相应的方法和接口支持。但是,程序员在实现时为了方便经常会使用一些不太安全的方法,容易导致系统的存储系统的访问账号和密码的泄露。而存储系统经常存储一些重要的敏感的信息,这就可能导致重要信息的泄露。一旦像数据库中的信息泄露,将会给系统带来严重的负面影响。

下面列举一下常见的错误:

  • 将密码写死在代码里

这是最容易也是最简单地实现访问存储系统的方法,直接写在代码里,访问数据库非常简单。同时,也就意味着会用同一套代码部署的系统只能用同一个账号和密码访问数据库。一旦密码泄露,也很难及时修复系统。必须要研发团队重新修改代码,升级系统,同时也需要数据库管理团队的密切配合。给系统的维护带来很大的不便。

  • 将密码写死在配置文件

写入配置文件相对于写在代码里稍微好一些,但是,也有同一个问题,就是开发环境和实际运行环境是否使用了不同的配置文件?是否能够保证使用了不同的配置文件之后,使用的账号和密码是不同的? 如果使用不同的配置文件,但是使用相同的账号和密码,这个和使用同一个配置文件也没什么区别,主要的区别就是修改产品线上的账号和密码时,比较容易一些。

在代码仓库上的默认的配置,是否能够保证在实际部署时,能够保证在产品线上使用不同的密码?

  • 使用系统默认的用户名和密码

所有的数据库系统基本上都会提供一个默认的管理员级别的用户名和密码,有些开发为省事,就直接使用这个账号和密码。当一个攻击者扫描到一个数据库系统时,就会首先尝试使用默认的用户名和密码。所以,一旦使用默认的用户名和密码,攻击者就可以控制整个数据库系统。

关于解决这些硬编码的密码的方案也有很多种,下面就罗列一下我自己的一些想法:

  • 在代码的仓库里,一定不能含有硬编码的密码,尤其是在产品线上仍然使用的密码,不管是在代码里,还是在配置文件里。如果是测试代码,建议使用一些明显测试特征的密码,例如:Test@1234。曾经在Review代码时,发现测试代码里测试加解密的代码里居然有访问数据的账号和密码,这就导致了密码多一个泄露的地方,而且,隐藏的很深。
  • 这些密码需要保存在一个受保护的区域,由专门的人负责维护。同时,对维护和访问的所有操作都要记录日志,实时监控。可以放在专门的系统里,例如:Vault;也可以放在HSM里,不过,HSM的价格一般比较昂贵。
  • 这些密码需要有一个安全的机制让应用程序在启动之前能够获取。应用程序和这些存储服务之间有严格认证关系,保证只有信任的服务器才能够访问。例如:可以使用公钥和私钥系统认证系统。
  • 密码可以定期更新,同时,所有应用程序可以根据更新的机制同步更新,不影响访问数据库系统。 例如:将账号和密码都列入更新的范围,这样新老账号可以同时工作一段时间,以防出现问题可以及时回滚,等新的账号和密码验证可以工作了,再删除老的。像MySQL8.0可以支持Dual-password的功能,就可以使用一个账号,然后,同时使用两个密码,等新的密码确认可以正常工作时,再废弃老的密码。更新时需要有通知的机制,保证各个团队都能够及时关注更新,观察产品是否能够正常运行。一旦发现有问题,要有机制尅及时回滚。
  • 要有机制废弃老的密码或者账号。如果更换了新的账号或者密码,但是老的账号或者密码没有机制保证能够及时废除,也是很危险的。可以设置一个自动超时机制,一旦,超过一定的时间,老的账号或者密码就强制自动废弃。
  • 一定不能使用系统默认的账号和密码。需要根据系统的需要专门创建一个符合应用需求的足够权限的账号即可,没有必要给太多权限,给的权限越多,出问题时,导致的伤害就会越大。例如:有SQL注入的问题时,如果提供的root账号,攻击者就可以做一些对系统由致命打击的删除操作,导致系统彻底不能使用。

总之,无论如何,尽量避免hardcoded的关键敏感信息,包括:密码、token、加密的密钥等,需要在实现之初就应该规划好如何管理这些内容,如何能够基于当前的系统架构实现动态更新,这样才能保证一旦出现泄漏问题,可以及时更换泄露的内容,保护系统的安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/19714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow----php特性(89-104)

目录 web89 preg_match函数 、数组 web90 intval()函数、强比较 web91 正则修饰符 web92 intval()函数、弱比较 web93 八进制、小数点 web94 strpos() 函数、小数点 web95 小数点 web96 highlight_file() 下的目录路径 web97 数组 web98 三目运算符 web9…

金融翻译难吗,如何做好金融翻译?

我们知道,金融翻译涉及企业经济这块的,是影响各公司发展很重要的一方面,翻译做得好,可以促进公司内外的交流,及时掌握各种信息,做好应对。那么,金融翻译难吗,如何做好金融翻译&#…

MySQL 极速安装使用与卸载

目录 mysql-5.6.51 极速安装使用与卸载 sqlyog工具 mysql简化 mysql-8.1.0下载配置 再完善 mysql-5.6.51 极速安装使用与卸载 mysql-8.1.0下载安装在后 mysql中国官网 MySQLhttps://www.mysql.com/cn/ 点击MySQL社区服务器 点击历史档案 下载完 解压 用管理员运行cmd&a…

腾讯云从业者认证考试考点——云网络产品

文章目录 腾讯云网络产品功能网络产品概述负载均衡(Cloud Load Balancer)私有网络(Virtual Private Cloud,VPC)专线接入弹性网卡(多网卡热插拔服务)NAT网关(NAT Gateway)…

打破常规:用PowerShell批量转换.thm文件

如果你使用数字相机拍摄照片,那么你可能会发现在每个文件夹中都有与照片对应的缩略图文件,它们的扩展名通常是.thm。虽然这些文件可以帮助你快速浏览和查找照片,但在某些情况下,你可能希望将它们转换为JPEG格式,以便更…

「AIGC」智能美学,AI绘画 API 激发无限创意

引言 随着人工智能(AI)技术的迅猛发展,AI绘画 API 正在以惊人的速度改变艺术创作的面貌。它不仅为艺术家和创作者提供了全新的创作工具,还激发了无限的创意和想象力。在这个智能美学的时代,让我们一起探索 AI 绘画 AP…

客服如何通过微信接收消息通知-唯一客服文档中心

当我们在自己网站上嵌入对接了客服代码,我们想要通过微信接收访客的消息提醒通知,可以通过扫描客服后台的微信二维码,即时收消息通知提醒。 我们网站地址:gofly.v1kf.com 客服后台 后台主页面板,就展示了一个微信二维码…

基于YOLOv5的S弯识别

基于YOLOv5的S弯识别 目录 基于YOLOv5的S弯识别技术背景算法介绍具体实现1、下载仓库2、配置环境3、数据处理4、转成engine文件5、使用代码实现识别 技术总结 技术背景 S弯识别是一个在自动驾驶和机器人领域中很常见的任务,它需要识别道路上的弯道,特别…

如何使用Python进行数据分析?

Python是一个非常流行的编程语言,也是数据科学家和数据分析师最常用的语言之一。 Python的生态系统非常丰富,有很多强大的库和工具可以用来进行数据分析,如NumPy、Pandas、Matplotlib、SciPy等。 Python教程,8天python从入门到精…

BUU CODE REVIEW 1

BUU CODE REVIEW 1 考点&#xff1a;PHP变量引用 源码直接给了 <?phphighlight_file(__FILE__);class BUU {public $correct "";public $input "";public function __destruct() {try {$this->correct base64_encode(uniqid());if($this->c…

Linux权限小结

Linux权限小结 权限的基本介绍 ls -l中显示的内容如下&#xff1a;drwxr-xr-x. 2 yinjun yinjun 87 8月 2 16:24 test&#xff0c;如下图所示 前十位介绍 其中&#xff0c;0-9位为drwxr-xr-x&#xff0c;其说明情况如下 第0位确定文件类型&#xff0c;包括d&#xff0c;-&a…

Linux —— 进程控制

目录 一&#xff0c;进程创建 写时拷贝 二&#xff0c;进程终止 三&#xff0c;进程等待 获取子进程status 一&#xff0c;进程创建 命令行启动命令&#xff08;程序、指令等&#xff09;&#xff1b;通过程序自身fork创建&#xff1b; #include<unistd.h> //子进程…

Spring Boot参数校验实现自定义响应类优雅处理

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; Spring Boot参数校验实现自定义响应类优雅处理 ⏱️ 创作时间&#xf…

【NLP概念源和流】 03-基于计数的嵌入,GloVe(第 3/20 部分)

接续上文 【NLP概念源和流】 02-稠密文档表示(第 2/20 部分)

AnimateDiff论文解读-基于Stable Diffusion文生图模型生成动画

文章目录 1. 摘要2. 引言3. 算法3.1 Preliminaries3.2. Personalized Animation3.3 Motion Modeling Module 4. 实验5.限制6. 结论 论文&#xff1a; 《AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning》 github: https://g…

vsto excel 可以异步写入值么

在 VSTO (Visual Studio Tools for Office) 中&#xff0c;Excel 可以使用异步方式写入值。异步编程允许您在后台线程中执行耗时的操作&#xff0c;而不会阻塞主线程&#xff0c;从而提高程序的响应性能。 从 .NET 4.5 开始&#xff0c;可以使用异步和 await 关键字来简化异步…

移动零 LeetCode热题100

题目 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 思路 遍历数组&#xff0c;用一个指针j记录上一次交换中的下标小的位置的下一个位…

【数据结构】——串,数组,矩阵的相关习题

目录 题型一&#xff08;二维数组的存储地址&#xff09;题型二&#xff08;串的模式匹配&#xff09;题型三&#xff08;串的基本操作&#xff09;题型四&#xff08;特殊矩阵的压缩存储&#xff09; 题型一&#xff08;二维数组的存储地址&#xff09; 1、二维数组A[m][n]采用…

数据分析 VS 数据可视化:决战时刻

数据分析和数据可视化是数据科学领域中两个重要的组成部分&#xff0c;很多人不明白两者之间的关系&#xff0c;会误认为是一个东西&#xff0c;其实不然。本文就带大家简单了解一下它们的区别与联系吧&#xff01; 数据分析是指通过收集、处理和解释数据来获取有关特定问题或…

【linux-网络】sslocal命令的安装使用

1.背景 需要ss转发&#xff0c;在linux中转发并登录。 2.操作流程&#xff1a; 1&#xff09;安装python 一般linux系统都自带python&#xff0c;2.7---如果要更高版本的自行安装 2&#xff09;使用pip安装ss pip install shadowsocks 3&#xff09;命令使用 sslocal -c …