Detects "variable[key]" as a left- or right-hand assignment operand (security/detect-object-injection
)
recommended
config.
JavaScript allows you to use expressions to access object properties in addition to using dot notation. So instead of writing this:
object.name = 'foo';
You can write this:
object['name'] = 'foo';
Square bracket notation allows any expression to be used in place of an identifier, so you can also do this:
const key = 'name';
object[key] = 'foo';
By doing so, you've now obfuscated the property name from the reader, which makes it easy for a malicious actor to replace the value of key
and change the behavior of the code.
This rule flags any expression in the form of object[expression]
no matter where it occurs. Examples of patterns this will be flagged are:
object[key] = value;
value = object[key];
doSomething(object[key]);
More information: The Dangers of Square Bracket Notation