#rest #encryption #ssl #https
#rest #шифрование #ssl #https
Вопрос:
Есть ли способ зашифровать данные, передаваемые через службу restful?
У меня есть служба getUser, которая принимает идентификатор пользователя и предоставляет информацию о пользователе. Согласно руководствам по restful, я должен отправить запрос, подобный этому, чтобы получить информацию о пользователе: http://myrestfulserver/getUser/123 где 123 — идентификатор пользователя. Есть ли простой способ зашифровать 123 с использованием https без реализации проприетарного уровня безопасности?
Ответ №1:
Да, но чтобы понять, что происходит, вам, вероятно, нужно поиграть с telnet.
В принципе, в SSL есть три этапа, тогда как в HTTP (обычном) их два.
- Откройте сокет для сервера.
- Согласование зашифрованного канала.
- Отправляйте зашифрованные данные.
Итак, 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>
...
...
Хорошо, итак, что вы должны понять из этого, так это то, что подключение и запрос нужной части URL-адреса — это разные вещи. Вернемся к нашему трехэтапному решению:
- Подключитесь к yourrestfulserver.com
- Установить SSL
- Проблема GET / getUser /123 HTTP /1.1
Как вы можете видеть, 3) выполняется по зашифрованному соединению, поэтому весь URL-адрес невидим для любого, кто отслеживает операцию, а не только идентификатор, поэтому нет необходимости шифровать параметр URL для проблем OTA.
Что касается доступа на стороне клиента, если вы или используемый вами процесс намеренно не регистрируете эту информацию, она также зашифрована.