如何使Javascript代码黑客/注入/操作变得困难?

问题描述 投票:7回答:4

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

我知道最终有人会破解他的方式,但我想知道如何使重现行动变得困难,以便人们不会发布书签或类似的东西供所有人使用。我不在乎专家是否在代码中找到了自己的方式,但我希望它比javascript:d=0;更复杂一点

如果你知道如何使黑客攻击Javascript更困难,请写下这些。

javascript security browser code-injection malware
4个回答
13
投票

您可以编写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是一个好主意,因为与事件body.onclick不同,它不能从函数外部删除或覆盖。


24
投票

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


0
投票

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

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

  1. 检查/验证服务器上的每个请求和输入参数,以便用户无法通过触发您编写的“黑客”客户端功能来更改任何服务器端数据。
  2. 检查输出到源自用户输入的屏幕的所有数据。其他用户可能插入了对您的站点有危险的客户端脚本,对您站点上的其他用户尤其危险。 (如果您使用的是.net,请查看AntiXSS库)

-1
投票

混淆和缩小应该使它更难以破解,但我同意花钱。

© www.soinside.com 2019 - 2024. All rights reserved.