JavaScript原生代码检测:现有方案缺陷及改进补丁的漏洞问询
原生代码检测的常见缺陷与补丁方案探讨
目前大量关于“原生代码检测”的文章里,多数采用简单的字符串检查WebSocket.toString()来判断原生函数是否被篡改,但这种方法效率低下且极易被绕过。
比如可以通过以下两种方式轻松绕过这类检测:
方式一:使用Proxy拦截toString调用
window.WebSocket = new Proxy(window.WebSocket, { get(target, property){ if(property == 'toString'){ return () => 'function WebSocket() { [native code] }' } return target[property] } })
方式二:直接重写toString方法
window.WebSocket.toString = () => {return 'function WebSocket() { [native code] }'}
经过思考,我构思出一种可行的补丁方案,现将该方案附于下方,想请教各位对该方案的看法,以及是否存在漏洞?
内容的提问来源于stack exchange,提问作者RovenA
相关产品推荐
相关产品推荐

