HTTPS的七个神话(译文)
原文网址:http://blog.httpwatch.com/2011/01/28/top-7-myths-about-https/
译文地址:http://www.ruanyifeng.com/blog/2011/02/seven_myths_about_https.html
误解七:HTTPS无法缓存
许多人以为,出于安全考虑,浏览器不会在本地保存HTTPS缓存。实际上,只要在HTTP头中使用特定命令,HTTPS是可以缓存的。
微软的IE项目经理Eric Lawrence写道:
"说来也许令人震惊,只要HTTP头允许这样做,所有版本的IE都缓存HTTPS内容。比如,如果头命令是Cache-Control: max-age=600,那么这个网页就将被IE缓存10分钟。IE的缓存策略,与是否使用HTTPS协议无关。(其他浏览器在这方面的行为不一致,取决于你使用的版本,所以这里不加以讨论。)"
Firefox默认只在内存中缓存HTTPS。但是,只要头命令中有Cache-Control: Public,缓存就会被写到硬盘上。下面的图片显示,Firefox的硬盘缓存中有HTTPS内容,头命令正是Cache-Control:Public。
误解六:SSL证书很贵
如果你在网上搜一下,就会发现很多便宜的SSL证书,大概10美元一年,这和一个.com域名的年费差不多。而且事实上,还能找到免费的SSL证书。
在效力上,便宜的证书当然会比大机构颁发的证书差一点,但是几乎所有的主流浏览器都接受这些证书。
误解五:HTTPS站点必须有独享的IP地址
由于IPv4将要分配完毕,所以很多人关心这个问题。每个IP地址只能安装一张SSL证书,这是毫无疑问的。但是,如果你使用子域名通配符SSL证书(wildcard SSL certificate,价格大约是每年125美元),就能在一个IP地址上部署多个HTTPS子域名。比如,https://www.httpwatch.com和https://store.httpwatch.com,就共享同一个IP地址。
另外,UCC(统一通信证书,Unified Communications Certificate)支持一张证书同时匹配多个站点,可以是完全不同的域名。SNI(服务器名称指示,Server Name Indication)允许一个IP地址上多个域名安装多张证书。服务器端,Apache和Nginx支持该技术,IIS不支持;客户端,IE 7+、Firefox 2.0+、Chrome 6+、Safari 2.1+和Opera 8.0+支持。
误解四:转移服务器时要购买新证书
部署SSL证书,需要这样几步:
1. 在你的服务器上,生成一个CSR文件(SSL证书请求文件,SSL Certificate Signing Request)。
2. 使用CSR文件,购买SSL证书。
3. 安装SSL证书。
这些步骤都经过精心设计,保证传输的安全,防止有人截取或非法获得证书。结果就是,你在第二步得到的证书不能用在另一台服务器上。如果你需要这样做,就必须以其他格式输出证书。
比如,IIS的做法是生成一个可以转移的.pfx文件,并加以密码保护。
将这个文件传入其他服务器,将可以继续使用原来的SSL证书了。
误解三:HTTPS太慢
使用HTTPS不会使你的网站变得更快(实际上有可能,请看下文),但是有一些技巧可以大大减少额外开销。
首先,只要压缩文本内容,就会降低解码耗用的CPU资源。不过,对于当代CPU来说,这点开销不值一提。
其次,建立HTTPS连接,要求额外的TCP往返,因此会新增一些发送和接收的字节。但是,从下图可以看到,新增的字节是很少的。
第一次打开网页的时候,HTTPS协议会比HTTP协议慢一点,这是因为读取和验证SSL证书的时间。下面是一张HTTP网页打开时间的瀑布图。
同一张网页使用HTTPS协议之后,打开时间变长了。
建立连接的部分,大约慢了10%。但是,一旦有效的HTTPS连接建立起来,再刷新网页,两种协议几乎没有区别。先是HTTP协议的刷新表现:
然后是HTTPS协议:
某些用户可能发现,HTTPS比HTTP更快一点。这会发生在一些大公司的内部局域网,因为通常情况下,公司的网关会截取并分析所有的网络通信。但是,当它遇到HTTPS连接时,它就只能直接放行,因为HTTPS无法被解读。正是因为少了这个解读的过程,所以HTTPS变得比较快。
误解二:有了HTTPS,Cookie和查询字符串就安全了
虽然无法直接从HTTPS数据中读取Cookie和查询字符串,但是你仍然需要使它们的值变得难以预测。
比如,曾经有一家英国银行,直接使用顺序排列的数值表示session id:
黑客可以先注册一个账户,找到这个cookie,看到这个值的表示方法。然后,改动cookie,从而劫持其他人的session id。至于查询字符串,也可以通过类似方式泄漏。
误解一:只有注册登录页,才需要HTTPS
这种想法很普遍。人们觉得,HTTPS可以保护用户的密码,此外就不需要了。Firefox浏览器新插件Firesheep,证明了这种想法是错的。我们可以看到,在Twitter和Facebook上,劫持其他人的session是非常容易的。
咖啡馆的免费WiFi,就是一个很理想的劫持环境,因为两个原因:
1. 这种WiFi通常不会加密,所以很容易监控所有流量。
2. WiFi通常使用NAT进行外网和内网的地址转换,所有内网客户端都共享一个外网地址。这意味着,被劫持的session,看上去很像来自原来的登录者。
以Twitter为例,它的登录页使用了HTTPS,但是登录以后,其他页面就变成了HTTP。这时,它的cookie里的session值就暴露了。
也就是说,这些cookie是在HTTPS环境下建立的,但是却在HTTP环境下传输。如果有人劫持到这些cookie,那他就能以你的身份在Twitter上发言了。
(完)
相关文章:

