代码之家  ›  专栏  ›  技术社区  ›  stagas

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

  •  7
  • stagas  · 技术社区  · 14 年前

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

    我知道最终会有人闯入,但我想知道如何使复制动作变得困难,这样人们就不会出版书签或其他类似的东西供大家使用。我不在乎专家们在代码中找到他们的方法,但我希望它比 javascript:d=0;

    如果你知道让黑客javascript变得更困难的方法,请写下这些。

    4 回复  |  直到 7 年前
        1
  •  13
  •   Andrew    14 年前

    您可以编写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 ,因此,如果您真的是偏执狂,您可以在页面加载之前将它们复制到您的函数范围中,并且用户有机会覆盖它们。使用 添加事件侦听器 是个好主意,因为与活动不同 body.onclick ,它不能从函数外部删除或覆盖。

        2
  •  24
  •   spender    14 年前

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

        3
  •  0
  •   Ganj Khani gillyb    7 年前

    任何真正想篡改客户机的用户都可以。密码在他的机器上。即使您混淆了客户机端代码,也有一些工具可以帮助用户在一秒钟内将代码还原。

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

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

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

        4
  •  -1
  •   JoshNaro    14 年前

    模糊化和缩小化会让黑客攻击变得更加困难,但我同意斯宾德的观点。