apex checkmarx 篡改问题

问题描述 投票:0回答:1

如何解决checkmarx中的错误?

Id clientId = (id)inputMap.get('ClientId')

账户a= [选择Id, Client__c, ParentId, Parent.RecordType.DeveloperName,CI_ClientID__c 来自 ID = 的帐户:clientId limit 1000] 但它不起作用。

错误是:方法invokeMethod从元素inputmap获取用户输入。此输入稍后由应用程序直接连接到包含 SQL 命令的字符串变量中,而无需进行验证。然后,该字符串在第 55 行的方法中用于查询数据库选择,而无需数据库进行任何额外的过滤。这可能允许用户篡改过滤器参数。

请帮忙

apex checkmarx
1个回答
0
投票

也许此代码会对您有所帮助,因为此错误与未经验证而使用用户的输入数据有关。 Checkmarx 警告代码可能容易受到攻击。

Id clientId = (Id)inputMap.get('ClientId');

if (clientId != null) {
    // Escaping user input before using it in a query
    String escapedClientId = String.escapeSingleQuotes(clientId);
    
    Account a = [
       SELECT Id, Client__c, ParentId, Parent.RecordType.DeveloperName, CI_ClientID__c 
       FROM Account 
       WHERE Id = :escapedClientId 
       LIMIT 1000
    ];

} else {
    // Error or action to take if the value is missing clientId
}
© www.soinside.com 2019 - 2024. All rights reserved.