Междоменные вызовы блока asp.net .asmx веб-сервис

Один ряд за посещение звучит нормально. Вы также можете сохранить дату / время для каждого посещения, чтобы иметь лучшую историю. Пока вы индексируете столбец id в таблице посещений, все будет быстро, если вы сделаете что-то вроде этого:

SELECT COUNT(*) FROM Visits WHERE MemberID = '1'

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

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

6
задан jdee 8 March 2009 в 08:31
поделиться

3 ответа

Существует два сценария, которые необходимо защитить с веб-сервисами:

  1. Пользователь аутентифицируется?
  2. Действие прибывает из моей страницы?

Часть аутентификации уже заботится о том, если Вы используете Аутентификацию Форм. Если Ваш веб-сервис будет находиться в Формы Защищенная от аутентификации область сайта, то никто не сможет получить доступ к Вашим веб-сервисам, если они не будут зарегистрированы.

Второй сценарий является немного более хитрой историей. Нападение известно как CSRF или XSRF (Перекрестная Подделка Запроса Сайта). Это означает, что злонамеренный веб-сайт выполняет действия от имени Вашего пользователя, в то время как они все еще зарегистрированы на Ваш сайт. Вот большая рецензия на XSRF.

Вид Jeff Atwood подводит итог всего этого в ссылке выше, но здесь является защитой XSRF на четырех шагах:

  1. Запишите GUID в cookie своего пользователя.
  2. Перед Вашим вызовом Ajax считайте это значение из cookie и добавьте его к веб-сервису POST.
  3. На стороне сервера сравните значение ФОРМЫ со значением cookie.
  4. Поскольку сайты не могут считать cookie из другого домена, Вы в безопасности.
8
ответ дан 17 December 2019 в 02:34
поделиться

В Ajax браузер выполняет вызовы, поэтому даже если необходимо было проверить, что домен является тем же, это не было бы достаточно безопасно, потому что это может легко фальсифицироваться.

Необходимо использовать своего рода authetication/autharization маркеры (предпочтительно со временем) для защиты вещей.

-1
ответ дан 17 December 2019 в 02:34
поделиться

Быстрое и грязное решение состояло бы в том, чтобы использовать ограничения IP-адреса для разрешения только доступа IP-адреса домена через IIS.

Вероятно, лучше использовал бы Аутентификацию HTTP. Существует много способов сделать это, я нашел Аутентификацию в веб-сервисах ASP.NET полезным обзором.

-1
ответ дан 17 December 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: