> On Oct 2, 2017, at 1:13 AM, Félix Cloutier via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> If you tried hard enough, you could probably create a variable that looks 
> like it's shadowing one from an outer scope while it actually isn't, and use 
> the two to confuse readers. This could trick people into thinking that some 
> dangerous/backdoor code is actually good and safe, especially in the 
> open-source world where you can't always trust your contributors.
> 
> On one hand, other than the complexity of telling if two characters are 
> lookalikes, I don't know why Αrray (GREEK CAPITAL LETTER ALPHA) and Array 
> (LATIN CAPITAL LETTER A) should be considered different identifiers. On the 
> other hand, I struggle to imagine the specifics of an exploit that uses that. 
> You'd have to work pretty hard to assemble all the pieces of a backdoor in 
> visually-similar variable names without arousing suspicion.

I don’t think this is something we have to try hard to avoid.  It is true that 
some characters look similar, particularly in some fonts, but this isn’t new:

   let a1 = 42
   let al = 12
   let b = al + a1 

If there were real code that was maliciously shadowing to try to cause 
confusion, then you have a more serious problem on your hands than someone 
accidentally misunderstanding which one to use.

All I’m saying is that we shouldn’t complicate the design to solve this problem 
(IMO).  If it falls out of the solution somehow (e.g. just disallow invisible 
characters) then that’s great of course!

-Chris

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to