Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测页面上javascript事件的注入_Javascript - Fatal编程技术网

检测页面上javascript事件的注入

检测页面上javascript事件的注入,javascript,Javascript,我试图让我的网站更安全,并检测脚本注入。 假设浏览器将示例:使用扩展或控制台将以下事件脚本插入到页面中: document.addEventListener("click", Maliciousfunction); document.getElementById("demo").addEventListener("click", function(){ window.alert("Test"); }); 站点是否有任何功能来检测此问题?例如: //Return: name of functio

我试图让我的网站更安全,并检测脚本注入。 假设浏览器将示例:使用扩展或控制台将以下事件脚本插入到页面中:

document.addEventListener("click", Maliciousfunction);
document.getElementById("demo").addEventListener("click", function(){
window.alert("Test");
});
站点是否有任何功能来检测此问题?例如:

//Return: name of function "Maliciousfunction" or function code
document.getEventCode('onclick');
//Return: function code window.alert("Test");
document.getElementById("demo").getEventCode('onclick');
这在某种程度上是可能的,但它很复杂,也不会那么有用——最终,它是客户机的浏览器,因此客户机可以运行他们想要的任何代码

您可能最接近的方法是覆盖您想要阻止其使用的所有本机函数,例如:

(() => {
  // First extract the properties you want to be able to use here:
  const { addEventListener } = EventTarget;
  const { alert } = window;

  // in order to use them asynchronously (after they've been overwritten below), use `.call`:
  addEventListener.call(myElement, 'click', () => { alert('clicked!'); });

  // at the end of the IIFE, overwrite all of those functions:
  EventTarget.addEventListener = null;
  window.alert = null;
})();
相同类型的模式可用于提取和覆盖任何内置函数

如果您的代码在注入的代码之前运行,则注入的代码将无法再访问alert或addEventListener。但是,如果注入的代码在您的代码之前运行,它可能只保存对这些函数的引用,并使用它们而不会出现问题-即使您稍后覆盖它们,其他脚本也将已经有对它们的引用


在我看来,别麻烦了-这是客户自己的机器,不是你的,如果他们或其他脚本想做什么,他们可以找到一种方法来做,不管你的代码是什么。

如果你的页面中存在这样的功能,但恶意脚本的第一步是删除它,那该怎么办?这听起来像是网站为了防止其源代码不可见而使用的鼠标右键单击技巧的重新迭代。总会有解决办法的