Как зашифровать хранимую процедуру - PullRequest
1 голос
/ 10 февраля 2010

Мы можем предварительно скомпилировать наши (ASP.NET) веб-сайты и публиковать только код IL, чтобы исходный код был недоступен для клиента.

Но как нам это сделать для хранимых процедур, написанных на SQL Server. Я имею в виду, что когда мы даем клиенту БД, он может видеть все мои хранимые процедуры и может изменять их так же ... Как я могу защитить его.

Спасибо

Раджа

Ответы [ 3 ]

2 голосов
/ 10 февраля 2010

Старая проблема. Вот несколько ответов, которые я нашел здесь и там:

  • Шифрование хранимых процедур. Как имеет уже указывалось дважды, это на самом деле не работает, так как 5 минут Погуглив найдет несколько хаков.

  • Запишите хранимые процедуры как CLR процедуры. Тяжелее взломать, чем "обычные" хранимые процедуры, вероятно гораздо больше усилий для производства и поддержка.

  • Отправлять все запросы динамически из Ваш скомпилированный код IL. я понимаю это может быть сделано достаточно безопасно от Атака SQL-инъекции, но сделай чертовски уверен, прежде чем отпустить. (Может быть, используйте Linq для этого?)

  • Преобразование всех имен объектов базы данных (таблицы, столбцы, процедуры) для гиды или случайная тарабарщина. Они могли прочитайте это, но это не сильно поможет.

  • Я не совсем разбираюсь в шифровании в SQL 2005 и выше. Я действительно не думаю вы можете использовать его на объектах на основе кода (процедуры, функции и т. Д.), Но, может быть, вы можете?

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

1 голос
/ 10 февраля 2010

использовать с шифрованием

пример

CREATE PROCEDURE prTest
WITH ENCRYPTION
AS
SELECT GETDATE()

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

0 голосов
/ 10 февраля 2010
CREATE PROCEDURE ... WITH ENCRYPTION

Однако обратите внимание, что это шифрование действительно больше похоже на запутывание, и есть несколько способов обойти его, если определен ваш поставщик, включая подключение к ЦАП, некоторые продукты сторонних производителей (включая RedGate SQL Prompt) и примеры кода, которые вы можете легко подготовить. найти в Интернете.

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