2012-05-17 2 views
1

У меня есть защищенный веб-сайт, который требует от пользователя аутентификации и хотел бы вернуть конфиденциальные данные клиенту из моего API через JSON-P, чтобы я мог обойти междоменную зону ajax вопросы. Я владею как клиентом, так и сервером, поэтому меня не интересует безопасность с точки зрения клиента (т. Е. Чтение вредоносных js с сервера).Использование JSON-P с конфиденциальной информацией

Я изучал способы обеспечения безопасности JSON-P, чтобы предотвратить подделку запросов на межсайтовый запрос, но не смог четко определить, является ли проверка Referer надежным методом защиты данных. Как я понимаю, заголовок Referer не может быть подделан в этой ситуации, потому что вызовы будут из javascript, а заголовки не могут быть изменены. Это правильное предположение?

Я бы хотел, чтобы некоторые четкие примеры того, почему или почему не проверять, что Referer не будет работать, не будет защищать JSON-P.

Спасибо!

EDIT:

Просто чтобы прояснить - JSON-P обеспечивается с помощью Spring Security, так что это не будет обеспечено только заголовок Referer. В основном я беспокоюсь о захвате сеанса ...

+0

Вы должны заглянуть в OAuth, который в основном принимает идею проверки переводчика на один шаг дальше, используя подписанный токен. – user123444555621

+0

Я рассмотрел OAuth, который, вероятно, позволит нам использовать JSON (вместо «с дополнением»). В настоящее время мы используем CAS, и я бы хотел использовать это, но до сих пор это был медведь, пытающийся заставить его работать с вызовами AJAX, чтобы получить простой JSON. – acvcu

ответ

1

URL-адреса Jsonp можно вызвать с помощью обычного кода поворота. Http-ссылка может быть легко подделана.

+0

Да, но если вы вызываете JSON-P из обычного клиента, вам сначала нужно пройти аутентификацию, поэтому я не думаю, что завиток будет работать. Единственный способ получить данные, которые не должны иметь доступ, заключался бы в захвате существующего сеанса, а затем подделке референта, который, как я полагаю, будет через Javascript. – acvcu

+0

@acvcu Означает ли это, что URL-адрес содержит какую-либо информацию о сеансе при входе в систему? – user123444555621

+0

Нет, сам URL не имеет никакой информации о сеансе при входе в систему. Он использует cookie JSESSIONID. – acvcu

1

Я бы хотел, чтобы некоторые четкие примеры того, почему или почему бы не проверить, что Referer не будет работать, чтобы защитить JSON-P.

Referer не гарантированно будет отправлено, так:

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

  • Если вы позволяете ему отсутствовать, чтобы обойти это, вы открываете себя для атаки не только для этих пользователей, но и для всех, где злоумышленник может побудить Referer не отправлять (в частности, с HTTPS-страниц;

  • также, чтобы правильно вести себя с прокси вы должны no-cache все ваши ответы (или Vary: Referer, но это не будет работать правильно в IE)

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

Смежные вопросы