(PreScript:我最初会在GitHub中提出这个问题,但模板建议一般问题在这里而不是在那里,因为这在技术上真的不是bug。) < / p>
当我们针对TypeScript输出(v 2.1.4)运行SPCAF代码分析框架(v.6.9.2.2802)时,我们会在每个分析的JS文件顶部发出的Extends Helper中发现以下安全风险:
The comma operator used in sequences can cause confusion what the code should actually return
https://docs.spcaf.com/v6/SPC028904_NoCommaOperator.html?version=6.9.2.2802
(此规则基于ESLint规则:http://eslint.org/docs/rules/no-sequences.html)
这与帮助者中的这一行有关:
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
似乎ES Lint规则存在两个语句被逗号分隔而不是分号的问题。
我的问题是:这些陈述是否存在以逗号分隔的真正安全风险,如果可以,可以在助手的发射器中更新?
否则,根据ES Lint关于序列明确包含在parantheses中的规则的例外情况,三元组中的表达式是否可以更新为包含在两个括号中?
答案 0 :(得分:1)
这不是您在此处介绍的生成代码中的一个问题,并且有安全的方法可以使用它,因为有安全的方法可以使用其他形式的JavaScript来引起安全问题。
有一种方法可以使用逗号运算符来间接评估代码。这也可能导致程序员不想要的代码副作用,在某些示例中可以很容易地利用它。
此错误可以从生成的代码中忽略,因为它只是一种可能的安全风险,并且此规则对TypeScript无效。
应为目标语言和平台配置规则。有些规则在某些环境中不适用。
亲切的问候, 休
[源] 我是Rencore GmbH SPCAF创始人的首席开发人员。