最近,我看到了业务的逻辑。找到了很长时间后,我没有发现它是如何触发的。后来,我发现实际上使用了劫持功能,大致如下:
大致实现的逻辑是在调用保存日志时执行自己的逻辑,例如格式化,通知等。
函数劫持,在运行函数之前对其进行了劫持,添加我们想要的功能。当此功能实际运行时,它不再是原始函数,而是添加到我们的功能。这也是我们常见的挂钩函数之一。
如上所述,一般函数劫持将分为三个步骤:
一开始,我看到上面的代码,但仍然有疑问。将值重新分配给Savelog时,您不会更改Originsavelog的参考方向吗?实际上,它只会将Savelog指向另一个参考地址。
很容易理解以下示例:
基本:当两个对象指向相同的地址时,修改特定对象的属性,另一个对象将相应地更改
基本:当新对象分配给对象变量时,对象变量指向新对象的参考地址,以及与旧参考的相关性
例如,上面的第一个示例,在原始功能上,实现特定的逻辑。
通常,XSS攻击将使用输出信息的方法首先测试。目前,我们可以劫持原始内容,输入跟踪信息的代码,最后执行原始功能。
如下:
在Mock.js中,是劫持本机XMLHTTPRequest(或ActiveXobject)以确定是否存在匹配的数据模板。如果找到它,请拦截XHR请求执行与其自己规则相对应的逻辑的逻辑。如果找不到匹配的数据模板,则本机XHR发送请求。请详细介绍。
JavaScript中的功能性劫持是一种增强原始功能的技术。通常,我们用来增强原始JavaScript全局方法的某些功能。
原始:https://juejin.cn/post/7103837916274622494