zoukankan      html  css  js  c++  java
  • 同源策略与安全

    同源策略:
            同源策略是对JavaScript代码能够操作那些Web内容的一条完整的安全策略。
            当页面使用多个<iframe>元素或打开其他窗口的时候,同源策略就会发挥作用,它管理着不同的窗口、窗体、代码之间的交互;在同源策略之下,脚本代码只能读取和自己同源的窗口、窗体中的文档;
            文档来源区别:协议、主机、载入文档的URL端口,有一项不同则不同源;
            脚本本身的来源与同源策略无关,相关的是脚本所嵌入的文档的来源,脚本可以访问和它所嵌入的文档同源的资源;脚本虽然可以打开和关闭一个用来载入不同源文档的新窗口,但不能访问该窗口的任何内容;
    不严格的同源策略:
            1.在使用多个子域的大站点,可使用不严格的同源策略(将不同源的文档的Document的domain属性设为相同的值,那么这些文档就不在受同源策略的约束,它们将属于同源,可以互相通信;
            2.跨域资源共享 Cross- Origin Resource Sharing, 参见 http:// www. w3. org/ TR/ cors/,这个准草案用新的“ Origin:” 请求和新的Access- Control- Allow- Origin响应头来扩展HTTP。它允许服务器用头信息显式地列出源,或使用通配符来匹配所有的源并允许由任何地址请求文件。
            3.跨文档消息( cross- document messaging),允许来自一个文档的脚本可以传递文本消息到 另一个文档里的脚本,而不管脚本的来源是否不同。调用Window对象上的postMessage()方法, 可以异步传递消息事件(可以用onmessage事件句处理程序函数来处理它)到窗口的文档里。
    跨站脚本:XSS
            跨站脚本:(Cross-site scripting)XSS,表示一类安全问题,攻击者向目标Web站点注入HTML标签或脚本。
            通常,防止XSS攻击的方式是,在使用任何不可信的数据来动态的创建文档内容之前,从中 移除HTML标签。通过添加如下一行代码来移除<script>标签两边的尖括号,
            var name = decodeURIComponent(window.location.search.substring(1)) || '';
            name = name.replace(/</g,"&lt;").replace(/>/g,"&gt;");
            document.write('Hello ' + name);
            当读取这个被注入了脚本的URL时,过滤掉HTML标签就能‘消毒’了
            http://siteA/greet.html?name=%3Cscript src=siteB/evil. js%3E%3C/script%3E
            
     
     
     
     
     
            
  • 相关阅读:
    Gym102028L
    CF985G
    三元环 & 四元环计数 学习笔记
    Hall 定理 学习笔记
    CF36E
    CF1110G
    P6071
    可持久化数据结构 学习笔记
    多项式全家桶
    c++ 编译zlib
  • 原文地址:https://www.cnblogs.com/susufufu/p/5713976.html
Copyright © 2011-2022 走看看