浏览器家族的安全反击战

谷歌Gemini模型全解析:从免费体验到API集成,开发者实战指南 大语言模型作为人工智能领域的核心技术,通过海量数据训练和Transformer架构,实现了对自然语言的深度理解和生成。其技术价值在于能够执行代码生成、逻辑推理、多模态理解等复杂任务,显著提升开发效率和问题解决能力。在工程实践中,模型选择、API集成和提示词优化是关键环节,广泛应用于智能助手、数据分析、文档处理等场景。谷歌近期推出的Gemini系列模型,特别是其Gemini Ultra版本在复杂推理和代码生成方面表现出色,而前两个月的免费策略为开发者提供了宝贵的实战体验机会。通过合理利用其API和优化参数设置 阅读详情

1

前言

上次我说过,我们浏览器的主要工作就是把HTML,JavaScript,CSS等文件从服务器端取下来,然后解析、渲染,展示成美奂美伦的页面呈现给人类。

我们还替人类保护一个叫做Cookie的小东西,网站会把Cookie发送给浏览器让我们保存起来,等到访问同一个网站的时候,我们再把他发过去。

这个Cookie用来证明某个用户已经和服务器交互过,更重要的是证明已经登录过系统,不用再次登录了。

JavaScript这小子在我们这里承担了越来越重要的职责,从对DOM树的改动,到利用AJAX访问服务器端,他可以说是风光无限。

(详情参见上一篇文章《浏览器:一个家族的奋斗》)

可是我们都忽视了一个重要的问题:安全,这个东西差点让我们家族遭受灭顶之灾。

2

Cookie失窃

有一天,我的主人登录了"爱存不存"银行(www.icbc.com),这个银行网站给我发了一个Cookie,证明主人登录过了, 主人在“爱存不存”银行网站做了一些操作,但是忘记了退出,然后开了一个新的Tab页访问了一个叫做www.beauty.com ,我知道这个网站不怀好意,拼命地提醒主人,但是他仍然经不住网站上那些图片的诱惑,执意把这个网站打开。

我没有办法,只好下载这个不怀好意网站的HTML,JavaScript,CSS, 让我没有想到的是这里的JavaScript竟然想访问“爱存不存”银行的Cookie。

“这个Cookie是爱存不存银行给我的,不属于www.beauty.com,你为啥要访问?” 我问他。

“没事,我好奇,想看看别的网站的Cookie长什么样”  他轻松地回答。

我将信将疑地把Cookie给了他,他不知道做了什么花样,似乎是往www.beauty.com发了一个请求,然后就把Cookie还给了我。

很快我的主人就发现,他在“爱存不存”银行的私房钱不翼而飞了。

FireFox嘲笑我说:“你这个家伙啊,怎么能够把Cookie这么重要的东西随随便便地给别人呢? ‘爱存不存’银行的Cookie被黑客偷走了,那些黑客不用登录就可以冒充用户在‘爱存不存’网站做操作了。”

“啊? 有这么严重? 可他是JavaScript,照理说可以访问啊?”

“唉,你要知道,这个JavaScript和那个Cookie不是同一个网站的,怎么能访问呢。”

由于这件事,主人再我不理我了,从此开始宠幸FireFox。

3

密码失窃

FireFox也没得意很久,他也很快中了招。

这一次,主人还是忍不住去www.beauty.com看图片,FireFox这次很小心,不把任何别的网站的Cookie发给这里的JavaScript。

但这一次beauty.com改变了策略,它用iframe的方式放置了一个淘宝的登录网页到beauty.com页面中,淘宝恰恰是主人最喜欢的,主人一看,不错啊,还有快捷登录方式,于是主人就输入了自己真实的用户名和密码,没想到Beauty.com的JavaScript 已经把这个淘宝登录Form的action指向了自家网站,等到主人点了登录按钮以后, 用户名和明文的密码就这样被窃取了。

于是FireFox也被打入冷宫。

0?wx_fmt=png

4

家族会议

