Предотвратить неправильное использование обработчика ASP.net
Когда клиент регистрируется на сайте, мы хотим сообщить ему, доступно ли имя пользователя или адрес электронной почты для использования. У нас есть httphandler, который служит для подачи сценария jquery, который показывает клиенту, доступно ли его желаемое имя пользователя или адрес электронной почты.
Вопрос в том, что при просмотре запроса в фиддлере сервис может быть отчетливо виден вызываемым. Он показывает /emlhandler.asmx?name=xxxxxxxxxxx@yyy.com
От обработчика возвращается простой 0 или 1, чтобы указать, доступно ли имя / адрес.
Меня беспокоит то, что это похоже на серьезную проблему безопасности, которую неопытному человеку было бы очень легко использовать для обнаружения всех пользователей на сайте.
Итак, друзья, как вы защищаете информацию о своем сайте и все же позволяете обратному вызову ajax обеспечить отличное взаимодействие с пользователем?
Благодарю. вереск
2 ответа
Вы немного параноидальны здесь. Каждый сайт, который разрешает регистрацию пользователя, должен делать что-то подобное. Одна вещь, которую вы можете разумно сделать, это добавить небольшую задержку (возможно, 2 или 3 секунды) к обработке обработчика, чтобы уменьшить вероятность или легкость атаки методом грубой силы. Честно говоря, я не думаю, что кто-то будет беспокоиться.
Другой вариант - просто игнорировать повторяющиеся электронные письма и отправлять подтверждающее электронное письмо до того, как регистрация пользователя действительно станет активной. Если новый пользователь пытается использовать существующую электронную почту, первоначальный владелец электронной почты получает подтверждение и может отменить или проигнорировать его. Но я не рекомендую это.
Я бы сказал, что подавляющее большинство сайтов, которые я использовал, сразу же скажут: "Этот адрес электронной почты уже зарегистрирован... Вы забыли свой пароль?" Знание того, что адрес электронной почты уже используется на данном сайте, само по себе не является нарушением безопасности.
Одним из возможных решений будет включение только запросов POST для этого метода.
А поскольку вы не можете вызывать службы из JavaScript из другого домена (XSS - межсайтовый скриптинг) без вашей авторизации, вы будете защищены.
Однако этот метод не позволил бы злонамеренным пользователям вызывать ваш веб-сервис для обнаружения имен пользователей, но не помешал бы пользователю автоматизировать процесс для имитации ввода данных пользователем в текстовое поле, чтобы вызвать вызов службы, в этом случае, возможно, Вы могли бы разрешить только количество запросов на пользователя за X раз.
Вы можете отслеживать количество попыток, используя Session
объект из вашего веб-сервиса
Другим подходом будет добавление повторной капчи на ваш сайт, однако это уменьшит уровень отзывчивости, если вы использовали, чтобы позволить вашим пользователям захватывать имя пользователя, и как только они напишут, вы позвоните в ваш сервис. Реализация потребует от ваших пользователей написания автоматически сгенерированной капчи для отправки ваших данных