asp.netでオンラインになっているグランドシステムにログインできる、Javaベースのフォームデスクトップアプリであるミニログインフォームを作成しています。このアプリの目的はPCにインストールすることであり、このexeがインストールされている場所ならどこでも、Webサイトにログインできますが、そうでない場合はログインできません。問題は、SQLサーバーの接続文字列をその中に入れており、従業員がこのアプリを自分のマシンにインストールすることです。JARとクラスを逆コンパイルするツールが利用可能です。クラスをチェックすると、SQLサーバーのパスワードが表示されていました。そして、それは彼らにこのアプリをハッキングする機会を与える可能性があります、これは私たちが彼らに提供したり、SQLサーバーのパスワードを取得する機会を与えたりするのに本当に危険です。助けていただけますか、MD5暗号化パスワードまたは接続文字列で暗号化されたパスワードを与えることができ、SQLサーバーがそれを理解できるような解決策はありますか?
ありがとう
2 に答える
これを処理する方法はいくつかあります。
接続文字列のユーザー情報は、MACアドレスが有効かどうかをテストする手順を1つだけ実行するように制限する必要があります。これにより、露出が制限されます。理想的な方法ではありませんが、それは何かです。
接続文字列はまったく送信しないでください。代わりに、JavaアプリケーションにMACアドレスをWebサービスに送信させます。サービスはデータベースサーバーに接続して認証を決定する必要があります。オプション1よりも優れています。
さらに良い:MACアドレスに依存しないでください。誰かが接続文字列を見るのではないかと心配している場合は、MACアドレスを変更して別のマシンを模倣する可能性があるのは当然です。データベースサーバーに直接接続するのに十分な知識がある人なら誰でも、MACをスプーフィングするために無料で入手できる多くのツールの1つをダウンロードするのに十分な知識があるのは当然のことです。
それはコメントにつながります:私はあなたがこれを間違っていると思います。Javaアプリの全体的な目的が、MACを読み取って、その特定のマシンがアクセスできるかどうかを検証することである場合、セキュリティを理解する上でいくつかの深刻な問題があります。正確には、何をしようとしているのかを評価する必要があると思います。止まる。
データベースサーバーがユーザーと同じActiveDirectoryドメインにある場合は、統合認証を使用できます。接続文字列で指定Integrated Security=SSPI
し、通常のユーザーにデータベースで実行できるようにする権限(たとえば、読み取り専用アクセス)に対応する権限を付与するだけですが、それ以上は許可しません。