【浏览器】浏览器安全

浏览器安全分为页面安全、系统安全、网络安全

页面安全

为了页面安全浏览器引入了最核心的安全策略:同源策略(Same-origin policy)

同源策略

同源指:URL的协议、域名和端口都相同。两个不同的源之间若想要相互访问资源或者操作 DOM,会有一套安全策略的制约,这就是同源策略,制约表现在三方面

  1. DOM方面:限制了来自不同源的 JavaScript 脚本对当前 DOM 对象读和写的操作。
  2. 数据方面:限制了不同源的站点读取当前站点的 Cookie、IndexDB、LocalStorage 等数据。
  3. 网络方面:限制了通过 XMLHttpRequest 等方式将站点的数据发送给不同源的站点。

过于严格的限制会给开发带来很大的阻碍,基于安全和便利的权衡,同源策略在安全性方面做出以下三点妥协:

  1. 页面可以嵌入第三方资源:包括JS、HTML、CSS、图片等静态资源,所以我们才可以通过CDN来给服务器分压。但同时带来XSS漏洞。
  2. 跨域资源共享CORS:允许浏览器向跨源服务器发出XHR请求。整个CORS通信过程都是浏览器自动完成,因此实现CORS通信的关键是服务器,只要服务器实现了CORS接口就可以跨源通信。具体参见阮一峰老师的博客
  3. 跨文档消息机制:可以通过 window.postMessage 的 JS 接口来和不同源的 DOM 进行通信,当然此功能不仅仅可以用来操作DOM。

浏览器页面安全漏洞

在安全性上做出妥协必然会带来一些漏洞,这里介绍XSS和CSRF两种

XSS 跨站脚本攻击

全称Cross Site Scripting,指黑客往 HTML 文件中或者 DOM 中注入恶意脚本,从而在用户浏览页面时利用注入的恶意脚本对用户实施攻击的一种手段。恶意脚本可以做以下事情:

  1. 通过 document.cookie 窃取cookie
  2. 监听键盘事件等用户行为,比如用户输入信用卡密码
  3. 修改DOM伪造登录窗口,骗取用户名和密码
  4. 生成广告弹窗

攻击方式

恶意脚本注入的方式 通常有存储型、反射型和基于 DOM 三种。

  1. 存储型:黑客利用站点漏洞将恶意脚本存储在站点里,用户访问该站点就有可能请求并执行此恶意脚本,从而将某些信息发送给恶意服务器。比如一个站点没做好过滤,黑客可以将用户名设置为一段脚本,其他用户页面出现黑客用户名时,就会被攻击。
  2. 反射型:恶意 JS 脚本属于用户发送给网站请求中的一部分,随后网站又把恶意 JavaScript 脚本返回给用户。当恶意 JavaScript 脚本在用户页面中被执行时,黑客就可以利用该脚本做一些恶意操作。在现实中,黑客经常会通过 QQ 群或者邮件等渠道诱导用户去点击这些恶意链接。比如点击http://xxxxx/?xss=<script>alert('你被xss攻击了')</script>,服务器将这段脚本反射到打开的页面中。

Web 服务器不会存储反射型 XSS 攻击的恶意脚本,这是反射型和存储型 XSS 攻击不同的地方。

  1. 基于DOM:不牵涉到服务器,在资源传输过程或者在用户使用页面的过程中修改页面的数据。劫持类型很多,比如通过路由器或本地恶意软件来劫持,在页面传输过程中修改 HTML 页面的内容。

如何防范

  1. 服务器对输入脚本进行过滤或转码:针对存储型和反射型攻击,过滤或转码敏感内容,比如<script>alert('你被xss攻击了')</script>可以把某些字符转码,使其成为不能被解析的标签。
  2. 使用 Cookie 的 HttpOnly 属性:很多XSS攻击都是盗取 Cookie,服务器可以为某些 Cookie 设置 HttpOnly 标志,该标志说明此 Cookie 只能使用在 HTTP 请求过程中,所以无法通过 JS 来读取这段 Cookie。
  3. 使用CSP:内容安全策略,控制浏览器可以为用户加载哪些资源,限制加载其他域下的资源文件,这样即使黑客插入了一个 JS 文件,这个文件也是无法被加载的。也可以禁止向第三方域提交数据、禁止执行内联脚本和未授权的脚本,还提供了上报机制,可以帮助我们尽快发现有哪些 XSS 攻击。具体可见MDN,两种用法:
    1. 服务器返回Content-Security-Policy 响应头
    2. <meta>标签配置

