Является ли веб-браузер угрозой безопасности для моего приложения Delphi REST? - PullRequest
0 голосов
/ 22 ноября 2018

Я создал REST-приложение в Delphi с использованием промежуточного программного обеспечения kbmMW.Он работает действительно отлично, быстро, эффективно и т. Д. Но в тестировании я использовал как клиент Delphi, который более точно имитирует его использование в работе (клиенты iOS, Android, Windows Tablet), так и несколько различных веб-браузеров сРучная запись REST uri.

Формат ответа REST по большей части - JSON, но может быть любым, каким я хочу.Один из кодированных мной вызовов REST возвращает токен сеанса.

Для получения токена сеанса необходимо запросить ресурс по https;когда сервер обнаруживает, что вы еще не аутентифицировались, он возвращает 401 неавторизованным, который сообщает браузеру принудительный диалог аутентификации, запрашивая имя пользователя и пароль, или запускает инди-клиент для предоставления предварительно закодированных учетных данных.

Я установил внутренний http-компонент Indy в оболочке kbmMW для использования базовой аутентификации (конечно, только внутри ssl);после аутентификации сервер генерирует токен на основе сеанса и возвращает токен клиенту.

Когда я проверяю это на своем клиенте Delphi, который использует клиент TIdHTTP Indy, и я устанавливаю его для использования базовой аутентификации, установитеимя пользователя и пароль, а также инициировать запрос, компоненты Indy сохраняют токен сеанса и, по-видимому, повторно используют его.Я могу вызвать функцию на сервере, который возвращает мой токен сеанса, и этот токен остается неизменным на протяжении всего времени сеанса.

Если я аутентифицируюсь с помощью браузера и диалога un / pw, то вызываю функциючтобы вернуть токен сеанса, я должен пройти аутентификацию один раз, используя un / pw, но каждый последующий запрос на получение токена сеанса каждый раз возвращает новый токен.

Мой вопрос: означает ли это, что веб-браузерпредставляет потенциальную угрозу безопасности для моего сервера?Что определяет, как долго длится сеанс, когда запрашивающий клиент - TIdHTTP, а когда запрашивающий клиент - веб-браузер (я тестировал IE, Chrome, Firefox, Opera - все те же ответы)?

Почему браузер получает разные токены при каждом запросе, в то время как инди-клиент снова и снова использует один и тот же токен до истечения срока действия?

Означает ли это, что потенциальный хакер может скомпрометировать мой сервериспользовать вектор атаки DDOS и создавать сеансы на моем сервере, пока он не исчерпает память?

Я думал, что http-сервер Indy будет различать запрашивающий объект на основе переменных формы, таких как Referer, IP-адрес, тип браузера и т. д. Какможет ли браузер, снова и снова выполняя один и тот же запрос с одним и тем же IP-адресом, Referer и т. д., каждый раз инициировать новый вход в систему на стороне сервера?

Кэширует ли браузер имя пользователя и пароль и игнорирует токен?

Событие аутентификации на стороне сервера запускается только один раз с запросом клиента indy, но запускается при каждом запросе веб-браузера, каждый раз повторно отправляя комбо un / pw и игнорируя токен.

Я установил ETag в заголовке ответа на токен, чтобы браузер не держалвходить и создавать новые сессии?

Помощь!

...