Ema*_*ail 10 javascript regex function
我们有一个类似于Greasemonkey的OpenSource Extension,仅用于Firefox.用户可以提交(Java)脚本供其他用户运行. 这会通过发送恶意代码而被滥用.
我们希望将来使用提交的代码的脚本进行粗略的自动检查.
我们不允许或不想进一步调查:
我们已经过滤了:
有什么可以帮助:
谢谢你的想法!!
编辑:
我想到目前为止这是它.感谢每一位贡献者!欢迎找到一个广泛有效的正则表达式来过滤已经混淆的代码.
添加您的任何想法,并记住这是一个粗略的检查.
事先提示:也可以通过Google的Closure编译器运行代码,轻松摆脱像window['e'+'v'+'a'+l]('....')和字符转义序列这样的构造\x65\x76\x61\x6c.
不仅要检查功能危险.例如,类型化数组是用垃圾填充内存的简单方法,导致用户操作系统不稳定.如果脚本量允许,我建议在沙箱中测试脚本,例如在VM中.
window.pollute = new ArrayBuffer(2e9); // Reserves 2 GB of memory
while(1); // Infinite loops
Run Code Online (Sandbox Code Playgroud)
全局对象(这些对象的任何排列):
windowdocument.defaultViewtopparentframesselfcontent其他:
Function构造和setTimeout/ setInterval变相评估和演示-一个字符串参数document.createElement - 可能注入代码或外部资源.cloneNode/ appendChild/ replaceChild/ insertBefore- 与动态元素结合时危险.document.scripts - 基本上任何DOM操作!document.cookie/ localStorage/globalStorageXMLHttpRequestdocument.forms - HTTP请求document.anchors/ document.links- 欺骗链接?document.applets/ document.embeds/document.pluginsdocument.load - 加载(XML)文档document.execCommand - 对当前文档执行命令Image/ Audio- HTTP请求open (弹出窗口)document.open/ document.write/ document.writeln-更换或在当前页面中注入任意数据innerHTML/ outerHTML- 与上一个相同(outerHTML在FF中不存在)setAttribute,addEventListener等等.Worker - 从外部来源加载Web工作者(!)location/ document.URL- 更改页面的位置history - 历史/位置操纵(!)document.implementation - 创建任意文档.DOMParser - 创建任意文档.Object.defineProperty/ __defineGetter__/ __defineSetter__等WebSocket/MozWebSocketconsole 或其任何财产debugger 语句 - 用作调试目的的断点InstallTrigger- 用于管理安装的特定于 Firefox的对象.File/ FileReader/ FormData/MozBlobBuilderPackages/java困惑
..检测可以通过两种方式完成(搜索功能或输出).
搜索混淆函数:
unescape/escapeencodeURIComponent/decodeURIComponentencodeURI/decodeURIbtoa/atob/\\x[0-9a-f]{2}|\\u\d{4}/i - 匹配编码字符的模式.搜索混淆输出:
[^']{23,}?