7

有没有办法阻止或使其变得足够困难,让某人注入 Javascript 并操纵变量或访问函数?我的一个想法是在每次重新加载时随机更改所有 var 名称,以便每次都需要重写恶意软件脚本?或者还有其他不那么痛苦的方法吗?

我知道最终有人会闯入,但我想知道如何使重现动作变得困难,这样人们就不会发布书签或类似的东西供所有人使用。我不在乎专家是否在代码中找到自己的方式,但我希望它比javascript:d=0;

如果你知道如何让破解 Javascript 变得更加困难,请写下这些。

4

4 回答 4

23

接受您的 javascript 将被“操纵”并在服务器端进行配置。从根本上说,您无法阻止人们修补客户端。

于 2010-07-07T12:30:18.503 回答
12

您可以编写 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);
}());

[编辑] 上面的代码很容易被用户覆盖你正在使用的任何全局可用的对象、方法、事件或属性(在这种情况下documentgetElementsByTagNameaddEventListener),所以如果你真的很偏执,你可以将它们复制到你的函数范围之前页面已加载,用户有机会覆盖它们。使用addEventListener是一个好主意,因为与 event 不同body.onclick,它不能从函数外部删除或覆盖。

于 2010-07-07T12:43:14.967 回答
0

任何真正想要篡改客户端的用户都可以。代码在他的机器上。即使您混淆了客户端代码,也有一些工具可以帮助某人在一秒钟内对代码进行反混淆。

但是,您需要考虑的是使站点在服务器上安全,并且对其他用户也安全。这意味着(至少):

  1. 检查/验证服务器上的每个请求和输入参数,以便用户无法通过触发您编写的“被黑”客户端函数来更改任何服务器端数据。

  2. 检查您输出到屏幕的所有源自用户输入的数据。其他用户可能插入了对您的站点很危险的客户端脚本,对您站点上的其他用户尤其危险。(如果您使用的是 .net,请查看 AntiXSS 库)

于 2010-07-17T08:08:12.543 回答
-1

混淆和缩小应该使它更难破解,但我同意spender的观点。

于 2010-07-16T18:47:10.270 回答