- - PR -
特定のクライアントからしかアクセスさせない
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-05-14 13:06
JSP&サーブレットでイントラネットの開発を行っています。様々なユーザーのプロファイルをクライアントPCのクッキーに保存しているため、特定のクライアントからしかアクセスさせないようにしたいと考えています。
今のところセッションIDをクッキーで保存し、同時にセッションIDをDBに保存することで対応することを検討しているのですが、その他いい方法はないでしょうか? この場合いたずら心などでクッキーを偽装されるようなことがありえるとおもわれます。 よい方法をご存知の方いらっしゃいましたらご教授ください。 よろしくお願いします。 | ||||||||||||||||
|
投稿日時: 2005-05-14 14:38
セッションIDをDBに保存するのはあんまり意味がないような気がします。
イントラはDHCP構成でしょうか。 固定IPなら、IPアドレスでブロックする事が手っ取り早いと思います。 WEBである以上どこからでもアクセスできるのがメリットであるため、 端末を固定するのは難しいですね。 他に、アクティベーション用のツールと言う手段もありますね。 クライアントを固定するのであれば、ツールの実行も手間ではないでしょう。 端末名やMACアドレスやユーザ名を元に クライアント固有の情報を作成して認証するのもありではないでしょうか。 | ||||||||||||||||
|
投稿日時: 2005-05-14 16:37
ちょっと意味がよく分かりません。 1台のクライアントのPCのクッキーに複数ユーザのプロファイルを保存? 特定のクライアントっていうのは管理者(基本的に1台)とか言う意味? それとも許可された複数のユーザ? 状況によって対策も変わってくると思います。 ・Webサーバに届く前に、ファイアーウォールなりフィルタリングする。 ・大事な情報は別サーバ(DBサーバ)にして、クライアントから直接アクセスできないようにする。 ・SSLでクライアント認証をする。
さらにその上で、肝心なところではIDとパスワードを求めるようにするとか。 | ||||||||||||||||
|
投稿日時: 2005-05-14 23:47
かつのりさん、aaさん、ご返答ありがとうございます。
はい。DHCP構成です。説明不足でしたが、ユーザーネームで認証を行っているのでクッキーに保存されたユーザー情報(この場合セッションID)とDBに保存されたを比較して同一のクライアントPCからのアクセスかどうかを確認しよういうつもりで書きました。
アクティベーションというとやはり各クライアントにその専用アプリをダウンロードさせなければならないんですよね。また、MACアドレスをサーバーに送信させる方法はどのような方法があるのでしょうか?
説明不足でもうしわけありません。各一人一人にサイトにアクセスするためのユニークなユーザーネームとパスワードを配布しています。このユーザーネームがそのユーザーのPCからしか(最初にログインしたPC)使えないようにしたいと考えています(もちろんパソコン・OSを変えたときのロジックも必要になるかと思いますが・・・)。さらに一台のPCを複数のユーザーが使用することも想定する必要はありますが・・・。クッキーのみを使ってこれを実現するのは不可能なのでしょうか? | ||||||||||||||||
|
投稿日時: 2005-05-15 01:41
MACアドレスやユーザ名・端末名などは、OS固有の情報になりますので、
Javaでは扱えません。VB/C++等で作成する必要があります。 端末がイントラで、さらに限定されたものであれば、 EXEファイルのダウンロード・実行は苦にならないと思います。 配布もどこかのページにリンクを貼り付けてしまえば だれでもダウンロードできますよね。 また、クッキーやセッションは端末に依存するものではありません。 ですのでDBにユーザ名を登録したところで意味がありませんね。 他の端末でも同じユーザで実行可能になってしまいます。 アクティベーションツールと言っているのは、 ユーザIDと端末固有情報を結びつけて認証IDを作成し クライアントのクッキーと、サーバのDBに認証IDを保存すれば、 ログイン時に正しいユーザと端末であるか確認できます。 アクティベーションをActiveXで実装するというのもアリかもしれませんね。 ただし、Windowsに依存してしまいますが。 イントラなら対象のサーバをクライアントの設定で信頼済みサイトにすることで、 ActiveXを実行し放題にすることもできます。 これならログイン行為すら省略する事も可能でしょう。 | ||||||||||||||||
|
投稿日時: 2005-05-15 10:29
Webサーバの方で、どのクライアントからアクセスがあったのかIPアドレスが取れます。
ホスト名が取れるかどうかはちょっと勉強不足で分からないんですが、IPアドレスを基にDNSに問い合わせれば取れますので、ホスト名とユーザIDをDBに登録しておけばできるでしょう。 以前やってみたときに、ホスト名も取れそうなんですけど実際には取得できませんでした。 [qoute]このユーザーネームがそのユーザーのPCからしか(最初にログインしたPC)使えないようにしたいと考えています[/qoute] ものすごく不便ですね。 よろしければなぜそういうことがしたいのか、教えていただけませんか? | ||||||||||||||||
|
投稿日時: 2005-05-15 19:08
ご返答ありがとうございます。
お二方のアドバイスのとおり、IPアドレス+DNSまたはActiveXを使ってMACドレスでの確認という手段で検討してみたいと思います。 大変ありがとうございました。 | ||||||||||||||||
|
投稿日時: 2005-05-16 00:49
がると申します。
んっと…とりあえず、一つだけ軽く。
たしか、クライアントはDHCP構成ですよね? この場合、ちゃんとDHCPに設定をしておかないと、各クライアントのIPは 必ずしも同一にはならないので注意してください。 大抵のDHCPで、「このMACアドレスからの依頼は絶対にこのIPで返却」 ってオプションがあると思うので。 以上、ちょっとだけ突っ込みでした。 |