首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript:结合object.seal(类)和object.seal(class.prototype)就足够了吗?

javascript:结合object.seal(类)和object.seal(class.prototype)就足够了吗?
EN

Stack Overflow用户
提问于 2011-04-23 05:31:51
回答 1查看 749关注 0票数 1

结合使用Object.seal(类)和Object.seal(Class.prototype)是否足以“保护”我的类不被滥用?

这是我的班级:

代码语言:javascript
复制
var Lazy;
(function(){
  var value;
  var value_exists=false;
  var init;
  Lazy=function(_init){
    init=_init;
  };
  Lazy.prototype={get V(){
                    if(!value_exists){
                      value=init();
                      value_exists=true;
                    }
                    return value;
                  },set V(_value){
                    value=_value;
                    value_exists=true;
                  }};
  Object.seal(Lazy);Object.seal(Lazy.prototype);
})();

它是这样工作的,我的代码首先运行。然后获取mashup的代码(可能是动态生成的)并运行。问题是我不知道mashup是友好的还是脏的。因此,我要保护我的脚本不受他的脚本的影响,他的脚本是在我的代码首先运行之后才运行的。

他可能不是一个“真正的攻击者”。但如果他弄乱了我的代码,应用程序很可能会抛出异常并停止运行。这不是我想让我的用户体验的。因此这个问题对我来说很重要。

我知道用户可以破解源代码,因为客户端没有什么是安全的。但是对于这个问题,我们可以假设这里的用户不是攻击者。我的目的很明确:我不希望我的用户在使用站点时遇到异常(由于我在站点中包含的那些mashup)。如果用户本身是一个攻击者,我没有问题让他体验所有有趣的事情,无论如何这是他自己的问题。

我担心的是mashup中的代码。(我的网站不允许用户注入任何代码,但mashup可以做到这一点)

EN

回答 1

Stack Overflow用户

发布于 2011-04-23 14:18:20

代码语言:javascript
复制
Object.freeze(Lazy);
Object.freeze(Lazy.prototype);

Object.freeze是Object.seal,然后是更多;它还使现有属性不可写(请参阅this article)。这就是你所能得到的最核心的东西。但作为一种真正的保护机制,它仍然无用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5760266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档