有没有办法防止或使其难以让某人注入Javascript并操纵变量或访问函数?我的想法是在每次重新加载时随机更改所有var名称,以便每次都需要重写恶意软件脚本?还是有其他不那么痛苦的方法?
我知道最终有人会破解他的方式,但我想知道如何使重现行动变得困难,以便人们不会发布书签或类似的东西供所有人使用。我不在乎专家是否在代码中找到了自己的方式,但我希望它比javascript:d=0;
更复杂一点
如果你知道如何使黑客攻击Javascript更困难,请写下这些。
您可以编写JS以在自执行函数中仅使用私有方法和变量。例如,以下代码在全局命名空间中没有任何符号表示任何人都可以使用。
(function(){
var x = 1;
var y = 2;
var z = "A am z";
var clickHandler = function() {
alert('You clicked the body');
};
document.getElementsByTagName('body')[0].addEventListener('click',clickHandler,true);
}());
[编辑]以上代码容易被用户覆盖您正在使用的任何全局可用对象,方法,事件或属性(在本例中为document
,getElementsByTagName
和addEventListener
),所以如果您真的是偏执狂,您可以将这些复制到您的函数中页面加载之前的范围,用户有机会覆盖它们。使用addEventListener
是一个好主意,因为与事件body.onclick
不同,它不能从函数外部删除或覆盖。
接受您的javascript将被“操纵”并在服务器端进行配置。从根本上说,你无法阻止人们修补客户。
任何真正想要篡改客户端的用户都能够。代码在他的机器上。即使您对客户端代码进行了模糊处理,也会有一些工具可以帮助某人在一秒钟内对代码进行反混淆处理。
您需要考虑的是使网站在服务器上安全,对其他用户也是安全的。这意味着(至少):
混淆和缩小应该使它更难以破解,但我同意花钱。