作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个网站“obfuscator.io”,它混淆了 Javascript 代码。它的功能之一是“自卫”。它变成了一个简单的console.log()
进入这个:
var _0x2a3a06=function(){var _0x409993=!![];return function(_0xe0f537,_0x527a96){var _0x430fdb=_0x409993?function(){if(_0x527a96){var _0x154d06=_0x527a96['apply'](_0xe0f537,arguments);_0x527a96=null;return _0x154d06;}}:function(){};_0x409993=![];return _0x430fdb;};}();var _0x165132=_0x2a3a06(this,function(){var _0x46b23c=function(){var _0x4c0e23=_0x46b23c['constructor']('return\x20/\x22\x20+\x20this\x20+\x20\x22/')()['constructor']('^([^\x20]+(\x20+[^\x20]+)+)+[^\x20]}');return!_0x4c0e23['test'](_0x165132);};return _0x46b23c();});_0x165132();console['log']();
该代码在 Webkit 控制台中确实可以工作,但是当您使用诸如“beautifier.io”或“de4js”之类的应用程序对其进行美化并再次在同一个控制台中运行它时,代码会进入无限循环,本质上会破坏代码。这是如何运作的?它与美化器的工作方式或 Javascript 解释代码的方式有关吗?
最佳答案
像你一样通过美化器运行代码,然后应用一些基本的变量重命名和取消转义产生以下代码:
var makeRun = function() {
var firstMakeRun = true;
return function(global, callback) {
var run = firstMakeRun ? function() {
if (callback) {
var result = callback['apply'](global, arguments);
callback = null;
return result;
}
} : function() {};
firstMakeRun = false;
return run;
};
}();
var run = makeRun(this, function() {
var fluff = function() {
var regex = fluff['constructor']('return /" + this + "/')()['constructor']('^([^ ]+( +[^ ]+)+)+[^ ]}');
return !regex['test'](run);
};
return fluff();
});
run();
console['log']()
重要的部分是它在哪里测试正则表达式
/^([^ ]+( +[^ ]+)+)+[^ ]}/
反对
run
函数本身,执行隐式
run.toString()
.
run
函数后面不包含多个空格,结束符前面没有空格
}
.
关于javascript - Javascript self 防御是如何工作的,它是如何在美化时进入无限循环的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64583150/
我正在 node.js 中开发一个项目,该项目使用 mongoose 来处理 MongoDB。我想防御 XSS 攻击。建议的方法是什么?我找到了这个: https://www.npmjs.com/pa
如果某些 .html 文件只能通过密码匹配(在 PHP 中实现)与数据库中的哈希码来访问,用户仍然可以猜测可能的 .html 文件名并看到所谓的特权页面。查看特权页面的源代码,然后用户可以看到在该 .
问题 我们需要防御 Java 应用程序中的“WAITFOR DELAY”sql 注入(inject)攻击。 背景 [这很长。跳至“解决方案?”如果您很着急,请参阅下面的部分] 我们的应用程序在访问数据
我正在使用backbone和node.js创建一个网站,并且不认为默认情况下有任何针对CSRF的保护。在使用 Node.js 和 Backbone 时,是否有针对 CSRF 的标准方法?谢谢 最佳答案
我是一名优秀的程序员,十分优秀!