Лучший способ обезопасить просмотрщик изображений Silverlight в веб-приложении? - PullRequest
1 голос
/ 29 июля 2009

У меня есть веб-приложение, которое защищено и хранит подробную информацию о пользователе в объекте сеанса. Я создаю элемент управления Silverlight для просмотра изображений, которые хранятся в базе данных, и доступ к этим изображениям должен быть защищен. Я не пытаюсь предотвратить копирование или что-то подобное, но мне нужно убедиться, что пользователь, имеющий доступ к изображению, действительно имеет доступ к просмотру изображения, что может быть достигнуто путем проверки пользовательских данных в сеансе.

Итак, мои мысли заключались в следующем:

  1. Веб-приложение, содержащее элемент управления Silverlight.
  2. Файл Ashx для обработки изображения из базы данных.
  3. Файл ashx при доступе через элемент управления silverlight проверит сеанс, чтобы убедиться, что у него есть доступ к этому изображению. (Я предполагаю, что элемент управления silverlight и веб-приложение совместно используют один и тот же сеанс, это может быть неверным предположением.)

Эта настройка звучит правильно или есть другие способы приблизиться к этому? Я впервые включу элемент управления Silverlight в веб-приложение.

Ответы [ 2 ]

0 голосов
/ 31 июля 2009

Элемент управления Silverlight живет в контексте браузера. Я думаю, что если вы управляете вызовом silverlight вашей страницей ashx, страница ashx будет выполняться в том же сеансе, что и ваше веб-приложение.

Когда пользователь входит в ваше веб-приложение, сохраните что-либо в сеансе, чтобы указать, что они аутентифицированы, и проверьте это на странице Ashx.

Это простой сценарий для макета и тестирования.

0 голосов
/ 31 июля 2009

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

Рассматривали ли вы оставить значение cookie для клиента? Возможно, такой сценарий:

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

  • сбросить соленое / хэшированное значение в файле cookie на основе браузера / вызывающего абонента и запрашиваемого изображения.

  • Предположим, что изображение someImage.png, а IP-адрес клиента - 10.10.10.10. Используйте некоторую соль, такую ​​как идентификатор БД изображения, чтобы обеспечить уникальность между изображениями. Давайте представим, что у него есть идентификатор 509.

  • Выполните строку «509_someImage.png_10.10.10.10» с помощью метода одностороннего шифрования (например, AES), используя надежный ключ, который вы держите в секрете на своей стороне. Давайте представим, что ваш результат - «biglongcrazyrandomstring123», но он, очевидно, будет намного длиннее.

  • в строке запроса для вызова на страницу image.ashx, принудительно включите это значение (т. Е. image.ashx?img=someImage.png&key=biglongcrazyrandomstring123).

  • На стороне сервера вы заходите в свою БД и извлекаете идентификатор для someImage.png. Запустите IP-адрес запрашивающей стороны, имя файла изображения и идентификатор базы данных через один и тот же алгоритм шифрования. Сравните значение TH со значением, отправленным в строке запроса. Если они совпадают, то вы знаете, что вы помещаете строку в их cookie. Скорее, вы знаете разумно, что они не могли бы догадаться.

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

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