对宁静服务的数据加密

时间:2011-06-09 13:24:49

标签: rest encryption ssl https

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

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

1 个答案:

答案 0 :(得分:1)

是的,但要了解发生了什么,您可能需要使用telnet。

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

  1. 打开服务器的套接字。
  2. 协商加密频道。
  3. 发送加密数据。
  4. 所以,1)实际上是一个连接。 2)在HTTP中不会发生,但在HTTPS中发生,那么3)在两种情况下都是HTTP。 HTTP看起来像什么?使用telnet:

    $ 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>
    ...
    ...
    

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

    1. 连接到yourrestfulserver.com
    2. 建立SSL
    3. 发出GET / getUser / 123 HTTP / 1.1
    4. 正如您所看到的,3)是通过加密连接完成的,因此任何嗅探操作的人都不会看到整个URL,而不仅仅是标识符,因此无需为OTA问题加密url选项。

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