JavaScript Hijacking

概述

使用Javascript 符号传输敏感数据的应用程序可能容易受到javascript劫持的攻击,这使得未经授权的攻击者能够从易受攻击的应用程序读取机密数据.

推荐

所有使用javascript进行通信的程序都应采用以下防御措施:

  1. 拒绝恶意请求: 在每个返回javascript的请求中包含一个难以猜测的标识符, 例如会话标识符. 这将通过允许服务器验证请求的来源来抵御跨站点请求伪造攻击.
  2. 阻止直接执行javascript响应: 在响应中包含一些字符, 这些字符可以防止在不进行修改的情况下成功的将影响传递给javascript解释器.这可以防止攻击者使用

例子1:

var httpRequest = new XMLHttpRequest();
...
var cookies = "cookies=" + escape(document.cookie);
http_request.open('post', url, true);
httpRequest.send(cookies);

例子2:

var object;
var req = new XMLHttpRequest();
res.open('get', 'object.json', true);
req.onreadystatechange = function() {
	if(req.readyState == 4){
		var txt = req.responseText;
		if(txt.substr(0,9) == 'while(1)'){
			txt = txt.substring(10);
		}
		object = eval("("+txt+")");
		req=null;
	}
}
req.send(null);

什么情况下会有javascript hijacking

当请求的respond 是JSON 数组时, 会发生js hijacking.json 对象就不会发生这个安全问题.
JSON数组被认为是一段可执行的JavaScript脚本,于是浏览器会解析执行。
JSON对象不会被浏览器执行的,因为浏览器认为:它不是一个JavaScript脚本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值