0

私は人事ソリューションを持っています。最近、データベースの給与に暗号化を適用しました。暗号化と復号化の 2 つの C# 関数を作成しました。

私たちがよく使用するSQLコマンドとプロシージャのSQL SUM、MAX、MIN関数に関する問題に直面しました。

解決策として、データベースで使用する 2 つの sql clr 関数を作成しましたが、問題は、これらの 2 つの clr 関数が、データベースにアクセスできるすべてのボディにアクセス可能であり、これらの関数を使用できることです。

これらの 2 つの clr 関数をさらに複雑にしたいので、呼び出しがアプリケーションからのものでない限り、この関数は機能しないはずだと考えています。接続文字列のアプリケーション名に何かを渡し、clr関数内をチェックすることを考えていました。

事態はさらに複雑になります。唯一の違反は、誰かがアプリケーションを作成して同じ接続文字列を渡した場合です。

何か案が?

4

3 に答える 3

0

私の意見では、これはデータベース システムのセキュリティ管理の仕事です。

  1. アプリケーションのデータベース ユーザーを作成します ( saを使用しないでください!)。
  2. そのユーザーに CLR 関数を実行する権限を付与する
  3. 他のすべてのユーザーにそれらの機能を実行する権利を「付与しない」
于 2013-10-24T07:23:15.950 に答える
0

app_name() を使用して、リクエストがアプリケーションからのものかどうかを確認することもできます

于 2013-10-24T07:25:13.747 に答える