Проблема безопасности Silverlight при динамической настройке строки подключения с помощью Entity Framework - PullRequest
1 голос
/ 03 декабря 2010

Я использую Entity Framework и имею ту же модель на многих базах данных и серверах.Я хочу установить строку подключения во время выполнения в зависимости от пользователя, вошедшего в систему.В настоящее время я переопределяю CreateObjectContext() в моем DomainService и устанавливаю строку подключения там.Это прекрасно работает, но я обеспокоен отсутствием безопасности.Например, в моем DomainService у меня есть метод вызова SetConnectionString (), где я передаю строку соединений каждый раз, когда мне нужен новый объект.Это делается из DomainContext (на стороне клиента).Поскольку я использую интегрированную безопасность SQL, я обеспокоен тем, что кто-то может манипулировать строкой соединения в клинике и получить доступ к базе данных, которую он не имеет права использовать.

Какой самый безопасный способ динамической установкистрока подключения для объекта домена, который я хочу использовать во время выполнения?

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

Идеи ??

-Скотт

Ответы [ 2 ]

0 голосов
/ 09 декабря 2010

А как насчет использования структуры членства ASP.NET?Свяжите вход пользователя в систему с помощью вызова входа в систему, чтобы убедиться, что пользователь является авторизованным пользователем.Добавьте атрибут «requireAuthentication» для каждой функции, которую вы хотите защитить в своей доменной службе.

Подробнее об использовании членства ASP.NET с Silverlight: Службы WCF RIA - Аутентификация, Роли,и профили

0 голосов
/ 03 декабря 2010

Надеюсь, мой ответ уместен, поскольку разработчики флеш-памяти сталкиваются с теми же проблемами безопасности ...

Единственный способ сделать это действительно безопасным («это» - соединения с базой данных из кода на стороне клиента) - это дать каждому пользователю доступ только к своим данным в базе данных только для чтения.

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

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

Если нет, эта статья, кажется, имеет отношение к тому, что вы хотите:

http://technet.microsoft.com/en-us/library/cc966395.aspx

...