On Thu, Jul 20, 2017 at 2:13 AM, Michael Kriegel <[email protected]> wrote: > Removing language features will introduce breaking changes. Removal is more > like an agreement, not to use certain features, so it is the task of a > Linter, which can check, that you do not use "bad things". Strict mode is > another way, which disables a certain set of features, such that it becomes > an error, when you use them. However, it is not very fine granular.
Linters help guide good-faith developers towards the good parts(tm) of the language. Keeping all the bad parts of the language around does impose an ongoing cost though. Obscure implementation-specific extensions and ancient rarely used features can still be rediscovered and used to break out of sandboxes. It's also the old, irregularly maintained code paths that are most likely to allow an attacker to attack underlying layers -- buffer overflows against C code via neglected IDL binding code. As someone who has to keep current on the bad parts, I would appreciate if there were fewer of them. Old code that has legitimate reasons to use ancient features was also written and tested when machines (modulo battery-constrained devices) were slower. If old misfeatures can't be eliminated, I would prefer that old features be reimplemented in terms of newer features where possible even if that imposes a significant performance penalty since that results in fewer code paths close to the metal that are rarely tested openly. > Maybe ES should introduce something like a configuration object, in which > developers can enable / disable or in general configure features for their > module in a fine granular way. Of course all features which exist at the > time of introducing such a mechanism would have to be enabled by default... This could reduce the attack surface for code injection attacks like XSS if done at the realm level. Expanding the configuration space also has security consequences though since you now have to test against all possible configurations or make assumptions about likely or supported configurations. _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

