У меня есть API, который использует OAuth 1.0a для аутентификации приложений, использующих его.Он заменяет старый API, который использовал несколько пользовательских и ложных вызовов, которые устарели.
Хорошо известно, что OAuth 1.0a небезопасен в (на стороне клиента) Javascript, поскольку полагается напотребительская тайна держится в секрете.Что невозможно, так как источник всегда доступен для просмотра.
У нас есть расширения браузера для Chrome, Firefox, IE и Safari, которые должны использовать этот API в будущем.Все эти расширения написаны в основном или полностью на Javascript, и, следовательно, проблема безопасности.
Эти расширения являются собственными и поэтому могут иметь собственные методы аутентификации для получения их токенов доступа.
ЧтоЯ планирую реализовать следующее:
- Пользователь заходит на веб-сайт в браузере.
- Сайт выдает им файл cookie с ключом сеанса.
- Затем наше расширение берет этот файл cookie и передает его в API.
- API проверяет, является ли он действительным и активным сеансом, и выдает расширению свои токены доступа.
- Эти токены действуют в течениемаксимум один час до истечения срока их действия.
- Также будут установлены более низкие ограничения на размер файлов cookie, выпущенных JavaScript.
Он работает при следующих предположениях:
- Если другое приложение имеет доступ к вашим файлам cookie, то они в любом случае могут выдать себя за вас на сайте, поэтому доступ к API ничем не отличается.
- ВсеМетоды аутентификации все еще находятся под нашим контролем.
- Регулярное истечение срока действия токенов означает, что если они скомпрометированы, тогда существует ограниченное время для эксплуатации.
Мой вопрос, является ли это безопаснымспособ ограничения доступа к API?Есть ли лучшие из них?
Несколько замечаний. Я точно знаю, что расширения Chrome могут запрашивать разрешение на доступ к файлам cookie для данного сайта.Я полагаю, что расширения Firefox тоже могут это делать.
Очевидно, что мы не хотим, чтобы наши куки были доступны через javascript на любой странице, в противном случае мы бы подвергались атакам XSS, поэтому они должны быть доступны только через расширения.