应用软件安全编程--26不要硬编码敏感信息

硬编码如密码、服务器 IP 地址、加密密匙这样的敏感信息,会将信息暴露给攻击者。任何一个可以访问类文件的人都可以对其进行反编译,然后得到敏感信息。因此,程序不能对敏感信息进行硬编码。对敏感信息进行硬编码会使代码管理变得更复杂。例如,在一个已部署的程序中,改变其硬编码密码需 要发布补丁。对敏感数据进行硬编码会向攻击者泄露信息。

对于不要硬编码敏感信息的情况,示例1给出了不规范用法(Java 语 言 )示例 。 示例2给出了规范用法(Java 语言)示例。

示例1:

class   IPaddress{

String   ipAddress   =   new   String("172.16.254. 1");

public  static  void  main(String[]  args)(

 

代码在一个 String常量中对服务器 IP 地址进行了硬编码。使用java 反编译工具(例如:javap  -c IPaddress) 进行反汇编,从而可以得到硬编码的服务器 IP 地址。

示例2:

class  IPaddress{

public static void main(String[] args) throws IOException {

char[]  ipAddress  =  new  char[100];

BufferedReaderbr = new BufferedReader(new InputStreamReader(new

FileInputStream("serveripaddress.txt")));

// Reads the server IP address into the char array,

// returns the number of bytes read

int   n   =br.read(ipAddress);

//     Validate     server     IP     address

// Manually clear out the server IP address

// immediately after use

for(inti=n- 1;i>=0;i-){

ipAddress[i]=0;

 

br.close();

 

 

代码通过一个安全目录下的外部文件得到服务器 IP 地址。通过使用后立即清除内存中的服务器 IP,可以防止进一步泄露。

你可能感兴趣的:(应用软件安全编程,安全,java,开发语言)