蓝牙写入数据库_蓝牙 数据写入 简单易懂版(适合没写过蓝牙的看)
//字符串转arrbufferfunction string2buffer(str) {// 首先将字符串转为16进制let val ""for (let i 0; i < str.length; i) {if (val ) {val str.charCodeAt(i).toString(16)} else {val , str.charCodeAt(i).toString(16)}}// 将16进制转化为ArrayBufferr…

Educational Codeforces Round 9 F. Magic Matrix 最小生成树
F. Magic Matrix题目连接: http://www.codeforces.com/contest/632/problem/F Description Youre given a matrix A of size n n. Lets call the matrix with nonnegative elements magic if it is symmetric (so aij aji), aii 0 and aij ≤ max(aik, …

【SqlServer】SqlServer中的更新锁(UPDLOCK)
UPDLOCK.UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。当我们用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能…

Oracle CDC (Change Data Capture)更新数据捕获——概述
Change Data Capture能高效识别并捕获数据的插入、修改和删除,使更新数据供个人或应用使用。 CDC从oracle 9i开始引入,//TODO 在11G R2之后的版本里将取消支持,被Oracle GoldenGate取代。 CDC的一些概念 CDC有同步和异步两种模式,…

flutter ios启动白屏_Flutter技术架构概览
前言最近在整理各种技术架构,给自己的列了个TODO list,希望能在几个月的时间内,研究完各种前端技术架构,包括移动端技术架构。今天分享一下自己整理的flutter技术架构。完整的技术架构TODO list可以去我的github仓库查看ÿ…

SQL Relay开源的数据库池连接代理服务器
一、SQL Relay是什么? SQL Relay是一个开源的数据库池连接代理服务器 二、SQL Relay支持哪些数据库?* Oracle* MySQL* mSQL* PostgreSQL* Sybase* MS SQL Server* IBM DB2* Interbase* Sybase* SQLite* Lago* ODBC* MS Access三、安装和配置;…

关于Android开源库分享平台,(GitClub)微信小程序的开发体验
七八月份的深圳一直在下雨,总有人说雨天适合窝在家看书,对于程序开发者来说更是难得的学习机会。我们502工作室的小伙伴利用这个时间学习了一下微信小程序开发,并上线了一个GitClub小程序,目前功能有些简陋,难免有辣眼…

