热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

配置文件中的密码有没有必要加密?

通常情况下,我们将类似数据库连接类的信息保存在配置文件中,java里面喜欢用properties文件,以前没有考虑过,将文件中的密码加密,现在领导要求必须加密,那么,有没有必要对密码进行加密?如果有人能进入服务...
通常情况下,我们将类似数据库连接类的信息保存在配置文件中,java里面喜欢用properties文件,以前没有考虑过,将文件中的密码加密,现在领导要求必须加密,那么,有没有必要对密码进行加密?如果有人能进入服务器,看这个配置文件的话,我想,加不加密的也没有多少意义吧?

回复内容:

通常情况下,我们将类似数据库连接类的信息保存在配置文件中,java里面喜欢用properties文件,以前没有考虑过,将文件中的密码加密,现在领导要求必须加密,那么,有没有必要对密码进行加密?如果有人能进入服务器,看这个配置文件的话,我想,加不加密的也没有多少意义吧?

我看到的一种做法是将数据库的UserName、DatabaseName、Password全放到该user的环境变量里。

生产环境的密码放在App配置文件中,那它通常也会进入源码版本库[见备注],这样普通的开发者就能checkout知道密码,但生产环境的密码是不需要让开发者知道的,而且是不应该让刚进入开发的实习生知道的。生产服务器的密码应该由运维人员统一管理。将密码放到环境变量中,开发者只需要一个get_env("db_password")这样的代码获取密码。
再回到你所担心问题:「如果有人能进入服务器,看这个配置文件的话,我想,加不加密的也没有多少意义吧?」,所以将密码交给运维人员管理,普通开发者不需要直接登录生产服务器,应用部署更新都是交给运维或者通过rsync发布,登录入口减少了,安全性就有所提高。将不同的应用以不同的用户身份运行,其它用户的环境变量也不会泄漏。


对了,配置文件加密是无助于提高安全性的。能得到配置文件通常意味着也能得到项目的源码[见备注],能得到源码也就能得到解密方式。更何况,DB服务器一般应该配置了iptables限制访问来源,密码只是整个安全环节中的一小点而已。

备注:

  1. App的配置文件是应该受版本管理的
  2. 在我看来一般的App部署环境没有复杂多变到某种程度,不将密码放到配置文件中,也就没必要为配置文件单独开设一个版本库,和源码同一个repo更省事;我自己的做法是将真正使用的settings.ini放到gitignore中,而在部署时执行一次cp settings_for_product.ini settings.ini。事实上如果目标环境并不多的话,我的做法是在源码版本库里存放多个版本的settings_for_A_cloud.inisettings_for_B_cloud.ini,只是部署脚本中,不同目标环境,cp参数有所不同。

就算加了密,攻击者可以自己写个脚本调用你的加解密方法,把原文跑出来。

加密只是增加一点点小小的时间成本而已,反而会给自己处理问题带来不便。

推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 创建第一个 MUI 移动应用项目
    本文将详细介绍如何使用 HBuilder 创建并运行一个基于 MUI 框架的移动应用项目。我们将逐步引导您完成项目的搭建、代码编写以及真机调试,帮助您快速入门移动应用开发。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文介绍如何使用 Sortable.js 库实现元素的拖拽和位置交换功能。Sortable.js 是一个轻量级、无依赖的 JavaScript 库,支持拖拽排序、动画效果和多种插件扩展。通过简单的配置和事件处理,可以轻松实现复杂的功能。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
author-avatar
季柔原
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有