избегать автоматического программного обеспечения для управления веб-сервисами? - PullRequest
1 голос
/ 15 июня 2011

Давайте представим, что я создаю веб-сервис и клиентское приложение, которое вызывает этот веб-сервис.

Есть ли способ запретить другим программам, кроме моего, совершать звонки в веб-службу?

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

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

Как мне этого избежать? Я знаю, что волшебного решения не существует, но, по крайней мере, как я могу создать трудности при написании таких инструментов?

PS: я работаю с платформой Microsoft .Net + SilverLigth, но я чувствую, что этот вопрос шире, чем у техников MS.

[РЕДАКТИРОВАТЬ], чтобы уточнить, я не спрашиваю, как добавить аутентификацию, но как избежать, чтобы пользователь автоматизировал вызов веб-служб. Ничто не мешает пользователю с учетной записью использовать свою учетную запись для автоматизации звонков; Чего я хочу избежать, например, иметь поддельное приложение с реальной аутентификацией, чтобы делать что-то каждые 5 секунд вместо ввода данных пользователем. В игре этого может избежать робот-фермер

Ответы [ 2 ]

0 голосов
/ 15 июня 2011

Вам нужно, чтобы сервер больше знал о состоянии игры.Например, в случае, если вы набросаете, сервер должен знать, есть ли на экране значок с деньгами, по которому пользователь может щелкнуть.При получении запроса на «клик на деньги» он должен проверить, действительно ли деньги на экране.Может быть, достаточно добавить переменную «последний раз нажал на деньги» для каждого пользователя.Но это позволило бы боту «кликнуть на деньги», даже если бы их не было в игре, хотя вы могли бы ограничить частоту.Возможно, вы могли бы пойти с чем-то более надежным.Например, при отображении значка денег на экране, включите в него случайное значение ключа (GUID или что-то подобное), которое вы можете отправить обратно с действительным звонком, чтобы убедиться, что они действительно нажали на значок реальных денег, который фактически отображался нана их экране, в отличие от простого нажатия на значок денег, вы точно знаете, на что они нажимают.Это усложняет написание сценария, так как им придется просматривать содержимое памяти игры, чтобы определить GUID, прикрепленный к значку денег, и отправить его вместе с запросом.Это все еще возможно, хотя гораздо сложнее.

0 голосов
/ 15 июня 2011

Методы веб-службы WCF могут быть украшены требованиями безопасности.Это включает в себя службы RIA для Silverlight (которые в основном являются только службами WCF).

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

Это, конечно, означает, что ваше приложение должно использовать аутентификацию (т. Е. Пользователь должен войти в систему).

Альтернативы - предоставить собственную систему аутентификации (например, с токенами), но для этого все еще требуется приложение (по крайней мере) сначала войти в службу, чтобы получить новый токен.

[Редактировать] В ответ на ваше замечание, обнаружение робота обычно представляет собой запись длительности между вызовами или средней продолжительности и просто запрещение доступа.если пределы превышены.(или, если вы действительно имеете в виду, отмените свою учетную запись или начните возвращать мусорные данные)

...