【发布时间】:2012-10-15 10:03:23
【问题描述】:
有没有办法在 javascript 中声明一个静态的最终值,这样它就不能被第 3 方更改?
我拥有的是一个文章共享应用程序,支持免费用户的广告。 我希望做的是阻止免费用户通过更改内容的存储变量来更改 innerHTML 内容。
我现在有一个计时器,它每 5 秒在用户网站上重新加载文章的 innerHTML,我将重新加载的值存储在一个变量中。
但是,如果使用 jsbeatify 的天才探索了哪个变量是删除广告的关键并改变了它,我们就会失去收入和产品的曝光率。
如何防止内部变量被篡改?
更新
这是我想出的最终结果:
<div id="specialdiv"></div>
<input type="button" value="try to change the function i to do something different" onclick="t.i = function(){alert(data.secret);}"><BR>
<input type="button" value="set function to null out of spite" onclick="t=null;">
<script type="text/javascript">
e = function(){var data = { };
Object.defineProperty(data, 'secret', {
value: "Hello world!",
writable : false,
enumerable : true,
configurable : false
});this.z=function(){window.setTimeout("try{document.getElementById('specialdiv').innerHTML = '"+data.secret+"';t.i.z();}catch(err) {document.body.innerHTML=err;}",5000);}}
g = function(){};
g.prototype = new e();e=null;window.t = {}
Object.defineProperty(window.t, 'i', {
value: new g(),
writable : false,
enumerable : false,
configurable : false });g = null;
window.t = Object.freeze(window.t); t = Object.seal(window.t);
t.i.z();
</script>
这将以打包格式呈现,只是为了更难将代码从源代码中复制出来。 这样一来,简单地复制和粘贴代码的工作就会最大化,而且很难自动化。
谢谢大家的回答。
【问题讨论】:
-
你又在工作的网站叫什么名字?
-
你不应该关心能够做到这一点的极少数用户,页面在用户浏览器中加载后无法控制
标签: javascript static final