CSRF 跨站请求伪造

全称Cross-site request forgery,指黑客诱导受害者进入第三方网站,在第三方网站中,向信任网站发送跨站请求。利用受害者在信任网站已经获取的注册(登录)凭证,绕过后台的用户验证,达到冒充用户对信任网站执行某项操作的目的。

攻击方式

CSRF攻击本身无法窃取到用户Cookie等内容,而是偷用这些信息给受害站点服务器发请求,使服务器误以为是正常请求。当用户打开了黑客的页面后,黑客通常有三种方式去实施 CSRF 攻击:

  1. 自动发起GET请求:比如黑客的页面有个图片src是一段盗取信息的url,用户进入恶意页面就会被攻击。
  2. 自动发起POST请求:和上面类似,黑客页面如果有个自动提交的form
  3. 引诱客户点击链接:黑客设置一个恶意的链接引诱用户点击,恶意链接可能是转账链接等。

和 XSS 不同的是,CSRF 攻击不需要将恶意代码注入用户的页面,仅仅是利用服务器的漏洞和用户的登录状态来实施攻击。
需要说明一点,为什么同源策略不能阻止第三方页面获取本站点cookie呢?
答:同源策略并没有完全限制网站不能使用非同源的资源,比如引用第三方script文件等,同样的也没限制一些跨域写操作,比如表单提交。因此只靠同源策略不能阻止CSRF。换句话说,如果可以在第三方站点成功发送跨域请求,或者是发送一些不受跨域限制的请求(表单提交、script请求),只要请求能正常发送,浏览器会自动带上请求的那个站点的cookie。

如何防范

发起CSRF攻击需要有三个必要条件:目标站点有CSRF漏洞、用户登录过用户站点并且保持登录状态、需要用户打开恶意站点。

  1. 使用 Cookie 的 SameSite 属性:通常 CSRF 攻击都是从第三方站点发起的,属性设置为 Strict 或 Lax 可以做到从第三方站点发送请求时禁止 Cookie 的发送。详情可见MDN
  2. 加入跨域限制: 验证请求站点的来源,HTTP 请求头中可以有 Referer 和 Origin 属性,记录了该 HTTP 请求的来源地址,区别是 Referer 有存着详细路径,Origin 只有域名不包含路径。服务器根据这点来阻止攻击。
  3. CSRF Token:既然恶意站点可以偷用站点Cookie,那可以使用Token来保证安全,用户打开页面以后服务器生成Token传给页面,不把Token存到Cookie中(可以存到localStorage中),请求时带上Token,不存到Cookie中,恶意网站当然就不能偷用到Token了。或者可以使用JWT,具体见阮一峰老师博客。

系统安全

浏览器为了系统安全,引入了安全沙箱来限制渲染进程。
试想,如果没有安全沙箱来限制渲染进程,一段恶意脚本就可能利用浏览器系统漏洞,对浏览器主进程进行攻击,就可以读取和修改浏览器进程内部的任意内容,甚至是穿透浏览器,在用户的操作系统上安装恶意软件、监听用户键盘输入信息以及读取用户硬盘上的文件内容。
浏览器默认一切网络资源(JS脚本、CSS、HTML、图片等等)都是不安全的,当解析或执行这些资源时,就有可能会出问题,而这些内容都是在渲染进程上进行的,基于此,浏览器在渲染进程外层包了一道墙,这就是安全沙箱。
渲染进程在需要进行读取文件、发起网络请求、读取或写入Cookie等等操作时,会通过IPC向内核通信,由内核来完成并给渲染进程传输它所需要的内容。

网络安全

在HTTP协议上加入SSL/TLS安全协议成为HTTPS协议,使用对称加密传输数据,使用非对称加密传输密钥,并加入数字证书机制。还没有具体学习不做记录。

参考文献

李兵老师《浏览器原理与实践》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/59422.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5-HT2A靶向药物|适应症|市场销售-上市药品前景分析