黑客猖獗,类似的安全事故不断出现,我们家族的成员纷纷中招,家族赶紧召集会议,商量对策,防止人类把我们家族给废掉。

我和FireFox在会议上声讨现在的人类实在是喜欢访问那些不良网站,族长Mozilla说没办法这是人类的本性,无论如何也无法改变,如果改了就不是人类了。

“虽然我们控制不了人类的行为,但是我们浏览器家族可以做点改变,增加安全性!” Mozilla族长充满正义感和使命感,他下达了一个命令:“以后我们家族确定一条铁规:除非两个网页是来自于统一‘源头’, 否则不允许一个网页的JavaScript访问另外一个网页的内容,像Cookie,DOM,LocalStorage统统禁止访问!” 

我仔细咂摸这句话的含义,其实是说各个网页如果不同源的,就被隔离了,只能在自己的一亩三分地中折腾。

“什么叫同一个源头?” FireFox问道。

“就是说{protocol,host,port} 这三个东西必须得一样! 我给你们举个例子, 例如有这么一个网页: http://www.store.com/product/page.html, 下面的表格列出了各种不同情况。”

0?wx_fmt=png

这个同源策略确实严格, 不同源的网页无法访问另外一个网页的DOM,Cookie, 像beauty.com那样的恶意网站想偷走Cookie/密码就不容易了。

我想到了主人之前购物经常访问的http://www.store.com/, 这个页面中有一段装载jquery.js的代码:

<script src="//static.store.com/jquery.js > </script>

这个jquery.js是来自于不同的源(static.store.com), 难道他就没法操作www.store.com页面的内容了吗? 如果不能操作,这个jquery.js就没有任何用处啦!

我把这个困惑给大家说了下, FireFox马上附和: “没错,难道我们要强制人类把所有的JavaScript代码放到www.store.com下吗? 人类肯定不能容忍! ”

“嗯,这是个好问题”  Mozilla族长说,“这样,我给你们开个口子,对于使用<script src='xxxxx'> 加载的JavaScript,我们认为它的源属于www.store.com, 而不属于static.store.com,这样就可以操作www.store.com的页面了,行不行?”

我和FireFox都表示赞同,其实这种“嵌入式”的跨域加载资源的方式还有<img>,<link>等,相当于我们浏览器发起了一次GET请求,取到相关资源,然后放到本地而已。

同源策略就这么确定下来了, 我们这些浏览器都开始严格遵守执行,果然,安全事故大大减少。

5

凡事都有例外

过了一段时间,JavaScript这小子便跑来抱怨了:“你们这个同源策略实在太严格了,太不方便了。”

我说:“这也是为了大家好啊,省得那些不良网站干坏事。”

JavaScript说:“好什么好? 现在人类的系统越来越大,大部分都拆分成分布式的了,每个系统都有子域名,像login.store.com, payment.store.com, 虽然二级域名不同,但是他们属于一个大的系统,由于同源策略的铁规,cookie不能在这个系统之间共享,麻烦死了。”

这确实是个问题,我带着JavaScript找到到Mozilla组长,说明情况,希望他网开一面。

族长说:“好吧,我再给你们开个口子,如果两个网页的一级域名是相同的,他们可以共享cookie, 不过cookie的domain一定要设置为那个一级域名才可以,例如:”

document.cookie = 'test=true;path=/;domain=store.com'

JavaScript说:“还有个大问题,你们为什么不让我使用XMLHttpRequest访问不同的网站啊!”

我心想JavaScript说的可能是AJAX,可以创建一个XMLHttpRequest对象去异步的访问服务器端提供的服务,做到局部刷新页面,用户体验很好。

难道这个XMLHttpRequest对象只能访问源服务器(如book.com),不能访问其他服务器(如beauty.com)?

0?wx_fmt=gif

0?wx_fmt=png

族长说:“是啊,XMLHttpReqeust也要遵守同源策略。”

JavaScript说:“可是这没有道理啊!我虽然是从book.com来的,但是为什么不让我访问beauty.com?”

