在对项目进行安全扫描时,发现一些密码硬编码问题,本文主要三个方面: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. 【MyBatis学习03】原始dao开发方法及其弊端

    上一篇博文总结了一下mybatis的入门,接下来就要开发dao方法了,这篇博文主要总结一下mybatis中原始dao开发的方法,最后并总结一下原始dao开发方法的弊端.mybatis中dao开发应该使 ...

  2. Service#onStartCommand返回值解析

    Service#onStartCommand返回值解析 Service类有个生命周期方法叫onStartCommand,每次启动服务(startService)都会回调此方法.此方法的原型例如以下: ...

  3. springboot学习(九) 使用mybatis访问数据库

    1.添加maven依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId ...

  4. C# 运行时中的泛型

    将泛型类型或方法编译为 Microsoft 中间语言 (MSIL) 时,它包含将其标识为具有类型参数的元数据. 泛型类型的 MSIL 的使用因所提供的类型参数是值类型还是引用类型而不同. 第一次用值类 ...

  5. 189. Rotate Array【easy】

    189. Rotate Array[easy] Rotate an array of n elements to the right by k steps. For example, with n = ...

  6. mysql数据库记录

    ON DELETE restrict(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除. no action:意思同restrict.即如果存在从数 ...

  7. angularjs 可以加入html标签方法------ng-bind-html的用法总结(2)

    angular-ngSanitize模块-$sanitize服务详解 本篇主要讲解angular中的$sanitize这个服务.此服务依赖于ngSanitize模块. 要学习这个服务,先要了解另一个指 ...

  8. vue的计算属性

    在模板中写入过多的逻辑使模板过重且难以维护.因此有了计算属性(computed)的产生. 你可以像绑定普通属性一样在模板中绑定计算属性,vue知道计算属性中的函数依赖data中的数据.所以当data中 ...

  9. Java并发编程(十三)在现有的线程安全类中添加功能

    重用现有的类而不是创建新的类,可以降低工作量,开发风险以及维护成本. 有时候线程安全类可以支持我们所有的操作,但更多时候,现有的了类只能支持大部分的操作,此时就需要在不破坏线程安全性的情况下添加一个新 ...

  10. Customize Netbeans Platform Splash Screen and About Dialog

    原帖一直打不开,通过谷歌翻译找到的 http://blogs.kiyut.com/tonny/2007/10/18/customize-netbeans-platform-splash-screen- ...