据世界卫生组织称&#xff0c;抑郁症是一种多因素疾病&#xff0c;影响全球约3.5 亿人。中枢神经系统最广泛的单胺 - 血清素 (5-HT) 被认为在这种情况的病理机制中起着至关重要的作用&#xff0c;并且神经递质的重要性被“血清素假说”提升&#xff0c;将抑郁症的存在联系起来 …

国内十大上市移动医疗企业盘点

作为医疗改革的重要突破口&#xff0c;我国智慧医疗的发展已经渐行渐近&#xff0c;上海、杭州等地的智慧医疗走在全国前列。随着多项医卫信息化政策的密集出台以及医改的不断深入&#xff0c;人们惊喜地发现&#xff0c;无论是传统的医疗管理理念亦或是传统的就医模式正在或将…

OpenAI正式上线安卓版ChatGPT,支持普通话甚至粤语等方言

OpenAI 今日宣布&#xff0c;安卓版 ChatGPT 已正式上线&#xff0c;目前美国、印度、孟加拉国和巴西四国的安卓用户已经可在谷歌 Play 商店进行下载&#xff0c;并计划在下周拓展到更多地区。 下载直达&#xff1a;https://play.google.com/store/apps/details?idcom.openai…

ChatGPT细说从头(十四):思维链

原文&#xff1a;ChatGPT细说从头(十四)&#xff1a;思维链 - 知乎 引言 ChatGPT刚推出的时候&#xff0c;大家会发现它在数学运算方面表现不佳&#xff0c;因为复杂的数学问题需要多步推理过程&#xff0c;但没过多久就发现它有了重要提升&#xff0c;而且回答方式也有了显著…

人工智能五大趋势预测!这些人将成为职场“香饽饽”!

近日&#xff0c;在如火如荼的「ChatGPT大战」中&#xff0c;科大讯飞发布星火认知大模型&#xff0c;学而思另辟蹊径自研数学大模型「MathGPT」&#xff0c;已经取得了阶段性成果。 作为生成式人工智能的里程碑&#xff0c;ChatGPT在全球引起了新浪潮。未来&#xff0c;人工智…

OpenAI最新官方ChatGPT聊天插件接口《插件安全审查流程》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(六)(附源码)

Plugin review process 插件审查流程 前言Plugin review process 插件审查流程What we are looking for in a plugin 我们正在寻找一个插件Plugin states 插件状态Types of users 用户类型Submit a plugin for review 提交一个插件进行审核其它资料下载 前言 在 ChatGPT 中&am…

chatgpt赋能python:Python插件下载指南

Python插件下载指南 Python作为一种高级编程语言&#xff0c;应用广泛&#xff0c;拥有各种各样的插件库。这篇文章将帮助你了解Python插件下载的基本步骤和注意事项。 找到需要的插件 首先&#xff0c;你需要知道自己想要的插件是什么。你可以在Python官方网站、GitHub或者…

Java实现AI机器人聊天

文章目录 前言一、账号注册申请密钥二、参数详情三、Java集成1.调用接口2.响应数据 四、效果总结 前言 OpenAI API 几乎可以应用于任何涉及理解或生成自然语言或实现代码等场景。提供一系列具有不同学习训练的模型&#xff0c;适用于处理不同的任务&#xff0c;并且自己能够自…

新浪博客提示“系统繁忙,请稍候再试”的解决方法

前段时间想写博客&#xff0c;提交几次都不成功&#xff0c;提示“系统繁忙&#xff0c;请稍候再试。”如下图&#xff1a; 一开始还以为真是系统繁忙的原因&#xff0c;过了几天换了不同时间段提交&#xff0c;故障依旧。网上试过找一些不同的方法 尝试&#xff0c;也没解决。…

VM虚拟机异常关机后再次登录显示系统繁忙怎么办?

上一次由于电脑卡了&#xff0c;在关闭虚拟机的时候卡住了&#xff0c;等再次登录的时候就显示系统繁忙无法登陆。 这个时候不要慌张&#xff0c;找到你当时安装虚拟机的文件夹Centos&#xff0c;打开文件夹&#xff0c;里面有一个.lck的文件夹&#xff0c;删除这个文件夹就可…

技术动态 | 如何将ChatGPT和企业专有知识结合起来?

