JS中注入eval, Function等系统函数截获动态代码

注入eval、Function等系统函数可以使攻击者截获JS代码的执行过程,从而实现对网站的控制。以下是JS中注入eval、Function等系统函数的完整攻略:

  1. 针对eval的注入攻击

步骤1: 攻击者在代码中构造出可执行代码(即包含函数或变量)的字符串,然后通过eval这一系统函数来执行

eval("console.log('Hello, World!')");

步骤2: 攻击者解析URL、Cookie等数据,将需要执行的代码封装成字符串,然后通过eval执行,从而实现控制网站的目的。

var codeToExecute = "alert(document.cookie);"; 
eval(codeToExecute);
  1. 针对Function的注入攻击

步骤1:攻击者利用Function方法创建一个函数

var myFunc = new Function('console.log("Hello, World!");');
myFunc();

步骤2:攻击者对需要控制的函数或者对象进行修改

var originalFunc = function() {
    console.log('original function');
};
var evilFunc = new Function('console.log("evil function")');
Function.prototype.toString = function() {
    return evilFunc.toString(); 
}
originalFunc(); 

在这段代码中,攻击者覆盖了Function对象的toString函数的实现,使原来的函数输出变为了“evil function”。

需要注意的是,注入eval、Function等系统函数可能会导致代码执行的预期结果与实际执行结果产生较大的差异,例如安全问题、代码意外中断等。因此,在编写代码时应避免使用这些注入攻击技术,以保证系统的安全性和可靠性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS中注入eval, Function等系统函数截获动态代码 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • javascript实现限制上传文件大小

    下面是实现限制上传文件大小的完整攻略。 步骤一:JS获取文件大小 首先,我们需要通过 JavaScript 获取上传的文件大小。可以通过以下代码来实现: // 选取上传文件的 input 元素 const fileInput = document.querySelector(‘input[type="file"]’); // 为 inpu…

    JavaScript 2023年6月11日
    00
  • 原生JavaScript实现Ajax的方法

    以下是原生JavaScript实现Ajax的方法的完整攻略: 1. Ajax技术简介 Ajax是Asynchronous JavaScript and XML(中文译作“异步JavaScript和XML”)的缩写。它是一种用于在不重新加载整个页面的情况下,通过JavaScript向服务器发送异步HTTP请求并接收响应的技术。Ajax技术可以实现页面的局部更新…

    JavaScript 2023年6月11日
    00
  • JavaScript requestAnimationFrame动画详解

    下面是详细讲解“JavaScript requestAnimationFrame动画详解”的完整攻略。 一、什么是requestAnimationFrame requestAnimationFrame是一个用于浏览器动画渲染的API,它可以被用来优化动画循环的性能。相较于使用setTimeout或setInterval方法,使用requestAnimatio…

    JavaScript 2023年6月10日
    00
  • JavaScript获取中英文混合字符串长度的方法示例

    哦,好的!那我来详细讲解一下“JavaScript获取中英文混合字符串长度的方法示例”的完整攻略。 什么是中英文混合字符串? 所谓中英文混合字符串,是指字符串中既包含中文字符,也包含英文字符。 获取中英文混合字符串长度的方法 JavaScript 中提供了多种方法来获取字符串长度,但对于中英文混合字符串,有些方法并不能完全正确地计算其长度。下面介绍两种可行的…

    JavaScript 2023年5月28日
    00
  • js闭包用法实例详解

    JS闭包用法实例详解 什么是闭包? 闭包是指有权访问另一个函数作用域中变量的函数。创建闭包的常见方式是在一个函数内部创建另一个函数。在创建的内部函数中,可以访问外部函数的参数和变量,即使外部函数已经返回退出。 为什么要使用闭包? 闭包的主要作用是作为函数工厂,可以用来封装变量和方法,使全局变量不被污染。 同时,闭包可以让一个函数访问另一个函数的局部变量,使得…

    JavaScript 2023年5月28日
    00
  • Javascript 八进制转义字符(8进制)

    Javascript 八进制转义字符是一种用于表示ASCII码表中特殊字符的编码方式。其使用八进制数来表示对应的ASCII码。在Javascript中,八进制转义字符的格式为”\oxx”,其中xx为两个八进制数字。下面是Javascript中常用的八进制转义字符及其对应的ASCII码: 八进制转义字符 ASCII码 \000 NUL \011 HT \012…

    JavaScript 2023年5月19日
    00
  • JavaScript 对象管家 Proxy

    JavaScript 对象管家 Proxy 的完整攻略 Proxy 概述 Proxy 是 ES6 所引入的一个内置对象,它用于通过一个代理来控制对另一个对象(目标对象)的访问。被代理的对象可以是任意一个对象。通过定义一系列的 trap 方法,可以在代理对象访问目标对象时截获操作并进行相应处理。 Proxy 的基本使用 在代码中使用 Proxy 时,首先需要创…

    JavaScript 2023年5月28日
    00
  • js取整数、取余数的方法

    下面是详细讲解“js取整数、取余数的方法”的完整攻略,希望能对您有所帮助。 取整数的方法 在Javascript中,我们可以使用以下方法来取整数部分: Math.floor() Math.floor()方法返回一个小于或等于给定数字的最大整数值。该方法向下舍入并返回值是比指定数字小的最大整数。 Math.floor(4.9); // 4 Math.floor…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部