首页 > 编程语言 >JavaScript学习笔记:Web安全模型

JavaScript学习笔记:Web安全模型

时间:2023-06-10 23:33:07浏览次数:50  
标签:脚本 Web URL JavaScript 笔记 文档 同源 CORS

为了保证安全,浏览器中的JavaScript不能读写设备中的文件,也不能访问任意的服务器。

同源策略

同源策略指的是脚本只能访问与包含它的文档同源资源。
源是指文档URL中的协议、主机与端口部分,完全相同则是同源,任意一项不同都不是同源。
脚本文件的URL与同源策略毫不相干,同源策略至于脚本的包含文档的URL有关。
同源有以下应用:

  • 脚本只能获取与其包含文档同源的iframe内嵌文档的Window与Document对象。
  • 每个file://协议的URL都是一个独立的源,无法在本地进行同源测试
  • 脚本发起的HTTP请求也会应用同源策略。JavaScript可以发起与文档同源的请求,但是默认情况下不能访问其他服务器,除非该服务器开启了CORS。

修改脚本的源

通过为document.domian设置一个域名后缀来来修改文档的源,但是这不是说可以任意设置,该域名后缀只能是文档当前域名的上级域名。
比如当前是a.b.c.com,只能改为b.c.com或c.com。

跨源资源共享(cross-OriginResource Sharing, CORS)

CORS允许服务器决定对来自哪些源的请求提供服务。
CORS扩展了HTTP协议,增加了一个Origin:请求头和一个Access-Control-Allow-Origin响应头。
服务器可以使用这个头部明确地列出对那些源提供服务,或使用通配符来表示接受任何源的请求。
浏览器会根据这些CORS头部的有无来决定是否放松同源限制。

跨站点脚本 (Cross-Site Scripting,XSS)

XSS是一种攻击方式,指攻击者向目标网站注入HTML标签或脚本。
CSRF攻击是基于XSS攻击实现的。

标签:脚本,Web,URL,JavaScript,笔记,文档,同源,CORS
From: https://www.cnblogs.com/chaihuibin/p/17472184.html

相关文章

  • JavaScript学习笔记:客户端编程之异常处理
    未被捕获的异常在程序中,往往会出现异常。虽然主动捕获这些异常是保证程序健壮的必要做法,但是难免会漏掉一些。对于未被捕获的异常,浏览器会在控制台显示一条错误信息,该信息包含异常信息和其在代码中出现的位置。window.onerrorWindow对象有一个onerror属性,将其指定为一个函数,可......
  • 《大道至简》读书笔记七
    今天的阅读内容主要是关于道家文化的实际应用,作者通过丰富的生活案例,向读者展示了道家文化的精髓,并提供了一些在现实生活中的实用指导。在本章中,作者讲述了一个非常生动的案例,讲述了一位厨师在面对油漆匠的粗鲁行为时如何保持自己内心的平静和冷静。通过这段案例,作者想告诉读者要......
  • 用户故事与敏捷方法阅读笔记
    《用户故事与敏捷方法》是一本介绍敏捷软件开发方法中“用户故事”概念的经典书籍,下面是我的阅读笔记: 用户故事是什么? 用户故事是用户对于软件系统的需求描述,它通常包含一个或多个简短的句子,描述了系统用户希望从系统中得到的某项功能或特性。用户故事通常由以下三部分组成:......
  • 2023/6/10 学习笔记
    欧拉图欧拉图的定义欧拉回路:所有的边都经历一次不重复的回路欧拉通路:所有的边都经历一次不重复的路径欧拉图:具有欧拉回路的图半欧拉图:具有欧拉通路的图 连通图只有0个或者偶数个奇数出度点判别方法:1.无向图欧拉回路:(1)除去度为0的点外,其他的点相互连通(2)顶点度数......
  • 梦断代码阅读笔记
    《梦断代码》是作者阮一峰的一篇经典文章,讲述了程序员在开发中不规范的代码所带来的后果以及如何避免这种情况。过去的做法:没有重视代码规范和代码风格在我过去的软件开发过程中,可能会出现不规范的代码问题,主要源于对代码规范和代码风格的缺乏重视。我没有花太多精力去学习和遵......
  • 人月神话阅读笔记1
    《人月神话》是一本经典的软件工程书籍,作者弗雷德里克·布鲁克斯在书中提出了许多关于软件开发过程的思考和经验,对软件开发领域产生了很大的影响。下面分两个部分记录我的阅读笔记:部分一:我过去是怎么做的、为什么这样不好在我以前的软件开发项目中,我通常会认为如果向团队增加更......
  • GitlabCI学习笔记之五:GitLabRunner pipeline语法之artifacts dependencies
    artifacts用于指定在作业成功或者失败时应附加到作业的文件或目录的列表。作业完成后,工件将被发送到GitLab,并可在GitLabUI中下载。artifacts:paths路径是相对于项目目录的,不能直接链接到项目目录之外。将制品设置为target目录artifacts:paths:-target/禁用工件......
  • 代码大全阅读笔记2
    过去的做法:使用自己熟悉的代码风格,没有统一规范在我的过去的软件开发项目中,我只是根据自己的喜好和审美感受来书写代码。我没有考虑与他人合作时如何保持代码的一致性和可读性。因此,我的代码风格不够规范,长时间的阅读会让人感到疲劳,并且会带来一些潜在问题,比如难以维护、找错等。......
  • 代码大全阅读笔记1
    在阅读了《代码大全》一书后,我对自己以前的软件开发方法进行了反思,发现我的做法并不总是最好的选择。下面是我的阅读笔记:过去的做法:注重代码的函数和类,而忽略了代码整体架构在我的以往的软件开发项目中,我通常会注重代码中函数、类、变量等细节,并花费大量时间去精细调整它们,以期......
  • GitlabCI学习笔记之五:GitLabRunner pipeline语法之cache
    cache缓存用来指定需要在job之间缓存的文件或目录。只能使用该项目工作空间内的路径。不要使用缓存在阶段之间传递工件,因为缓存旨在存储编译项目所需的运行时依赖项。如果在job范围之外定义了cache ,则意味着它是全局设置,所有job都将使用该定义。如果未全局定义或未按job定义则......