转载公众号 | 知识管理就在夏博 不需要再重复 ChatGPT 的流行程度以及有多少精彩的用例&#xff0c;因为到处都有大量关于此的文章&#xff0c;本文主要分享如何解决当前 ChatGPT 版本的一些关键限制并将企业专有知识嵌入 ChatGPT 的想法。 在各种限制中&#xff0c;有三个关键…

微软震撼开源DeepSpeed Chat,一键实现ChatGPT的端到端RLHF训练

编&#xff5c;Aeneas 好困源&#xff5c;新智元 微软开源的DeepSpeed Chat&#xff0c;让开发者实现了人手一个ChatGPT的梦想&#xff01; 人手一个ChatGPT的梦想&#xff0c;就要实现了&#xff1f; 刚刚&#xff0c;微软开源了一个可以在模型训练中加入完整RLHF流程的系统框…

“开源ChatGPT”:PaLM-rlhf-pytorch

就说程序员的手速有多快吧,首个开源ChatGPT项目已经出现了! 基于谷歌语言大模型PaLM架构,以及使用从人类反馈中强化学习的方法(RLHF),华人小哥Phillip Wang复刻了一个ChatGPT出来。 项目GitHub星已经超过1.7k了,而且还在一路飙升ing。 不过一反常态的是,网友们看到“开…

英语听力,这练习很简单

首先&#xff0c;跟大家推荐一个软件&#xff0c;亲测真的巨好用&#xff0c;听力&#xff0c;口语&#xff0c;词汇一把抓。 就是它&#xff0c;每日英语听力&#xff0c;你提高听力最需要的单句精听它有噢&#xff0c;建议每次听一遍&#xff0c;把句子写下来&#xff0c;重…

ChatGPT精通:使用ChatGPT-4的专家提示工程

大师ChatGPT&#xff0c;专家提示工程&#xff0c;提高生产力&#xff0c;探索开放人工智能GPT-4和生成人工智能技术&#xff0c;探索ChatGPT的激动人心的世界&#xff0c;并利用这一关于掌握OpenAI最新创新GPT-4的深入而全面的课程来驾驭人工智能驱动的对话技术的力量。本课程…

计算机中职生自我介绍500字,中专生自我介绍500字

中专生自我介绍500字 当我们在一个陌生场合中&#xff0c;我们难以避免地要作出自我介绍&#xff0c;用自我介绍往往可以来展示自己。那么我们该怎么去写自我介绍呢&#xff1f;以下是小编为大家收集的中专生自我介绍500字&#xff0c;欢迎阅读&#xff0c;希望大家能够喜欢。 …

面试自我介绍范文(30篇)

面试自我介绍范文&#xff08;30篇&#xff09; 当来到一个新环境时&#xff0c;我们总归要向他人介绍自己&#xff0c;自我介绍是让陌生人彼此认识的好方法。如何编写一段个性的自我介绍? 面试自我介绍范文1 各位面试官&#xff1a; 大家好! 我叫__&#xff0c;就读于__大学金…

超级计算机作文500字初中,自我介绍初中作文500字(精选9篇)

自我介绍初中作文500字(精选9篇) 当到达一个陌生的环境后&#xff0c;通常需要用到自我介绍&#xff0c;通过自我介绍可以让别人认识自己。如何写出一个与众不同的自我介绍&#xff1f;以下是小编帮大家整理的自我介绍初中作文500字(精选9篇)&#xff0c;欢迎阅读与收藏。 自我…

ChatGPT-4开通方法和费用

**[文章来源](https://bk.suning.info):https://bk.suning.info** 哪里可以用gpt-4,gpt-4相较于gpt3.5又有了逻辑性和图片识别等方面的加强&#xff0c;今天跟大家分享gpt-4使用的方法。 想要使用GPT-4模型&#xff0c;我们需要订阅付费的ChatGPT&#xff08;ChatGPT的高级版…

【力扣刷题1-10】

力扣刷题1-10 力扣刷题1-10 1、两数之和1.1 题目1.2 分析1.3 代码实现 2、两数相加2.1 题目2.2 分析2.3 代码实现 3、无重复字符的最长子串3.1 题目3.2 分析3.3 代码实现 4、寻找两个有序数组的中位数4.1 题目4.2 分析4.3 代码实现 5、最长回文子串5.1 题目5.2 分析5.3 代码实现…