Fortify漏洞修复总结

本文详述了Fortify扫描中发现的多种安全漏洞,包括代码注入(命令注入、js动态代码注入、JSON注入、SQL注入)、不安全随机数(PHP和JS的修复策略)、硬编码密码以及其他的如空密码问题、变量覆盖等。提供了具体的修复方案,旨在提升应用的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.代码注入

1.1 命令注入

命令注入是指应用程序执行命令的字符串或字符串的一部分来源于不可信赖的数据源,程序没有对这些不可信赖的数据进行验证、过滤,导致程序执行恶意命令的一种攻击方式。

问题代码:

$dir = $_POST['dir']
exec("cmd.exe /c dir" + $dir); 

修复方案:
(1)程序对非受信的用户输入数据进行净化,删除不安全的字符。
(2)限定输入类型, 创建一份安全字符串列表,限制用户只能输入该列表中的数据。 修复例子:

 //方式1
            if (!preg_match('/^[\w\.:\-]+$/', $dir) ){
                 // Handle error
            }
            
          $cmd = filter_var($cmd, FILTER_VALIDATE_REGEXP, 
          array("options" => array("regexp" => getCommandFilterReg())));
          ...
           $msg = escapeshellarg($msg);
           //方式2
        function cmd_arg($cmd, $filter='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.')
        {
        	$filter_chars = str_split($filter);
        	$filter_chars = array_combine($filter_chars, $filter_chars);
        	$cmd_chars = str_split($cmd);
        	$ret = '';
        
        	foreach ($cmd_chars as $v)
        	{
        		$ret .= isset($filter_chars[$v]) ? $filter_chars[$v] : '';
        	}
        
        	return $ret;
        }
      $cmd = cmd_arg($cmd);  

  

1.2 js动态代码注入

(1)主要是前端使用了eval函数来解析服务端的响应

evalResponse: function() {
    try {
      return eval((this.transport.responseText ));
    } catch (e) {
      this.dispatchException(e);
    }

  

修复方案: a.不要使用eval函数,使用自定义函数替换

function _dhtmlxEvalData( code )
{
	var script;
		
	if ( code ) {
		var data_key = '_process_json_data_'+parseInt( rand(0,1000000000000));
		code = 'window["'+data_key+'"]=('+code+');'
		// If the code includes a val
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值