2014-01-03 12 views
1

Я определил следующий параметр кэша в моем веб-приложении asp.net mvc, чтобы кэшировать данные метода действия на клиенте: -Будет кэшировать данные моего приложения на клиенте с помощью OutputCacheLocation.Client, подвергать данные неавторизованным пользователям

[Authorize] 
[OutputCache(CacheProfile = "VShort", Location = OutputCacheLocation.Client, VaryByHeader = "X-Requested-With")] 
public ActionResult Index(string searchTerm = "", int page = 1)public ActionResult Index(string searchTerm = "", int page = 1) 

Но у меня есть следующий вопрос, касающийся проблем безопасности кэширования данных на клиенте:

  1. Если авторизованный пользователь доступ к системе из публичного компьютера, и aSP.NET MVC веб-приложения использует аутентификацию Windows для аутентификации пользователей. Таким образом, внешние пользователи, которые обращаются к одному и тому же общедоступному компьютеру, могут видеть кэшированные данные. или кэшированные данные могут быть доступны только и просмотрены аутентифицированными и авторизованными пользователями?

  2. Если кеширование данных на клиенте будет предоставлять данные внешним пользователям, есть ли способ сделать кешированные данные клиентов более безопасными? Благодаря

ответ

1

Если выполняется приложение от общего рабочего стола, как ожидается, чем кэширование на стороне клиента действительно может выставить данные.

В Windows «кеш на клиенте» предназначен для пользователей Windows. Но во многих случаях «пользователь Windows» и «пользователь веб-сайта» - это две разные концепции. Даже если вы используете проверку подлинности Windows, часто можно войти на веб-сайт в качестве другого пользователя Windows, который в настоящее время входит в систему.

Многие сайты также используют аутентификацию без проверки подлинности (используя полностью собственные или сторонние системы идентификации, такие как OAuth для Facebook/Google/Microsoft) - в этом случае между браузерами учетных записей нет связей (кэш, привязанный к этому счет) и «учетная запись сайта». Вы часто видите машины в режиме «киоска» в магазинах/офисах общедоступных машин, которые позволяют заказывать/проверять почту/Facebook и т. Д. Без входа в/из Windows.

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

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

+0

спасибо за ответ, поэтому кеширование данных на стороне клиента с помощью OutputCacheLocation.Client может предоставить данные внешним пользователям, и в этом случае лучше не использовать его, так как в моем случае эти данные считаются закрытыми. .. –