2010-02-10 5 views
1

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

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

Благодаря

Раджа

+0

Что именно вы подразумеваете под «дать продавцу»? Является ли это провайдером или запросом поддержки, где поставщику необходимо создать вашу среду? – Marc

+0

Спасибо за указание на это. Я действительно имел в виду клиента –

ответ

2

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

  • Зашифрованные хранимые процедуры. Как и , уже было указано дважды, это не работает, так как 5 минут В Google будет обнаружено несколько хаков.

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

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

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

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

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

+0

+1, не может быть сделано, если у кого-то есть системный администратор или физический доступ. Ваш динамический запрос: профайлер покажет вам, что там происходит ... – gbn

+0

Давным-давно, профайлер не запустил какой-либо представленный запрос, содержащий слово «пароль»? Увы, похоже, 2005+ больше этого не делает. –

1

использование С ENCRYPTION

пример

CREATE PROCEDURE prTest 
WITH ENCRYPTION 
AS 
SELECT GETDATE() 

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

0
CREATE PROCEDURE ... WITH ENCRYPTION 

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

Смежные вопросы