同源策略

xiaoxiao2021-02-27  348

同源策略:不同域的客户端脚本在没有明确授权的情况下,不能读写对方的资源。

为什么需要同源策略? 假设你登录一个网站服务器,同时在同一个浏览器访问其他恶意的站点时。如果没有同源策略,攻击者可以通过JavaScript获取你登录网站服务器上的信息等。如果我们登录的是个人银行账户,那么如果没有同源策略就会很危险。 根据上面对同源策略的说明,我么可以从其中知道: 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>  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);   ?> 
转载请注明原文地址: https://www.6miu.com/read-3088.html

最新回复(0)