简单地说:
我试图在JavaScript对象周围创建一个保护屏障,使用代理为任何形式的检索或操作设置“陷阱”。这些陷阱将要求SessionKey参数被提供有任何这样的对象操纵,否则默认为清除对象的所有信息和属性。
(This当然,SessionKey是用户登录PHP提供的,在成功登录时会发送回来。
如果我没弄错的话,当然我不是这里最资深的程序员,Object只会调用提供了相应SessionKey参数的函数--因为这个Object知道SessionKey。
我不能100%地阻止任何或所有这样的尝试进入我的代码,但也许我可以设置一个“trip”警报,使所有这样的努力都失败。没有会话密钥?没有DOM(.empty()),没有WebServices/API。什么都没有
谢谢你的帮助,我非常感激。
1条答案
按热度按时间roejwanj1#
你想要的东西真的做不到。你可以创建一个代理来捕获检索/操作调用,但是你不能以任何方式使底层对象私有化。
例如,如果您有对象
代理
你可以通过控制台记录代理来得到类似这样的东西:
您可以展开
[[Target]]
以查看底层对象的属性。因此,如果您希望此属性完全私有,则不希望使用代理。此外,如果用户可以检查代理,他们可以很容易地访问底层对象,并在代理陷阱之外对其进行变异。如果你想真正保护这个对象,最好在一个函数闭包中保护它,并在这个对象周围使用getter/setter Package 器。
你可以尝试作为第一步:
所以现在你有了一个受保护的私有对象: