Безопасность и междоменный домен с ASP.NET MVC JsonResult и jQuery - PullRequest
1 голос
/ 22 января 2009

Я использую asp.net MVC для разработки приложения, которое будет взаимодействовать с Ajax. У меня есть методы JsonResult в контроллере, возвращающие сериализованные данные JSON. Так, например, когда делается запрос к http://somesite.com/findwidgets/ mvc сериализует данные как json и отправляет их обратно.

Я использую jQuery на стороне клиента для обработки запросов ajax и для манипулирования результатами. У меня нет проблем с получением данных, но я обнаружил, что могу отправлять запросы на номер http://somesite.com/findwidgets/ из адресной строки браузера, и он возвращает данные json в виде загрузки.

Кроме того, как я могу гарантировать, что другие не смогут просто отправлять запросы и получать данные, используя http://somesite.com/findwidgets/?

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

Спасибо

Ответы [ 3 ]

2 голосов
/ 22 января 2009

Кроме того, как я могу гарантировать, что другие не может просто делать запросы и захватывать использование данных http://somesite.com/findwidgets/?

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

я обнаружил, что могу делать запросы до http://somesite.com/findwidgets/ из адресной строки браузера и он вернет данные JSON как скачать.

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

0 голосов
/ 17 февраля 2009

Также вы можете использовать свойство контроллера IsAjaxRequest () (если оно false - например, вернуть нулевой результат). Во избежание публикации / получения данных с других сайтов вы можете проверить свойство Request.UrlReferrer (но браузер может лгать об этом).

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

рассмотрите возможность проверки хоста запроса и ограничьте его текущим доменом.

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