族长说:“我这也是为了防止黑客攻击,给你举个例子,假设你的主人登录了book.com , 然后又去访问beauty.com,如果这个beauty.com是个恶意网站,它也要求你创建一个XMLHttpRequest对象,通过这个对象向book.com(不同源)发起请求,获取你主人的账户信息,会发生什么情况? ”

JavaScript恍然大悟:“奥,我懂了,由于主人登录过了book.com,登录cookie什么的都在,那beauty.com的JavaScript 向book.com发起的XMLHttpRequest请求也会成功,我主人的账户信息就会被黑客给获取了。”

我说:“看来对XMLHttpReqeust对象施加同源策略也是非常重要的啊!”

JavaScript沉默了半天说:“那怎么办?”

Mozilla族长说:“你可以通过服务器端中转啊,例如你是来自book.com的, 现在想访问movie.com,那可以让那个book.com把请求转发给movie.com嘛!人类好像给这种方式起了个名字,叫什么代理模式,那个book.com就是代理人。”

0?wx_fmt=gif

0?wx_fmt=png

JavaScript急忙说:“不不, 这样太麻烦了,族长你想想,如果我要访问多个不同源的系统,要是都通过book.com中转,该多麻烦!”

族长想了想说:“你说得有一定道理,我给你出个主意,既然服务器(domain)之间是互信的,那一个服务器(domain)可以设置一个白名单,里边列出它允许哪些服务器(domain)的AJAX请求。假设movie.com的白名单中有book.com, 那当属于book.com的JavaScript试图访问movie.com的时候......”

JavaScript马上接口说:“ 这时候,我们浏览器做点手脚,悄悄地把当前的源(book.com)发过去,询问下movie.com, 看看他是否允许我们访问,如何允许,你们就继续访问,否则就报错!”

0?wx_fmt=gif

0?wx_fmt=png

组长说:“就是这个意思,这样以来,那些黑客就没有办法假冒用户向这些互信的服务器发送请求了, 我把这个方法叫做Cross Origin Resource Sharing,简称CORS,只不过这个方法需要服务器的配合了”

(码农翻身注:上面说的是CORS的简单请求,对于Preflight请求,本文不在展开描述)

JavaScript表示同意,这也算是一个不错的妥协方法了。

(完)

你看到的只是冰山一角, 更多精彩文章,请移步《2016文章精华》或者《2017上半年文章精华》


码农翻身

用故事讲述技术

0.jpeg

【机械视觉】C#+VisionPro实战:位深图(CogImage8Grey)与Bitmap互转技巧及工业检测应用 本文详细介绍了在工业检测中如何使用C#和VisionPro实现位深图(CogImage8Grey)与Bitmap的高效互转技巧。通过实战代码示例和工业应用案例,帮助开发者解决图像处理中的常见问题,提升检测精度和系统性能,适用于半导体、汽车零部件等高精度检测场景。 阅读详情

相关推荐

当迁移学习遇见室内定位:基于UJIIndoorLoc的跨场景适配实践

本文探讨了迁移学习在跨建筑室内定位中的应用,重点解析了UJIIndoorLoc数据集的特性及其在解决设备差异和环境变化中的关键作用。通过特征工程、迁移学习策略和小样本微调技术,显著提升了定位模型的跨场景适配能力,为实际部署提供了有效解决方案。

weixin_29038155的博客 394

你知道 浏览器家族:Netscape-Mozilla-Phoenix-Firebird-Firefox 的关系么?

Netscape是最早出现并被广泛应用于互联网的第一款浏览器。也是最好的Web浏览器之一。Full(完整版)的Netscape浏览器包括一系列实用组件:浏览器、Email客户程序、新闻组、简易网页编辑器和即时消息工具等。Mozilla是Mozilla

游手好弦 信步涂鸦 3073

dq轴坐标系下的电路方程

