在对项目进行安全扫描时,发现一些密码硬编码问题,本文主要三个方面: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)的更多相关文章

  1. Fortify漏洞之Dynamic Code Evaluation: Code Injection(动态脚本注入)和 Password Management: Hardcoded Password(密码硬编码)

    继续对Fortify的漏洞进行总结,本篇主要针对  Dynamic Code Evaluation: Code Injection(动态脚本注入) 和 Password Management: Har ...

  2. Password Management:Hardcoded Password 密码管理:硬编码密码

  3. Password Management:Password in Configuration File 密码管理:配置文件中的密码

  4. Key Management: Hardcoded Encryption key 密钥管理:硬编码加密密钥

  5. Fortify Audit Workbench 笔记 Password Management: Password in Configuration File(明文存储密码)

    Password Management: Password in Configuration File(明文存储密码) Abstract 在配置文件中存储明文密码,可能会危及系统安全. Explana ...

  6. 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- ...

  7. SpringCloud系列二:硬编码实现简单的服务提供者与服务消费者

    从本文开始,以一个电影售票系统为例讲解Spring Cloud 1. 版本 jdk:1.8 SpringBoot:2.0.0.RELEASE SpringCloud:Finchley.M8 2. 系统 ...

  8. Android安全开发之浅谈密钥硬编码

    Android安全开发之浅谈密钥硬编码 作者:伊樵.呆狐@阿里聚安全 1 简介 在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码.文件中,这样做会引起很大风 ...

  9. 使用VideoToolbox硬编码H.264<转>

    文/落影loyinglin(简书作者)原文链接:http://www.jianshu.com/p/37784e363b8a著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. ======= ...

随机推荐

  1. wireshark过滤语法总结 (转载)

    做应用识别这一块经常要对应用产生的数据流量进行分析. 抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后 ...

  2. 安装JDK不当--找不到或无法加载主类 com.sun.tools.javac.Main

    问题描述:我的问题是在使用javac编译测试程序市,出现如下错误: 错误: 找不到或无法加载主类 com.sun.tools.javac.Main 解决办法:当出现这个错误时,百度之,结果很多人都是说 ...

  3. python的threading和multiprocessing模块初探

    转载于:http://blog.csdn.net/zhaozhi406/article/details/8137670

  4. 【MyBatis学习07】动态sql

    1. 动态sql 动态sql是mybatis中的一个核心,什么是动态sql?动态sql即对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装.就拿上一篇博文中对用户的综合查询一例来 ...

  5. MVC中上传文件大小限制的解决办法

    在Web.Config文件中配置限制上传文件大小与时间. 需要在配置文件里面设置文件上传限定的两个属性值:maxAllowedContentLength,maxRequestLength 允许上传文件 ...

  6. es备份

    #!/bin/bash export LC_ALL=en_US.UTF- export LANG=en_US.UTF- Ip=10.0.10.10 Date=$(date +"%Y%m%d& ...

  7. springboot学习(四) 日志管理

    1.简介 Spring Boot内部日志系统使用的是Commons Logging,但开放底层的日志实现.默认为会Java Util Logging, Log4J, Log4J2和Logback提供配 ...

  8. Linux selinux关闭方法和防火墙关闭方法

    在Linux下设置selinux有三种方法.一.在图形界面中:    桌面-->管理-->安全级别和防火墙,设置为disable.二.在命令模式下:    修改文件:/etc/selinu ...

  9. out传值

    public void Out(out int a, out int b)        {//out相当于return返回值            //可以返回多个值            //拿过 ...

  10. Web前端都学点儿啥?

    Web开发如今是如日中天,热的发烫.但是Web开发相关的技术和知识却像N座大山一样,耸立在我们面前,连绵起伏,漫无边际.那么这些山头那些我们应该占领,那些我们应该绕开,很多人看着就蒙了,这不光是初学者 ...