Навіщо нам потрібна безпека служби REST, якщо у нас є HTTPS


13

Я посилаюся на цю чудову статтю http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/, яка говорить про амазонку, як безпеку веб-сервісу. Однак мені було задано питання в команді, навіщо нам це потрібно, якщо ми вже використовуємо HTTPS. Я не зміг відповісти, оскільки мені це дійсно здається, вони можуть мати рацію, хоча кишка говорить мені інакше.

Чи є місця при наданні послуг REST, де HTTPS може не працювати? Як сторонні веб-сайти?

Якщо хтось має досвід із забезпечення веб-сервісів через загальнодоступні переплетення, будь ласка, пролийте трохи світла на свій досвід.

Заздалегідь спасибі.

EDIT: Для уточнення я не говорю про автентифікацію користувача, а більше про автентифікацію клієнта. Аутентифікацію користувача можна вважати звичайним текстом через HTTPS + REST.

Я переживаю, що це все ще дозволяє будь-кому користуватися веб-сервісом без мого клієнта, щоб отримати доступ до неї, оскільки все є текстовим текстом, хоча за HTTPS кінцевою точкою клієнта все ще можна користуватися моєю веб-службою без клієнтської програми.


3
Найкраще підходить для security.stackexchange.com ?
jweyrich

1
можливо, ти маєш рацію, але моє питання пов'язане з mor deve.

Відповіді:


13

Чому нам потрібно надати Gmail - або будь-який інший сайт із обліковими записами користувачів - своє ім’я користувача та пароль, якщо він уже використовує HTTPS? Відповідь така ж, як і відповідь на ваше запитання.

HTTPS забезпечує, в першу чергу, зашифроване з'єднання між сервером і клієнтом.

Довіра, притаманна HTTPS, базується на основних органах сертифікації, які попередньо встановлені в програмному забезпеченні браузера (це еквівалентно твердженню "Я довіряю авторитетному сертифікату (наприклад, VeriSign / Microsoft / тощо.), Щоб сказати, кому я повинен довіряти").

Якщо сервер не дає кожному користувачеві сертифікат , сервер не може довіряти клієнту без якогось іншого способу аутентифікації.


вибачте, що ви неправильно зрозуміли, або я не зрозумів. Документи Amazon APi заявляють, що ми повинні використовувати HTTPS, але якщо ми цього не робимо, ми підписуємо цей запит. Пароль користувача не має значення в цей момент.

3
На високому рівні вам потрібно довести свою особу серверу, щоб він міг приймати від вас команди. Аутентифікацію клієнта можна здійснити за допомогою HTTPS, і це також можна зробити за допомогою підпису повідомлення.
Метт Бал

1
Якщо ви хочете використовувати HTTPS для автентифікації клієнта, вам потрібно видавати кожному користувачеві сертифікат відкритого ключа, як описано в останньому посиланні моєї відповіді. Розгляньте ці сертифікати як електронну версію паспорта.
Метт Бал

1
Ви посилаєтесь на "дайте сертифікату кожному користувачеві" відповідь на моє запитання. Я думаю, що для закриття обох кінців у веб-сервісі все-таки потрібен весь приватний відкритий ключ та підписання, щоб SSL на сервері було недостатньо. Ваша відповідь найближча досі. дуже тобі дякую.
Абхішек Дюджарі

1
+1 Чудово, що ви згадуєте клієнтські сертифікати, але це не обов'язково, що сервер видає сертифікати. Їх просто потрібно підписати довіреним ЦА; в основному те саме, що працюють серти-серти.
JimmyJames

3

HTTPS дуже добре запобігає підслуховуванню та нападам "людина в середині". Так як він шифрує весь трафік для сеансу.

Але оскільки більшість людей використовують сертифікати за замовчуванням, які постачаються разом із браузером, і не мають уявлення, як створити власний особистий сертифікат або налаштувати браузер для його використання.

Це робить HTTPS досить марним для аутентифікації користувачів, окрім захисту діалогу аутентифікації від підслуховування тощо.


Я думаю, ви дуже близькі до того, про що я прошу. Отже, ви пропонуєте нам все-таки підписати запит на стороні клієнта, навіть якщо ми використовуємо HTTPS?

2

HTTPS - це безпека каналу, а не доказ того, хто викликає або багато інших речей, які вам потрібно врахувати. Автентифікація, авторизація та шифрування транспортного шару - лише мала частина того, що вам потрібно врахувати. Багато відомих уразливостей, пов’язаних із веб-додатками, дуже сильно застосовуються до REST apis. Ви повинні врахувати перевірку введення даних, розтріскування сеансу, невідповідні повідомлення про помилки, внутрішню вразливість співробітників тощо. Це велика тема.

Роберт


0

Ви можете скористатись клієнтськими SSL-сертифікатами та відокремити безпеку від api. Великим недоліком такого підходу є операція накладних витрат, яка буде дорожчою, оскільки все більше і більше клієнтів споживають ваш api.

У будь-якому випадку, основна автентифікація HTTP просто чудова для більшості сервісів, що споживаються загалом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.