浅谈javascript函数劫持
作者: luoluo, 出处:Xfocus, 责任编辑: 张帅,
2007-12-13 14:14
下面是具体内容:
映象劫持技术对网络安全威胁巨大,这里我们将主要讨论javascript劫持,攻击者是如何利用javascript实现脚本劫持的呢?浅谈javascript函数劫持,希望对用户有所帮助……
一、概述
Javascript函数劫持,也就是老外提到的Javascript hijacking技术。最早还是和剑心同学讨论问题时偶然看到的一段代码,大概这样写的:
window.alert = function(s) {}; |
觉得这种用法很巧妙新颖,和API Hook异曲同工,索性称之为Javascript function hook,也就是函数劫持。通过替换js函数的实现来达到劫持这个函数调用的目的,一个完整的hook alert函数例子如下:
<!--1.htm--> <script type="text/javascript"> <!-- var _alert = alert; window.alert = function(s) { if (confirm("是否要弹框框,内容是\"" + s + "\"?")) { _alert(s); } } //--> </script> <html> <body> <input type="button" onclick="javascript: alert('Hello World!')" value="test" /> </body> </html> |
搞过API Hook的同学们看到这个代码一定会心的一笑,先保存原函数实现,然后替换为我们自己的函数实现,添加我们自己的处理逻辑后最终再调用原来的函数实现,这样这个alert函数就被我们劫持了。原理非常简单,下面举些典型的应用来看看我们能利用它来做些什么。
二、应用举例
1. 实现一个简易的Javascript debugger,这里说是debugger比较标题党,其实只是有点类似于debugger的功能,主要利用js函数劫持来实现函数的break point
2. 设置陷阱实时捕捉跨站测试者,搞跨站的人总习惯用alert来确认是否存在跨站,如果你要监控是否有人在测试你的网站xss的话,可以在你要监控的页面里hook alert函数
分享到:
相关推荐
一、概述 javascript函数劫持,也就是老外提到的javascript hijacking技术。最早还是和剑心同学讨论问题时偶然看到的一段代码,大概这样写的: window.alert = function(s) {}; 觉得这种用法很巧妙新颖,和API Hook...
在JavaScript中,函数是一种非常重要的数据类型,它们可以以多种形态存在。本文将深入探讨JavaScript函数的四种主要存在形态:函数形态、方法形态、构造器形态以及上下文调用模式。 1. **函数形态**: 函数形态是最...
JavaScript函数式编程是利用JavaScript语言编写函数式风格代码的一种编程范式。函数式编程强调使用纯函数、避免副作用、函数的不可变性以及利用高阶函数等概念。通过阅读《JavaScript函数式编程指南》,读者可以了解...
不过,由于【标题】中提供了文档的名称——"JavaScript函数式编程.pdf",我可以根据这个名称扩展出关于JavaScript函数式编程的知识点。 JavaScript函数式编程的知识点非常丰富,涉及很多方面的内容,下面将详细介绍...
C#与JAVASCRIPT函数的相互调用 C#调用JAVASCRIPT函数的调用 JAVASCRIPT调用C#函数的调用
JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)...
而《JavaScript函数式.zip》可能是一份关于JavaScript函数式编程的资料集合,函数式编程是一种编程范式,强调使用函数和避免改变状态。其中可能涵盖以下知识点: 1. **纯函数**:理解纯函数的定义,即给定相同的...
第7节 JavaScript函数及应用.rar第7节 JavaScript函数及应用.rar第7节 JavaScript函数及应用.rar第7节 JavaScript函数及应用.rar第7节 JavaScript函数及应用.rar第7节 JavaScript函数及应用.rar第7节 JavaScript函数...
- 这里的回调函数用于处理JavaScript函数的异步返回结果,如果需要同步获取结果,可以使用`QWebEngineScript`来注册一个全局JavaScript对象,然后通过该对象调用JavaScript函数。 2. **JavaScript调用QT函数**: ...
全书分别介绍了JavaScript函数式编程、一等函数与Applicative编程、变量的作用域和闭包、高阶函数、由函数构建函数、递归、纯度和不变性以及更改政策、基于流的编程、类编程。除此之外,附录中还介绍了更多函数式...
### 浅谈JavaScript面向对象编程 #### 一、概述 面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件。在JavaScript中,尽管语言本身并不支持传统的类(class)概念,但开发者可以通过原型继承和其他技术来...
在JavaScript中,函数是一种特殊的对象,而它所具备的一些内部属性则赋予了函数更多的灵活性与控制力。本篇主要探讨的是函数内部两个重要的属性:arguments和this。 首先,我们来了解arguments对象。arguments是一...
在JavaScript编程中,函数作为一等公民,其声明的方式主要有两种:函数声明式和函数表达式。它们在使用上有一些差异,这会影响程序的行为和执行方式。 首先,函数声明式是一种在代码中直接声明函数的方式。它的语法...
在探讨JavaScript嵌套函数及闭包之前,我们必须了解一些基础知识。首先是JavaScript中的函数,它们是JavaScript编程的核心。函数在JavaScript中是“一等公民”,这意味着函数可以作为参数传递给其他函数,也可以作为...
JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数...
在探讨JavaScript函数的种类之前,我们先了解JavaScript中的函数没有重载的概念。在其他一些语言中,如果定义了相同函数名但参数签名不同的多个函数,根据传入参数的不同,会选择适当的函数进行调用。但在JavaScript...
函数式编程,属于编程范式的一种 1 函数是第一公民,可以返回值,也可以作为其他函数的参数 //console是一个函数 function con(v){ console.log(v) } // execute 也是一个函数 function execute(fn){ fn(1) } //...
JavaScript函数在编程中扮演了极其重要的角色,它是构成JavaScript应用逻辑的核心。在JavaScript中,函数不仅是一种语法结构,也是一种数据类型,这意味着它可以被赋值给变量、作为参数传递给其他函数,以及作为对象...