質問

SQL 2008ストアドプロシージャコードを誰の目からも保護することは可能ですか?たぶん、何らかの暗号化、またはdllのような組み立てですか?

役に立ちましたか?

解決

はい、暗号化された形式でデータベースに保存できますが、保存する場合は、元のソースコードが安全にどこかに保存されていることを確認してください...

CREATE PROCEDURE dbo.foo 
WITH ENCRYPTION 
AS 
BEGIN 
    SELECT 'foo' 
END

残念ながら、このメカニズムを無効にする方法は少なくとも2つあります。 1つは、ストアドプロシージャの実行中にSQLプロファイラを実行することです。これにより、ストアドプロシージャの実行内容に応じて、プロシージャ自体のテキストが明らかになることがあります(たとえば、GOバッチ、動的SQLなどがある場合)。最初のインストールに失敗した場合、ユーザーはストアドプロシージャを削除するか、データベースを削除し、プロファイラートレースを開始して、再作成を要求できます(この場合、CREATE PROCEDUREステートメントをキャプチャします)。プロファイラーがコードにsp_passwordをコメントとして埋め込むことで、スヌーパーにテキストが表示されるのを防ぐことができます。

CREATE PROCEDURE dbo.foo 
WITH ENCRYPTION 
AS 
BEGIN 
    SELECT 'foo' 
    -- comment: sp_password 
END

MSDN Create Procedure ドキュメントをご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top