0

我在 gae 中用 java 创建了一个应用程序,并针对 checkmarx 运行它以检查安全漏洞,它在标题下抛出错误 - 客户端潜在代码注入。它在以下行显示错误:

var email = $(this).text();

下面是我的代码片段,我不确定为什么在使用它之前转义电子邮件时它仍然抛出错误:

$("#user-modal .user-list li").click(function() {
  $("#user-modal").hide();
  var email = $(this).text();
  var escapedEmail = escapeHtml(email);
  $("input#user").val(escapedEmail);
  loadAllData(email);
});

这是 loadAllData 方法使用传递的电子邮件值所做的事情:

function loadAllData(email) {
            $("#user-modal").modal('hide');
            userEmail = email;
            userParam = "";
            if (userEmail) {
                userParam = "?userEmail=" + userEmail;
            }
            requestGroups("");
            requestAdminRoles("");
            requestOrganizationalUnits("");

            // Search
            $("button.refresh-ou").bind("click", function(){
                var searchString = "/" + $("input.search-ou").val();
                requestOrganizationalUnits(searchString);
            });
            $("button.refresh-role").bind("click", function() {
                var searchString = "/" + $("input.search-role").val();
                requestAdminRoles(searchString);
            });
            $("button.refresh-group").bind("click", function() {
                var searchString = "/" + $("input.search-group").val();
                requestGroups(searchString);
            });
        }

任何人都可以帮忙吗?

4

1 回答 1

0

来自owasp.org > M7:客户端注入 > 如何防止“客户端注入”?

如何防止“客户端注入”? 一般来说,保护您的应用程序免受客户端注入需要查看您的应用程序可以接收数据的所有区域并应用某种输入验证。在某些情况下,这很简单,但在其他情况下,这更复杂

显然,OP 的示例更复杂:用户输入被发送到设置全局变量的函数,因此现在必须全局检查程序。

iOS 特定的最佳实践:

  • SQLite 注入:在为 SQLite 设计查询时,请确保将用户提供的数据传递给参数化查询。这可以通过查找使用的格式说明符来发现。通常,危险的用户提供的数据将由“%@”而不是“?”的适当参数化查询说明符插入。
  • JavaScript 注入(XSS 等):确保所有 UIWebView 调用在没有正确输入验证的情况下不会执行。如果可能,对危险的 JavaScript 字符应用过滤器,在渲染之前使用白名单而不是黑名单字符策略。如果可能,请调用移动 Safari,而不是在可以访问您的应用程序的 UIWebkit 内部进行渲染。
  • 本地文件包含:对 NSFileManager 调用使用输入验证。
  • XML 注入:在 NSXMLParser 上使用 libXML2
  • 格式字符串注入:一些 Objective C 方法容易受到格式字符串攻击:
    • NSLog, [NSString stringWithFormat:], [NSString initWithFormat:], [NSMutableString appendFormat:], [NSAlert informationativeTextWithFormat:], [NSPredicate predicateWithFormat:], [NSException format:], NSRunAlertPanel。
    • 不要让您无法控制的来源(例如来自其他应用程序或 Web 服务的用户数据和消息)控制格式字符串的任何部分。
  • 经典 C 攻击:Objective C 是 C 的超集,避免使用易受注入攻击的旧 C 函数,例如:strcat、strcpy、strncat、strncpy、sprint、vsprintf、gets 等。

Android 特定最佳实践:

  • SQL 注入:在处理动态查询或内容提供程序时,请确保您使用的是参数化查询。
  • JavaScript 注入 (XSS):验证是否为任何 WebView 禁用了 JavaScript 和插件支持(通常是默认设置)。
  • 本地文件包含:验证是否为任何 WebView 禁用了文件系统访问 (webview.getSettings().setAllowFileAccess(false);)。
  • Intent Injection/Fuzzing:验证动作和数据是否通过 Intent Filter 对所有活动进行验证。
于 2022-01-26T15:15:48.423 回答