You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS使用eval()触发SonarQube Code Injection(RCE)报错修复求助

修复方案

一、翻译指令中eval() RCE风险修复

你当前代码的风险来源为直接使用eval()执行用户可控的$scope.value参数,一旦传入恶意构造的JS代码片段,将直接触发远程代码执行。

修复方案:用JSON.parse()替代eval()

如果你使用eval('(' + $scope.value + ')')的目的是将JSON格式字符串转为JS对象,直接替换为JSON.parse()即可,同时补充异常捕获逻辑处理非法输入:

$scope.$watch('value', function() {
    if ($scope.value) {
        $scope.value = $scope.value.trim();
        if (/^[A-Z0-9|_]*$/.test($scope.value)) {
            var translatedValue = translator[$scope.value];
            // 若translator内容不可信,建议替换为element.text(translatedValue)避免XSS
            element.html(translatedValue);
            return;
        } else {
            try {
                // 替换eval为JSON.parse
                var value = JSON.parse($scope.value);
                translateItem(value);
            } catch (e) {
                // 非法格式输入自定义兜底逻辑,比如直接展示原内容、报错提示等
                element.text($scope.value);
            }
        }
    }
});

如果你的业务场景确实需要执行动态表达式而非解析JSON,也禁止直接使用eval(),可采用白名单机制:提前预设允许执行的表达式列表,仅当用户输入匹配白名单规则时才执行对应逻辑,完全屏蔽用户输入直接作为代码执行的路径。

二、jQuery同类RCE报错修复

jQuery触发同类报错通常是因为使用了存在安全漏洞的旧版本,或是调用jQuery方法时传入了用户可控的未过滤内容,修复方案如下:

  • 优先将jQuery升级到官方维护的安全稳定版本(3.7.x及以上),修复官方已披露的注入类安全漏洞
  • 所有传入jQuery方法的用户可控内容都做安全处理:插入内容时优先使用.text()而非.html(),如果必须插入HTML内容,先经过XSS过滤工具处理
  • 禁止直接将用户输入的字符串作为选择器、事件回调代码传入jQuery的相关方法

内容的提问来源于stack exchange,提问作者Ranjan Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:30:01