【问题标题】:Data encryption on restful serviceRESTful服务上的数据加密
【发布时间】:2011-09-11 17:11:45
【问题描述】:

有没有办法加密通过 RESTful 服务传递的数据?

我有一个服务 getUser,它接受用户 ID 并提供用户信息。 根据宁静的教程,我应该发送这样的查询以获取用户信息: http://myrestfulserver/getUser/123 其中 123 是用户 ID。 有没有一种简单的方法可以在不实现专有安全级别的情况下使用 https 加密 123?

【问题讨论】:

    标签: rest encryption ssl https


    【解决方案1】:

    是的,但是要了解发生了什么,您可能需要玩一下 telnet。

    基本上,SSL 有三个阶段,而 HTTP(普通)有两个。

    1. 打开一个到服务器的套接字。
    2. 协商加密通道。
    3. 发送加密数据。

    所以,1) 实际上是一个连接。 2) 在 HTTP 中不会发生,但在 HTTPS 中会发生,那么 3) 在这两种情况下都是 HTTP。 HTTP 是什么样的?使用远程登录:

    $ telnet google.com 80
    Trying 209.85.227.103...
    Connected to google.com.
    Escape character is '^]'.
    GET / HTTP/1.1 # <---- I typed this
    
    HTTP/1.1 302 Found
    Location: http://www.google.co.uk/
    Cache-Control: private
    Content-Type: text/html; charset=UTF-8
    Set-Cookie: PREF=ID=71ab4b30677eaa81:FF=0:TM=1307626411:LM=1....
    Date: Thu, 09 Jun 2011 13:33:31 GMT
    Server: gws
    Content-Length: 221
    X-XSS-Protection: 1; mode=block
    
    <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
    <TITLE>302 Moved</TITLE></HEAD><BODY>
    <H1>302 Moved</H1>
    The document has moved
    <A HREF="http://www.google.co.uk/">here</A>.
    </BODY></HTML>
    ...
    ...
    

    好的,所以您应该从中理解的是,连接和请求您想要的部分 url 是分开的事情。回到我们的三个阶段:

    1. 连接到 yourrestfulserver.com
    2. 建立 SSL
    3. 发出 GET /getUser/123 HTTP/1.1

    如您所见,3) 是通过加密连接完成的,因此任何嗅探操作的人都看不到整个 URL,而不仅仅是标识符,因此无需为 OTA 问题加密 url 选项。

    至于客户端访问,除非您或您使用的进程故意记录此信息,否则它也是加密的。

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多