【发布时间】:2015-09-04 09:34:15
【问题描述】:
您能否分享您对在 Javascript 中创建私有和受保护成员的看法。
我的意思是真正的保护,而不仅仅是像 Douglas Crockford 所说的那样。
请勿使用 _(下划线)作为名称的第一个字符。它有时用于表示隐私,但实际上并不提供隐私。如果隐私很重要,请使用提供私人成员的表格。避免表现出缺乏能力的惯例。
"use strict";
function MyMain(){
this.checkauth=false;
}
MyMain.prototype.init=function(){
return Object.create(this);
}
MyMain.prototype.authenticate=function(key){
//resp is server response hold true for the given key. here validate method will interact with server and get concerned response
var resp=validate(key);
if(resp){
this.checkauth=true;
return true;
}
return false;
}
MyMain.prototype.test=function(){
if(this.checkauth==true){
console.log("this is working")
}else{
console.log("Not authorized")
}
}
好吧,我没能解释清楚,请参阅我所做的编辑。
我无意在客户端进行授权。我在服务器上实现了它并让私人成员成为真实的,说服务器已经验证了用户,我的问题是如何确保它的安全。
有权访问我的 Javascript 文件的用户可以读取所有文件并像这样进行身份验证。
var main=new MyMain();
main.checkauth=true;
main.test();
寻求有关通过 javascript 创建安全身份验证的帮助。
【问题讨论】:
-
永远不要相信客户端代码。 始终在服务器端验证用户输入。
-
“寻求有关通过 javascript 创建安全身份验证的帮助。”我想你能得到的最好帮助是:不要。
-
您认为“受保护的成员”根本无法检查或访问吗?恐怕我不得不打消你这个念头。 “传统”隐私在实际安全性方面并不比其他任何东西更安全。它仍然只是在您的浏览器中运行的 Javascript。成员封装和访问保护只是为了帮助开发人员传达预期用途,仅此而已。就这一点而言,下划线与作用域变量的价值相同。
标签: javascript oop private-members