• HTTP的问题:

    • 通信使用明文,可能会遭到窃听:HTTP本身不具备加密功能,根据TCP/IP协议工作的线路上可能会遭到窃听,即使通信内容已经加密,也会被看到

      • 通信加密:通过SSL(Secure Socket Layer)或TLS建立安全通信线路
      • 内容加密:将发送的内容加密
    • 不验证通信双方身份:无法验证服务器和客户端身份,无法确认通信双方访问权限,无意义的请求也接受
      (DoS攻击:攻击端,发送完第一次握手的数据后,然后就“消失”了,那么服务器就会不断的发送第二次握手的数据,可是攻击端的人找不到了。于是,服务器的资源大量被消耗,直到死机为止。)

      • 查明对方的证书:SSL提供一种使用证书的手段,证书由值得信任的第三方机构发布
    • 无法证明报文的完整性:无法确认发出的内容和收到的内容一致
      • 使用MD5和SHA-1等散列值校验,需要用户亲自验证下载内容是否与原服务器一致
  • HTTPS:有SSL的外壳的HTTP
    • HTTPS = HTTP+加密+认证+完整性保护
    • 加密方式
      • 共享密钥:加密和解密使用相同的密钥,有丢失密钥的风险
      • 使用了两把密钥,公开密钥加密:一把叫做公开密钥(可以公开),一把是私有密钥,发送信息的一方使用对方公开密钥,接受信息的一方使用自己的私有密钥解密(根据公开密钥和密文解密异常困难),此方法比共享密钥复杂很多
      • HTTPS使用混合加密方式:使用公开密钥交换密钥,使用共享密钥解密
    • 使用证书证明密钥正确性:将公开密钥与证书绑定在一起,接收到的客户端,对证书上的数字签名进行验证。客户端也可以使用证书,但是需要付费
    • 使用SSl速度会变得很慢:
      • 消耗CPU等资源
      • 通信速度慢
  • 消除HTTP瓶颈:
    • 问题:如果服务器内容实时更新需要频繁从客户端到服务器进行确认
    • 原因:
      • 一条连接只能发送一个请求
      • 请求只能从客户端到服务器
      • 请求首部未压缩
    • 解决:在HTTP层和TCP层之间加入SPDY,已加入HTTP2.0
      • 多路复用
      • 请求赋予优先级
      • 压缩HTTP首部
      • 支持推送
  • 攻击:
    • XSS:例如在填写表单密码时,在代码中嵌入恶意js代码,当用户点击提交时,显示进入正常页面,但将密码发送到未知地方
    • SQL注入:

Http学习(三)的更多相关文章

  1. HTTP学习三:HTTPS

    HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...

  2. TweenMax动画库学习(三)

    目录               TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)           ...

  3. Struts2框架学习(三) 数据处理

    Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...

  4. 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化

    1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...

  5. DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  6. [ZZ] 深度学习三巨头之一来清华演讲了,你只需要知道这7点

    深度学习三巨头之一来清华演讲了,你只需要知道这7点 http://wemedia.ifeng.com/10939074/wemedia.shtml Yann LeCun还提到了一项FAIR开发的,用于 ...

  7. SVG 学习<三>渐变

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  8. Android JNI学习(三)——Java与Native相互调用

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  9. day91 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  10. Django基础学习三_路由系统

    今天主要来学习一下Django的路由系统,视频中只学了一些皮毛,但是也做下总结,主要分为静态路由.动态路由.二级路由 一.先来看下静态路由 1.需要在project中的urls文件中做配置,然后将匹配 ...

随机推荐

  1. qt创建无qt工程

    qt创建无qt工程,cmake . eclipse 编写makefile  代码

  2. webpack4.0高级

    环境变量 webpack --env.NODE_ENV=local --env.production --progress Tree Shaking 移除JS上下文字未被引用的代码 只支持ES6的im ...

  3. Development 编程规范

    { 命名规范类命名 1)所有的类名,接口名(Protocol)均以大写字母开头,多单词组合时,后面的单词首字母大写.   类,接口名必须是有意义的,切忌使用中文拼音命名.另外所有类都要加标致前缀:“O ...

  4. windows 登陆服务器

    点击电脑的左下方开始,然后输入远字,如下图,就可以招到远程桌面了. 点击远程桌面就进入下图界面了.默认情况下,是在常规这个选项卡. 我们切换到显示,可以调节远程桌面的大小,一般我们设置成全屏显示.只要 ...

  5. Go Mixed 变量声明

    Go Mixed 变量声明 package main import "fmt" func main() { var a, b, c = 3, 4, "foo" ...

  6. 关于windows下远程连接Linux服务器的方法(CentOs)

    1.服务器端安装VNC 1) 安装vncserver yum install -y tigervnc-server 2) 修改配置 vi /etc/sysconfig/vncservers   最后两 ...

  7. NX二次开发-UFUN文件选择对话框UF_UI_create_filebox

    NX11+VS2013 #include <uf.h> #include <uf_ui.h> UF_initialize(); //文件选择对话框 char sPromptSt ...

  8. 在vs2010下编译boost

    1. 解压缩后,运行bootstrap.bat批处理文件,得到bjam.exe; 2. 在vs2010下编译boost boost最新版本已经支持vs2010,然而直接下载编译会发现一堆bug: 首先 ...

  9. Windows内核驱动开发入门学习资料

    声明:本文所描述的所有资料和源码均搜集自互联网,版权归原始作者所有,所以在引用资料时我尽量注明原始作者和出处:本文所搜集资料也仅供同学们学习之用,由于用作其他用途引起的责任纠纷,本人不负任何责任.(本 ...

  10. LeetCode 627. Swap Salary (交换工资)

    题目标签: 题目给了我们一个 工资表格,让我们把 男女性别对换. 这里可以利用IF, IF(condition, value_if_true, value_if_false). Java Soluti ...