1

削除アクセスを使用して、クライアントのサーバーでクエリを実行したいと思います。私がこのようなクエリを実行すると、Update abc set col1=12 where id = 2彼らは私たちが何をしているかを理解します。だから私はこのような暗号化と復号化のためのいくつかの方法が欲しいです:

私たちのサーバーでは、次のようにクエリを暗号化します。

encrypt(Update abc set col1=12 where id = 2)

したがって、次のような出力が得られます。

0x0100CF465B7B12625EF019E157120D58DD46569AC7BF4118455D12625EF019E157120D58DD46569AC7BF4118455D

そして、この暗号化されたクエリをクライアントのマシンで次のように実行します。

decrypt(0x0100CF465B7B12625EF019E157120D58DD46569AC7BF4118455D12625EF019E157120D58DD46569AC7BF4118455D)

そのため、クライアントは私たちが何を実行したかを理解できません。

4

3 に答える 3

1

このような単純な復号化関数を作成できます。

create proc exec_decrypt(@sql_str varbinary(8000))
as
begin
declare @qry varchar(8000);
select @qry=cast(@sql_str as varchar(8000));
exec(@qry);
end

これは、varbinary文字列を受け入れ、varcharに変換してから実行します。

以下の衛星を使用して、暗号化されたクエリを生成できます

select CAST('UPDATE users set name =''alex''' as varbinary(8000))

次に、上記のクエリの出力をプロシージャのパラメータとして渡すことにより、クライアントの場所でprocexec_decryptを実行します。

Ex:  exec_decrypt 0x55504441544520757365727320736574206E616D65203D27616C657827

これがうまくいくことを願っています。クライアントはprocexec_decryptに対する権限を持ってはならないことに注意してください。

于 2012-07-04T09:21:32.120 に答える