2010-10-20 5 views
1

У меня есть приложение winform C#, которое использует SQL 2005 Express. Приложение создает математику и читает викторины и продается родителям детей школьного возраста. Родители покупают и загружают файлы SQL, содержащие викторины с моего сайта, и устанавливают их в приложении (которое установлено на компьютере своего ребенка).Как защитить данные в базе данных SQL Server Express Winform?

У меня есть две проблемы безопасности SQL:

(1) Некоторые дети могут не захотеть викторины появляться на своем компьютере, так что они могут попытаться (а) удалить базу данных SQL или (б) отключить приложение путем изменения значений в базе данных.

Мне кажется, что любой, у кого есть SQL Server Management Studio Express, может легко изменить содержимое базы данных.

Таким образом, что можно сделать для предотвращения этого (кроме рекомендации родителям, чтобы дети не позволяли своим детям использовать учетную запись администратора)?

(2) Мой единственный доход будет продавать викторины, поэтому я хочу защитить эти данные от копирования и совместного использования. Как я могу это сделать (а), что файлы необходимо загрузить с моего сервера на компьютер ребенка, а затем установить и (б), а затем после установки они просто находятся на компьютере ребенка.

Мне кажется, что любой, у кого есть мастер SQL Database Publishing Wizard, может легко скопировать содержимое базы данных.

Возможно ли разрешить моему приложению доступ к базе данных SQL? Можно ли ограничить доступ всех остальных к нему (даже люди, использующие учетные записи администратора Windows)?

В настоящее время сценарий установки для моего приложения создает новый экземпляр сервера SQL 2005 Express только для моего приложения и использует проверку подлинности Windows.

Я прочитал несколько сообщений безопасности SQL здесь, в Stackoverflow и в других местах, но я пока не могу это понять.

ответ

1

С точки зрения хакерских хакеров родители прикручены. Это связано с тем, что их дети имеют физический доступ к компьютеру. Теоретически они могут атаковать его каждый путь.

Теперь давайте перейдем к тому, что более вероятно.

Вы определили, что отсутствие доступа администраторам для детей имеет большое значение. Но если вы говорите, что вне досягаемости большинства семейств, то это SQL Management Studio. Вы можете сделать ставку, что дети не собираются это делать и устанавливать.

Однако, в конце концов, вам, вероятно, будет лучше с какой-то хорошей старомодной обфускацией. Вместо того, чтобы использовать что-то вроде SQL Management Studio, где есть свободно доступные инструменты для изменения и предотвращения появления этих викторин или каких-либо других атак, вы создаете свои собственные форматы файлов и надеетесь, что большинство детей откажется, когда они увидят двоичные gobbledy Гук.

Если они собираются отказаться от этого, многие могут отказаться от SQL Express. Тем не менее, дети очень находчивы, а некоторые могут быть готовы следовать пошаговым инструкциям, которые они искали в Google, чтобы победить ваше программное обеспечение.

Похоже, вы развертываете эти викторины на экземплярах SQL Express, которые находятся на компьютерах, которые не находятся под вашим контролем.They aren't your machines anymore.

Я не хочу говорить «вы не можете делать то, что вы просите», но вы спрашиваете, как запретить кому-либо использовать инструменты администратора, чтобы победить ваше программное обеспечение. Я думаю, что мой ответ «вы не можете». Вы должны пересмотреть свой дизайн или просто пойти с идеей, что большинство детей не зайдет так далеко.

+0

Спасибо, Крис, вы и Джон Фли делаете ту же самую точку, которая заключается в том, что я не могу защитить свою базу данных после ее развертывания. – Frederick

0

Вы можете использовать шифрование данных опроса.

Encrypt and decrypt a string

Брешь в это приложение будет иметь ключ шифрования/дешифрования в своем коде, так что кто-то еще может получить к нему доступ через инструмент перекомпиляции или что-то вроде отражателя.

Настоящий ответ заключается в том, что защита вашего приложения для всего почти невозможна. Подумайте только об огромных компаниях и их методах защиты, Microsoft, Adobe и т. Д. ... у них все проблемы с пиратством.

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

До тех пор я не стал бы слишком беспокоиться об этом, и просто примите несколько небольших мер предосторожности, которые не слишком мешают вашему рабочему процессу.

+0

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