dq轴坐标系下的电路方程 dq轴坐标系是一种常见的电路方程,但是再dq轴坐标系下电路元件的电压电流dq轴存在一定的耦合,本文针对三相电路推导了dq轴坐标系下的电路电路方程进行一个推导,首先先列出来派克变换的公式 派克变换 [AdAqA0]=23[cos⁡(θ)cos⁡(θ−2π/3)cos⁡(θ+2π/3)−sin⁡(θ)−sin⁡(θ−2π/3)−sin⁡(θ+2π/3)1/21/21/2][AaAbAc]\left[\begin{array}{c}A_d\\A_q\\A_0 \end{array}\ri

Mr.Young的博客 1万+

浏览器的家族史

浏览器的家族史 标签: 浏览器 2010-08-09 11:04     -  发文庆祝国际米兰获得欧冠联赛冠军! ^_^ 20世纪中后期,互联网已经初具雏形;到20世纪90年代,全球进入互联网时代,浏览器成为人们获取互联网信息不可或缺的工具。经

760

速腾R128雷达+海康全景相机ROS数据采集避坑实录:从‘雷达不转’到MATLAB标定的完整流程

本文详细记录了速腾R128激光雷达与海康威视全景相机在ROS环境下的数据采集与MATLAB标定全流程。从硬件配置的常见陷阱(如雷达旋转参数设置)、驱动编译的依赖管理,到多传感器同步的实战技巧和MATLAB标定方法,提供了完整的避坑指南和技术方案。特别针对RoboSense R128雷达和海康相机的特殊需求给出了具体解决方案。

weixin_28717807的博客 1219

modbus-esp8266库深度解析:工业级Modbus协议栈实现

Modbus是一种广泛应用于工业自动化领域的通用串行通信协议,其核心在于标准化的功能码、寄存器模型与帧结构设计。基于RTU、ASCII和TCP三种传输变体,Modbus协议通过主从架构实现设备间可靠数据交互,具备低开销、高兼容性与强实时性等技术价值。在边缘计算与工业物联网场景中,它被广泛用于PLC通信、传感器数据采集、HMI集成及远程固件升级(FOTA)等关键任务。针对ESP8266/ESP32等Wi-Fi微控制器平台,modbus-esp8266库提供了完整协议栈支持,涵盖多实例并发、回调驱动架构、零拷贝

weixin_42315569的博客 350

码农翻身讲网络5:从Web安全到HTTPS

浏览器:一个家族的奋斗 浏览器家族的安全反击战 黑客三兄弟 黑客三兄弟(续) 一个故事讲完https 深入浅出HTTPS工作原理 原创: 刘欣 码农翻身 2017-12-12 我是你们每天都要使用的浏览器,自从90年代诞生以来,我们这个大家族变得非常的繁荣,在过去的几十年中,我们一直兢兢业业地帮助你们人类去探索外部的互联网世界。随着互联网和移动互联网的发展,我们家族终于登上了成功的巅峰:几乎占据...

mhHao的博客 349

基于线性光耦HCNR200的高压直流采样电路设计与精度优化

本文详细介绍了基于线性光耦HCNR200的高压直流采样电路设计与精度优化方法。针对直流高电压测量中的安全与干扰问题,提出采用HCNR200光耦隔离方案,实现高精度线性传输。文章深入解析电路设计关键细节,包括电阻网络、运放选型、滤波电容配置等,并提供精度优化实战技巧与常见问题排查指南,助力新能源电动汽车和高压储能系统的高压直流采样应用。

weixin_42713608的博客 579

为什么Intel放弃Hyperscan:Vectorscan项目背后的开源反击战

**Vectorscan** 是 Intel 高性能正则表达式匹配库 **Hyperscan** 的开源分叉(fork)版本,一款可跨平台移植的高性能多模式正则匹配引擎。当 Intel 在 5.4 之后将 Hyperscan 转为闭源、并拒绝了社区的 ARM 移植请求后,Vectorscan 以 BSD 许可证发起了这场"开源反击战",让 ARM/Power 平台也能用上顶级性能的正则扫描能力。

gitblog_00240的博客 705

数据分析:美团大赛的具体案例制作

在数据集中,存在三个变量的经纬度数据,分别是商家的经纬度数据('sender_lng', 'sender_lat'),顾客的经纬度数据('recipient_lng', 'recipient_lat')和骑手的经纬度数据('grab_lng', 'grab_lat')。根据结果可知,平台订单创建时间的中位数为2022-10-21 02:59:01,平台订单创建时间的众数为2022-10-19 03:29:41、2022-10-23 03:29:47,与直方图相符。接下来,我们对是否为预定订单变量进行分析。

m0_68269346的博客 2499

【Matlab深度学习】GPU加速实战:从环境配置到性能优化

本文详细介绍了如何在Matlab中为深度学习任务配置GPU加速环境并进行性能优化。文章从GPU加速的必要性讲起,手把手指导安装NVIDIA驱动、CUDA和cuDNN核心三件套,并验证环境。重点讲解了如何利用gpuArray将数据和模型迁移至GPU,以及通过内存优化、计算优化和多GPU并行等策略充分释放GPU算力,大幅缩短深度学习模型的训练时间。

weixin_29061465的博客 492

懒懒的~~

转发一篇文章 来自微信公众号:码农翻身,coderising 浏览器家族的安全反击战 本地启动后端服务项目 debug Main方法 改提供方别名 改调用方别名 转载于:https://www.cnblogs.com/andy1202go/p/8067252.html...

weixin_30674525的博客 99

停车位检测:基于YOLOv5与UI界面的实现

YOLOv5是YOLO(You Only Look Once)系列中的最新版本,它能够在单次前向传播中同时完成多个目标的定位与分类,因此被广泛应用于实时目标检测任务。与之前的版本相比,YOLOv5在精度和速度上得到了很大的优化,适合嵌入到实际的自动驾驶和智能交通系统中。YOLOv5使用了卷积神经网络(CNN)进行特征提取,并通过回归方法预测边界框、类别及置信度。高效的推理速度:YOLOv5采用了优化的模型结构,能够在保证精度的同时提供较快的推理速度。较高的精度。

YOLO 694

Google反击战:Gemini 2.0全线升级,面向所有人开放!

AI 加速竞赛在科技巨头与初创公司之间愈演愈烈。这边 DeepSeek R1 的诞生引爆全球科技圈,其强大的竞争对手们也没有闲着,先有 OpenAI 加码带来 Deep Search 工具并向所有用户开放 ChatGPT 搜索功能,后有Google 正式向所有用户推出升级后的 Gemini 2.0 家族,并称其为迄今为止“功能最强大”的 ...

优快云资讯 6168

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java生态反击战!Spring AI vs LangChain4j:15维度终极对比+选型决策树

在Python长期主导的AI领域,Java生态正发起一场漂亮的"反击战"。JetBrains 2024年开发者调查报告显示,尽管Python在AI研究领域占据优势,但在企业级AI应用部署中,Java仍保持着38%的市场份额,这一数字在金融、电商等传统行业甚至超过50%。在这场技术复兴中,两大Java框架脱颖而出:Spring AI——依托Spring生态的完整企业级解决方案,与LangChain4j——移植自Python生态的灵活开发框架。

小筱在线博客 1168

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

流式数据武装零售业,打响“降维”反击战!

开工大吉!过年买买买的年货都吃完了吗?今年,你是“空手回家”还是满载而归?如今,电商颠覆了传统零售业,越来越多人的选择“空手”回家过年,网购置办年货,轻松和孝心兼得,何乐而不为?故而一时间,传统零售业们都谈起了“互联网+”。那互联网企业在谈什么?降维攻击!所谓降维攻击,最早来源于首部获雨果奖的中文科幻小说——《三体》。在书中,已达到高级文明程度的三体星人,用难以想象的方式,兵不血刃,迅速灭掉低级文...

insideout2016的博客 354

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

燃油车打响智能化“反击战”,谁在抢食NOA市场新机会?

在智能化浪潮下,“油电同智”已经成为行业共识,由此也带动NOA进入新一轮的高速增长期。今年以来,大众、日产、吉利、奇瑞等汽车品牌都在加码燃油车智能化升级,并先后提出“油电同智”战略。其中,早在2024年,上汽大众就喊出了“油电同智”的口号,并且于2025年9月推出了上汽大众Pro家族2026款,新车全系搭载具备高速领航功能的IQ.Pilot增强驾驶辅助系统。

高工智能汽车 483

“匿影”僵尸网络携新一轮勒索再临,360安全大脑独家解析攻击全链路

1、网络安全理论知识(2天)①了解行业相关背景,前景,确定发展方向。②学习网络安全相关法律法规。③网络安全运营的概念。④等保简介、等保规定、流程和规范。(非常重要)2、渗透测试基础(一周)①渗透测试的流程、分类、标准②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等3、操作系统基础(一周)

小王的储物间 444

一个程序员的黑客梦

张大胖上大学的时候就对网络安全非常感兴趣, 经常上网去搜索那些传奇的黑客故事,然后心里痒痒的想小试牛刀。那个时候大家的安全意识非常薄弱,张大胖学会了SQL注入以后,居然...

码农翻身 2万+

eTrust全方位实现安全管理(转)

eTrust全方位实现安全管理(转)[@more@]  eTrust作为CA的四大品牌之一,是一套全面管理电子商务环境安全的解决方案套件,它提供了对企业环境进行保护所需的综合安全功能,能够保护从浏览器到大型主机的所有资源,并管理...

cuanjun1153的博客 965

黑客三兄弟

建立Beauty.com的黑客三兄弟最近可谓是春风得意,他们的这个网站精准地利用了人类的本性,窃取了不少登录用户的cookie。(码农翻身注:参见前文《浏览器的安全反击战...

码农翻身 664

javaWeb - 同源策略: Jsonp & CORS

博文内容总结自文章:浏览器家族的安全反击战 同源策略 同源是指{protocol,host,port} 这三个东西必须得一样! 例如有这么一个网页: http://www.store.com/product/page.html, 下面的表格列出了各种不同情况: 使用同源策略的原因 Cookie失窃,非法网页通过javascript访问其他应用的服务器,获取到Cookie后伪装

Duan的博客 662

同源策略与CORS

同源策略 同源策略是浏览器保护用户安全上网的重要措施,协议、域名、端口号三者相同即为同源。 不同源下,浏览器不允许js操作Cookie、LocalStorage、DOM等数据或页面元素,也不允许发送ajax请求,同源下则不受影响。 下图是在Chrom控制台中发送ajax跨域请求的报错信息:图片中黄色部分提示响应被阻止,说明在跨域的情况下,请求依然发送到了...

weixin_34291004的博客 195

告别2017,码农翻身全年文章精华

时间过得真快,转眼间2017年就结束了!感谢大家一年来的陪伴、支持和鼓励!这里是2017年全年码农翻身文章精华, 点击标题阅读, 欢迎转发分享。 如果觉得不过瘾的话,一定要逛逛《码农翻身2016年文章精华》, 那里有更多有趣的技术故事。大话编程一个故事讲完httpsC老头和Java小子的硬盘夜话我是一个函数操作系统是个大骗子?90后“老头儿”和00后Go小子的硬盘夜话爱炫耀的数据库老头儿浏览器:一...

Robin022的专栏 395

XSS 和 CSRF

感谢《码农翻身》的文章让我深刻记住这两种攻击方式。 1、《浏览器家族的安全反击战》 2、 《黑客三兄弟》 3、  《黑客三兄弟续》  下面是我的整理内容: 目录 矛与盾教量: 矛:利用js获取其他网站的cookie  盾:JS 同源策略 {protocol, host, port} 矛:JS 注入 盾:cookie 添加 HttpOnly 属性 禁止js 读取 矛:JS 假造...

培训班的蜗牛 1000
上一篇: 推荐7个优质技术公众号
下一篇: 在AI“看起来已成大势”的情况下,传统Java后台开发,前景如何?
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值