RSync实现文件备份同步
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:1、可以镜像保存整个目录树和文件系统。2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。3、无须特殊权限即可安装。4、优化的流程&#…
Hibernate annotation多对多配置
角色(用户组),用户多对多。 角色实体配置: private Set<TAuthUser> users;ManyToManyJoinTable(name"t_auth_user_role",joinColumns{JoinColumn(name"role_id")},inverseJoinColumns{JoinColumn(name&…

ajax中的url如何传递变量_如何创建和参数化UDT数据类型中的变量及IN,OUT 等参数?...
从数据类型的意义上说 UDT 并不被 CPU 所识别,而是在离线程序中自定义(组合)的数据类型。 S7 程序的自定义数据类型并不能装载到 S7 CPU 中。UDT 是由递增的编辑器创建并编辑或由源文件的编译而生成。 当在块调用中进行变量传递时是不能将 UDT 作为内存地址区域来传…

[雪峰磁针石博客]kotlin书籍汇总
2019独角兽企业重金招聘Python工程师标准>>> 下载地址 Learning Kotlin by Building Android Applications - 2018 初级 Develop amazing applications that will help you understand and explore the fundamentals of Kotlin while covering 3 various types of p…

web集群时session同步的3种方法
web集群时session同步的3种方法在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,一个登录用户,一会是登录状…

属于python文件的操作有_Python的文件操作
1、初始文件操作1、使用python读写文件使用open()函数获取文件句柄,就可以操作文件了,根据打开方式不同能执行的操作也不同。打开方式有:r、w、a、r、w、a、rb、wb、ab、rb、wb、ab,默认用的是r模式2、只读操作(r、rb)2.1、只读模…

[iOS]开发者证书和描述文件的作用
先说下证书吧。 然后是描述文件 转载于:https://www.cnblogs.com/wangqi1221/p/5240273.html

单元格编辑后级联汇总刷新
单元格编辑 级联刷新 PDERPDB db new PDERPDB(); int conid 0; int pid 0; string sql ""; string sqlC ""; if (int.TryParse(Pid, out pid)) { sql string.Format(" UPDATE JL_Project set PCMoney{0} where Pid{1};", pcmoney, Pid); }…

HTTP 协议的通用头域via 的意义以及作用
列出从客户端到 OCS 或者相反方向的响应经过了哪些代理服务器,他们用 什么协议(和版本)发送的请求。 当客户端请求到达第一个代理服务器时,该服务器会在自己发出的请求里面 添…

6-5-树的双亲表示法-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版...
课本源码部分 第6章 树和二叉树 - 树的双亲表示法 ——《数据结构》-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码习题集解析使用说明 课本源码合辑 链接☛☛☛ 《数据结构》课本源码合辑 习题集全解析 …

压力测试 闪存_产品评测 | HPE Nimble AF全闪存系列,诠释真正的高端存储
随着AI、互联网、大数据等技术快速发展,企业对存储设备的需求已踏上一个更高的级别,高性能、低延时、大容量等多种需求的应用场景愈发常见,在这种情况下,寻求能够满足相应工作负载能力的存储设备已成为企业IT管理者的当务之急。这…

Mysql无法选取非聚合列
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)Mysql 无法选取非聚合列。 更多讨论或者错误提交,也请移步。 1. 前言 最近升级博客,给文章页面底部增加了两个按钮,可以直接…

网络设置巨形帧_Trunk的概念与设置
在二层交换机的性能参数中,常常提到一个重要的指标:TRUNK ,许多的二层交换机产品在介绍其性能时,都会提到能够支持TRUNK 功能,从而可以为互连的交换机之间提供更好的传输性能。那到底什么是TRUNK呢?使用TRU…

epoll使用详解
epoll的工作原理是,你如果想进行IO操作时,先向epoll查询是否可读或可写,如果处于可读或可写状态后,epoll会通过epoll_wait函数通知你,此时你再进行进一步的recv或send操作。epoll仅仅是一个异步事件的通知机制…

软件测试(一)
最近的时间内,我印象最深刻的Bug是在上学期的javaweb的大作业中。 其中的要求是在工作人员的每一条记录后面添加一个修改按钮,要求把前一个页面的内容带入到下一个页面中,由于密码采用的是MD5的加密,所以带入到后面的页面中的内容…

网络分流器-网络分流器IP网络路由交换测试技术探讨
网络分流器1 . 与流量相关的L2-3层高级测试技术探讨戎腾网络分流器: 对于一个L2-3层网络设备,最基本、最重要的测试是流量转发性能测试。作为一个网络转发设备,首先要保证可以高速、低时延、稳定地转发流量。相关的性能测试通常是通过流量生成器…

浅谈https\ssl\数字证书
在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了。本文追本溯源围绕这个模式谈一谈。 名词解释 首先解释一下上面的几个名词: https:在http(超文本传输协议)基础上提出的一种安全的http协议…

input不管用 vue_Vue自定义指令实现快速读取Excel
前几天因为业务需求,所维护的而后台中出现了大量关于上传下载Excel的操作。因为我们的后台是基于Vue,并且是在 vue-element-admin 的基础上结合实际需求开发而来。vue-element-admin 中也有一些相关操作 Excel 的示例,都十分清晰明了…

数据结构——算法之(010)( 字符串的左旋转操作)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping163.com】 题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cde…

value_counts()
Serise类型: Series.value_counts(normalizeFalse, sortTrue, ascendingFalse, binsNone, dropnaTrue) 功能:返回包含唯一值计数的对象。结果对象将按降序排列,以便第一个元素是最常出现的元素。 不包括默认的NA值。 参数:normali…

DFA和NFA
1.历史:引用正则表达式萌芽于1940年代的神经生理学研究,由著名数学家Stephen Kleene第一个正式描述。具体地说,Kleene归纳了前述的神经生理学研究,在一篇题为《正则集代数》的论文中定义了“正则集”,并在其上定义了一…

adc采样的值跳动_嵌入式er必知:模数采样知多少(最全总结)
[导读] 生活环境周围信号万万千,对于一个嵌入式er。我们利用技术去了解世界、改变世界。而一个产品要与外界物理环境打交道,一个至关重要的触角就是采样真实模拟世界的信号,翻译成芯片可理解的数字信号,进而实现很多为人服务的应…

Swift泛型
泛型是为Swift编程灵活性的一种语法,在函数、枚举、结构体、类中都得到充分的应用,它的引入可以起到占位符的作用,当类型暂时不确定的,只有等到调用函数时才能确定具体类型的时候可以引入泛型。 泛型函数 定义 fun 函数名<T,S&…