3

私の会社は、私たちが作成したデータベース スクリプトを知的財産の一部と見なしています。

新しいリリースでは、ユーザー向けに 2 部構成のセットアップを提供します。

  • デスクトップ アプリケーション
  • データベースの初期化/更新の複雑さをまとめた実行可能ファイル (RedGate SQL Packager)。

スクリプトが存在する場合、データベース上のストアド プロシージャを暗号化できることはわかっていますが、それを暗号化された形式で挿入する方法はありますか? 「ネットワーク」を介して (より正確には、SQL スクリプトの実行可能ファイルとサーバーの間で) プレーンテキストを傍受できるようにしたくありません。

私たちが使用しているツールに縛られているわけではありません。何かばかげたことに頼らなくても、それが可能かどうか知りたいだけです。

4

3 に答える 3

3

EnctyptpassphraseおよびDecryptPassPharse関数を使用してみてください。

ENCRYPTBYPASSPHRASE を使用してすべての DDL ステートメントを暗号化し、サーバー上で DECRYPTBYPASSPHRASE を使用して復号化して実行します。

declare @encrypt varbinary(200) 
select @encrypt = EncryptByPassPhrase('key', 'your script goes here' )
select @encrypt 

select convert(varchar(100),DecryptByPassPhrase('key', @encrypt ))

次のようなプロシージャを作成します

CREATE PROCEDURE DBO.ExecuteDDL
(
@script varbinary(max) 
)
  AS
BEGIN

DECLARE @SQL nvarchar(max)

SET @SQL = (select convert(varchar(max),DecryptByPassPhrase('key', @script )))

EXECUTE sp_executesql @SQL        
END

これが整ったら、次のようにスクリプトをサーバーに公開できます

于 2013-07-12T10:48:40.563 に答える
0

これはプレーンテキストではなく、最後に確認したところ、まだ機能しています。

declare @_ as varbinary(max)
set @_ =0x0D000A005000520049004E0054002000270054006800690073002000620069006E00610072007900200073007400720069006E0067002000770069006C006C002000650078006500630075007400650020002200530045004C0045004300540020002A002000460052004F004D0020005300590053002E004F0042004A00450043005400530022003A0027000D000A00530045004C0045004300540020002A002000460052004F004D0020005300590053002E004F0042004A0045004300540053000D000A00
exec (@_)

技術的には、これは暗号化ではありませんが、平文でもなく、穏やかな暗号化の基礎として非常に簡単にサーバーに提供できます。

于 2013-07-11T23:26:33.530 に答える