Наименее навязчивый способ защиты веб-службы? - PullRequest
0 голосов
/ 03 февраля 2009

Я поддерживаю общедоступный веб-сайт (авторизация не требуется), который использует веб-службы через https для выполнения различных операций. Большинство вызовов веб-сервисов вызываются из JavaScript.

В последнее время мне пришло в голову, что злоумышленник может, если он / она решит, напрямую вызвать веб-сервисы, пытаясь нанести ущерб системе.

На самом деле, они могут нанести не так много вреда, но на практике эти вещи трудно предсказать.

Принимая во внимание, что вызовы веб-службы будут отображаться в коде javascript (который доступен для клиента), какой наилучший подход я мог бы использовать для предотвращения несанкционированного и / или злонамеренного доступа к веб-службам.

К сожалению, я не могу просто ограничить доступ по IP, поскольку существуют клиентские приложения на основе форм Windows, которые также взаимодействуют с веб-сервисами.

Использование проверки подлинности Windows может быть затруднено, так как эти клиентские приложения могут запускаться из любой точки мира, и пользователи не являются частью какой-либо конкретной группы AD - или даже домена в этом отношении.

Буду признателен за любые предложения, принимая во внимание два разных класса доступа и разоблачение кода JavaScript.

Ответы [ 2 ]

3 голосов
/ 03 февраля 2009

Все, что вызвано JavaScript, может быть легко имитировано злоумышленником, который имеет право использовать этот JavaScript. Я бы предложил изменить страницу, чтобы использовать более серверное решение. Оставьте AJAX для вещей, которые не могут быть легко использованы.

Предотвращение неавторизованного пользователя НАМНОГО проще, чем поддержка полного публичного доступа. Если вы удалите истекающее время руководство по cookie-файлам пользователя, привязанным к отдельному пользователю, которые отправляются в качестве одного из аргументов веб-службе, у вас есть дополнительный, как правило, трудно разрушаемый слой для приложения. 1003 *

Тем не менее, любой, у кого есть доступ для выполнения javascript, не должен испытывать проблем с его объединением. Тот, кто не имеет доступа к javascript, вероятно, не сможет легко получить доступ к веб-службе.

2 голосов
/ 03 февраля 2009

Это займет немного времени, но если ваша страница также ASP.net, вы можете настроить общий сеанс, включить атрибут EnableSession на вашем веб-сервисе и использовать данные сеанса для защиты сеанса. Обзор можно найти здесь: http://blogs.lessthandot.com/index.php/WebDev/ServerProgramming/ASPNET/sharing-asp-net-session-state-between-we

Это потребует другой "версии" службы для ваших приложений Windows.

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