同源策略
来源:互联网 发布:unity3d跑酷游戏教程 编辑:程序博客网 时间:2024/06/18 04:01
同源策略:不同域的客户端脚本在没有明确授权的情况下,不能读写对方的资源。
为什么需要同源策略?
假设你登录一个网站服务器,同时在同一个浏览器访问其他恶意的站点时。如果没有同源策略,攻击者可以通过JavaScript获取你登录网站服务器上的信息等。如果我们登录的是个人银行账户,那么如果没有同源策略就会很危险。
根据上面对同源策略的说明,我么可以从其中知道:
a)不同域或同域:同域要求两个站点同协议,同域名,同端口。
a)不同域或同域:同域要求两个站点同协议,同域名,同端口。
b)客户端脚本:主要指JavaScript,客户端攻击主要是基于该脚本的。
c)授权:目标站点明确返回HTTP的响应头:“Access-Control-Allow-Origin:http://www.evil.com”。那么“www.evil.com”站点上的客户端就有权通过Ajax技术对目标站点上的数据进行读写操作。如果“Access-Control-Allow-Origin:*”:表示所有站点都可以对目标站点进行读写操作。
d)读写权限:document.cookie具备读写权限。
e)资源:只要是数据,就是资源。客户端安全威胁都是围绕这些资源进行的。
通过实例来说
html代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title> 跨域测试 </title>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
</head>
<body>
<div id="show"></div>
<script type="text/javascript">
$.post("http://www.server.com/server.php",{name:"fdipzone",gender:"male"})
.done(function(data){
document.getElementById("show").innerHTML = data.name + ' ' + data.gender;
});
</script>
</body>
</html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title> 跨域测试 </title>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
</head>
<body>
<div id="show"></div>
<script type="text/javascript">
$.post("http://www.server.com/server.php",{name:"fdipzone",gender:"male"})
.done(function(data){
document.getElementById("show").innerHTML = data.name + ' ' + data.gender;
});
</script>
</body>
</html>
php代码:
<?php
$ret = array(
'name' => isset($_POST['name'])? $_POST['name'] : '',
'gender' => isset($_POST['gender'])? $_POST['gender'] : ''
);
header('content-type:application:json;charset=utf8');
header('Access-Control-Allow-Origin:*'); //允许跨域访问。
echo json_encode($ret);
?>
$ret = array(
'name' => isset($_POST['name'])? $_POST['name'] : '',
'gender' => isset($_POST['gender'])? $_POST['gender'] : ''
);
header('content-type:application:json;charset=utf8');
header('Access-Control-Allow-Origin:*'); //允许跨域访问。
echo json_encode($ret);
?>
0 0
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 同源策略
- 使用渐进式JPEG来提升用户体验
- 程序员 你努力的方向对吗?
- 剑指Offer——(8)跳台阶
- 【cc2541历程】APP控制LED
- 直播App起步该如何做起,给点参考提示吧
- 同源策略
- Swift中自定义一个代理的一般流程
- 友盟分享实现第三方平台分享
- js创建RowGuid
- 普通人如何做到30分钟读一本书并做完笔记?
- 异构并行的简述
- inotify和epoll结合使用的小例子
- [布局概念]关于CSS-BFC的深入理解
- 文件上传之图片裁剪