密码硬编码(Password Management: Hardcoded Password)
在对项目进行安全扫描时,发现一些密码硬编码问题,本文主要三个方面:1)什么是密码硬编码;2)密码硬编码的危害;3)密码硬编码的解决方案。
一 什么是密码硬编码
将密码以明文的形式直接写到代码中,就是密码硬编码。
下边示例中,将用户名和密码直接写到代码中,就是硬编码。
function connectionDatabase(url, userName, password) {
// ....
}
connectionDatabase('./api', 'zhangsan', '1234567');
二 密码硬编码的危害
主要危害有2个方面:
1)安全风险
只要能拿到该代码的人(即使代码发布前做过编译或者混淆压缩,也能通过反编译等手段查看到源码),都能获取到该用户名和密码,导致安全风险;
2)可维护性不好
代码一旦发布上线,后续要修改该用户名和密码非常困难,需要更改源代码。
三 密码硬编码的解决方案
密码硬编码还没有绝对安全的解决方案,只能通过加大破解难度来提高安全性。
最常用的方法是对密码进行模糊化(例如:要先经过hash处理再存储),并将密码存在外部资源文件中进行管理。
示例:
下边代码中就是获取配置文件中配置好的密码:

下边代码中就是配置文件中加密过的密码:

说明:经过上边的处理,并不是就绝对安全了,黑客高手也有手段破解。但相比直接明文方式加密,至少能解决安全软件扫描问题。
四 参考资料&内容来源
CSDN:https://blog.csdn.net/alimobilesecurity/article/details/51425629
博客园:https://www.cnblogs.com/meInfo/p/9037584.html
51CTO: http://netsecurity.51cto.com/art/201603/507142.htm
密码硬编码(Password Management: Hardcoded Password)的更多相关文章
- Fortify漏洞之Dynamic Code Evaluation: Code Injection(动态脚本注入)和 Password Management: Hardcoded Password(密码硬编码)
继续对Fortify的漏洞进行总结,本篇主要针对 Dynamic Code Evaluation: Code Injection(动态脚本注入) 和 Password Management: Har ...
- Password Management:Hardcoded Password 密码管理:硬编码密码
- Password Management:Password in Configuration File 密码管理:配置文件中的密码
- Key Management: Hardcoded Encryption key 密钥管理:硬编码加密密钥
- Fortify Audit Workbench 笔记 Password Management: Password in Configuration File(明文存储密码)
Password Management: Password in Configuration File(明文存储密码) Abstract 在配置文件中存储明文密码,可能会危及系统安全. Explana ...
- Access denied for user '密码'@'192.18.0.0' (using password: YES)
Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.6:generate (default- ...
- SpringCloud系列二:硬编码实现简单的服务提供者与服务消费者
从本文开始,以一个电影售票系统为例讲解Spring Cloud 1. 版本 jdk:1.8 SpringBoot:2.0.0.RELEASE SpringCloud:Finchley.M8 2. 系统 ...
- Android安全开发之浅谈密钥硬编码
Android安全开发之浅谈密钥硬编码 作者:伊樵.呆狐@阿里聚安全 1 简介 在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码.文件中,这样做会引起很大风 ...
- 使用VideoToolbox硬编码H.264<转>
文/落影loyinglin(简书作者)原文链接:http://www.jianshu.com/p/37784e363b8a著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. ======= ...
随机推荐
- Tomcat几种启动报错及解决办法
今天真跪了,tomcat的错想到想不到的都遇到了.不记录一下都愧对今天愁掉的hair 在此之前分享一个集错网站,应该是程序员必备的网站之一,不过纯英文,小酸爽 Tags - Stack Overflo ...
- windows与虚拟机共享文件夹设置
1.在windows上建立共享文件夹2.virtualbox点击设置-共享文件夹-添加共享文件夹指定windows上的路径,指定名称code: 选择自动挂载.固定分配3.在centos上面执行如下命令 ...
- 8.1.2 绑定Activity和Service
8.1.2 绑定Activity和Service 2010-06-21 16:57 李宁 中国水利水电出版社 字号:T | T <Android/OPhone开发完全讲义>第8章Andro ...
- Atitit.播放系统规划新版本 v4 q18 and 最近版本回顾
Atitit.播放系统规划新版本 v4 q18 and 最近版本回顾 1 版本12 (ing)4 1.1 无映射nas系统..4 1.2 图片简介搜刮其4 1.3 12.8. 电影图片增加png, ...
- C++语言基础(4)-构造函数和析构函数
一.构造函数 类似于java,C++中也有构造函数的概念,相关用法如下: 1.1 构造函数的定义 #include <iostream> using namespace std; clas ...
- Creating Context Menu / 创建上下文菜单项 / VC++, Windows, DLL, ATL, COM
创建上下文菜单项 1.新建一个ATL Project. 2.建议将Project Property中Linker – General - “Register Output” 设为no,C/C++ - ...
- Nginx https加密以及nginx日志配置与管理
Nginx https加密以及nginx日志配置与管理 使用Nginx的优点Nginx作为WEB服务器,Nginx处理静态文件.索引文件.自动索引的效率非常高.Nginx作为代理服务器,Nginx可以 ...
- python 旧类中使用property特性的方法
在python中,我们可以拦截对象的所有特性访问.通过这种拦截的思路,我们可以在旧式类中实现property方法. __getattribute__(self, name) #当特性name被访问时自 ...
- jedis连接池的参数配置
<!-- 连接池的配置信息 --> <bean id="jedisConfig" class="redis.clients.jedis.Jedis ...
- mysql 京东
DROP TABLE IF EXISTS `jd_admin`;CREATE TABLE `jd_admin` ( `id` int(10) unsigned NOT NULL AUTO_INCREM ...