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

sta*_*gas 7 javascript browser security code-injection malware

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

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

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

spe*_*der 24

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

  • 我同意@spender.您的方案的问题是,您可以做的最好的事情是通过默默无闻的安全性.它将耗费您大量的时间和精力,并且永远无法完全解决问题,因此您也必须始终在服务器端执行此操作. (3认同)

And*_*rew 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);
}());
Run Code Online (Sandbox Code Playgroud)

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

  • 一个额外的安全层是将文档,窗口,正文和未定义的变量传递给JS,因此它们是函数的本地变量.`(函数(文档,窗口,未定义){[...]})(文档,窗口);` (4认同)
  • 你应该在最后一行有一个错误`})();`我想 (2认同)