答案 0 :(得分:5)
针对用户篡改全局变量的最佳解决方案是不具有全局变量。但这比安全事情更像是一种好的做法。
您似乎对客户端代码的工作原理有一点误解。 客户端代码在客户端上运行。您无法控制客户端,您的用户。您给我的浏览器代码,并请它按照您的意图运行它。浏览器完全没有义务按照您的意图实际运行代码。
从安全角度来看,永远不要假设您的客户端代码曾按预期运行。即使Curt的建议也可以通过使用调试器和开发人员控制台轻松克服。
永远不要依赖用户输入。永远不要依赖客户端验证。切勿将有关任何其他用户的任何敏感信息发送给客户。您发送的任何信息都可以用于您。
答案 1 :(得分:3)
就安全漏洞而言,前端不是一个关注自己的地方。 Javascript不会保护您免受此攻击。
您也无法阻止用户操纵全局变量。他们可以在控制台中访问它们。
我会质疑你为什么用变量弄乱全局命名空间。
此处最好的选择是创建 Revealing Module Pattern ,以创建私有变量。
focusNode
然而,这更多地用于封装,而不是用于安全性益处。 客户端没有安全性。这应该都是服务器端处理的。