2010-12-27 10 views
3

は、PerlでCGIを通してリモートクライアントのユーザ名とコンピュータ名を取得する方法はありますか?私は、CGIスクリプトで印刷ENVハッシュを試してみましたが、私は情報がHTTP経由で渡されないこの情報username computername from CGI

答えて

3

号を取得couldntの、および(すべてでは存在しないかもしれない例えば自分の携帯電話のユーザー名でログインする私を必要としません。 、それは単一のユーザデバイスです)。

要求が送信されたマシン(プロキシサーバーかもしれない)のIPアドレスを取得し、それを使用してDNS(または他のネットワークプロトコル)名を取得できますが、取得する。

+0

ありがとうございました。私はどこかにこの情報を保持する変数があり、何も見つけられませんでした。だから私はこの質問を – SAN

+0

+1のDNSに投稿した、それを考慮しなかった –

2

remote_host and remote_addr methodsをチェックしてください。彼らは、あなたが "コンピュータ名"に到達できるように、あなたを近づける可能性があります。ユーザー名はhttp headersでまったく受け継がれない可能性があります(たとえば、技術的には承認やメールのヘッダーは近いと見なすことができますが、ほとんどの場合、どちらかが入力される可能性は低い)。

特にREMOTE_HOST方法は、逆DNSルックアップを行います。何かが返されると結果が得られます。それ以外の場合は、リモートアドレス(例えばip)を取得します。理論的にはまあ

0

、そうすることができます。まず、クライアントのIPを$ENV{'REMOTE_ADDR'}変数で取得する必要があります。より簡単なAPI(前者はCソケットとまったく同じです)が必要な場合は、SocketsまたはIO::Socketなどのソケットモジュールを使用し、この情報の特定のポートを調べる必要があります。たとえば、ユーザーがWindowsを実行している場合、ポート137でNetBiosを開くことができます。これは、通常はデフォルトでコンピュータ名を指定します。

この方法は、しかし、ちょうどあなたのページにアクセスすることにより、ユーザーが唯一のIP、ユーザエージェント、リファラ、その他が開示されているが、法的にグレーの領域であり、いくつかの国では情報への不正アクセスを取得しようとする試みとして分類することができる...

HTTPヘッダーに含まれる情報

あなたがあなた自身の研究を行うことができますより多くの情報が必要な場合は、私はあなたに基礎を与えた...