Безопасно ли передавать токены доступа через HTTP-заголовки?

11

Это первый веб-сервис RESTful, и я обеспокоен вопросами безопасности. Безопасно ли передавать мой токен доступа через HTTP-заголовки? Например:

POST /v1/i/resource HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Api-key: 5cac3297f0d9f46e1gh3k83881ba0980215cd71e
Access_token: 080ab6bd49b138594ac9647dc929122adfb983c8

parameter1=foo&parameter2=bar

Соединение установлено SSL. Кроме того, что необходимо определить как scopeатрибут для каждогоaccess token

ahmedsaber111
источник

Ответы:

12

Если бы вы передавали заголовок токена доступа через HTTP, то он был бы уязвим для атаки «человек посередине».

Когда вы передаете заголовок токена доступа через HTTPS, никто кроме клиента не сможет увидеть этот токен, так как запрос будет туннелироваться через безопасное соединение.

CodeART
источник
4
Неаккуратный клиент может быть уязвим к атакам MITM даже с использованием SSL.
ot--
Можете ли вы привести пример, пожалуйста?
CodeART
Вы не можете гарантировать безопасность на стороне клиента, если не контролируете клиента, но это верно практически для всего.
Мэтт
2
@CodeWorks Большинство браузеров предлагают пользователю возможность подключиться к ресурсу HTTPS, даже если сертификат SSL не подходит для этого ресурса. Это, пожалуй, одна из самых глупых вещей, которые когда-либо делали авторы браузера, и она по сути предлагает принимать атаки MITM.
Росс Паттерсон
1
@ Затем, этот конкретный сертификат MITM должен быть добавлен в список корневых сертификатов клиентов. В противном случае вы сократили предупреждение HTTPS до буквального «крика волка», что оба A) учат ваших пользователей навсегда игнорировать его, B) трудно (невозможно из-за A) отличить от настоящей злонамеренной атаки MITM.
Ник Т
8

Нет серьезной проблемы при передаче токена доступа через заголовки http, потому что переданные данные шифруются при использовании SSL, что означает, что их может понять только конкретный клиент, который сделал этот запрос, и сервер, который отвечает на запрос, между ними нет шансов понять данные любой третьей стороной.

Другое дело, что access tokenони основаны на времени, поэтому у них есть жизнь в течение определенного периода, поэтому у них нет шансов на использование в будущем.

Ashwin
источник
-1

Также нужно учитывать кеширование.

Ваш бэкэнд мог видеть несколько обращений к одному и тому же URL с одинаковыми параметрами GET / POST, но с другим токеном доступа к заголовку и учитывать, что содержимое может быть кэшировано и доставлено в любое тело

Томас Деко
источник