Защита учетной записи базы данных SQL для сайта ASP.Net - PullRequest
3 голосов
/ 18 сентября 2009

Я пытаюсь защитить базу данных MSSQL для нашего веб-сайта .Net.

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

Доступ к каждой из этих схем будет осуществляться с использованием разных учетных записей пользователей SQL, и каждому из них потребуется собственный DBML, поскольку им потребуются отдельные строки подключения (мы используем LINQtoSQL).

Мой коллега утверждает, что, поскольку у нас есть обе эти учетные записи в нашем web.config, в любом случае, этот дизайн не более безопасен, чем просто использование одной учетной записи SQL-сервера, которая имеет доступ ко всей базе данных. Нет необходимости разделять схемы, поскольку мы не используем аутентификацию на основе Windows.

Итак, мой вопрос: кто прав? Будет ли разделение базы данных на схемы более безопасным? Или это пустая трата времени, поскольку обе учетные записи SQL будут расположены в файле web.config (даже если они зашифрованы)?

Ответы [ 3 ]

1 голос
/ 18 сентября 2009

Ваш коллега неправ на одном уровне и прямо на другом.

Разбиение базы данных на схемы, как вы предлагаете, поможет злоумышленникам, которые могут найти такие вещи, как недостатки SQL-инъекций. Если вы усердно настраиваете свои разрешения, то это ...

Однако такое разбиение схемы не дает дополнительных преимуществ, если кому-то удастся проникнуть в настоящую файловую систему и может перезаписать файл web.config.

Вам нужно подумать обо всех возможных слоях.

Если вы еще этого не сделали, проверьте этот замечательный ресурс:

http://msdn.microsoft.com/en-us/library/ms998372.aspx

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

Наконец, не забудьте зашифровать ваш web.config ...

1 голос
/ 18 сентября 2009

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

Наличие обеих строк подключения в web.config означает, что если сам пул ASP скомпрометирован, то злоумышленник может использовать обе строки.

Я предполагаю, что строки зашифрованы тем не менее, см. Шифрование информации о конфигурации с использованием защищенной конфигурации . Таким образом, по крайней мере, информация о соединении не будет потеряна, если утечка web.config.

0 голосов
/ 18 сентября 2009

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

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