忙しい現代人の腰&肩のお悩み対策!

いま PHP を使ってウェブサイトを構築しており、
認証として利用者のMACアドレスを取得したいと思っています。
LAN 内であれば
http://www.phpclasses.org/browse/file/7704.html
等を利用して取得できるようですが、
当たり前ですが LAN の外の方との通信では取得ができません。

JavaScript を使ってクライアント側の MACアドレスを取得してしまう
という方法があると聞いたことがあるのですが、
検索しても見つけ出すことができませんでした。

ご存じの方、お教え頂けますでしょうか?
よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

複数PCのユーザーや、PCの買い替え、LANカードの変更など


MACアドレスが変わる機会は多々あります。

現実的には、ウェブアクセスで
MACアドレスでの認証は、可用性が低いと言えます。


逆に、ソーシャルアタックに対して
MACアドレス認証は弱い。
親のPCと自分のPCのLANカードを入れ換えるくらい
中学生でも簡単にやってのけるでしょう。
    • good
    • 1
この回答へのお礼

そうなんですよね...。
わかっちゃいるけど「この方法で!」という動きになってまして...。

まあ「この方法はやめたほうが良い!」とPJに伝えておきます。
(というか、この方法が出来ないんですけどね)

ありがとうございました。

お礼日時:2005/06/15 16:21

結論から言うと無理ではないかと思います。



理由としましては、
もしJavaScriptでMACアドレスが取得できた場合、サーバへMACアドレスを送信することができます。
これではセキュリティもなにもありません。

また、CGI等で取得する場合も、取得できるのはクライアントのデフォルトゲートウェイのMACアドレスとなるはずです。
これはMACアドレスが第2層で使用されるのに対し、データの送受信はデータリンク層である第3層を通して通信を行いますので、変な設定をしていない限り必ずゲートウェイを通るためです。

※まったく自信ないです、すみません
    • good
    • 0
この回答へのお礼

確かにセキュリティ的に問題あるんですよね。
やはりこのやり方は
「万が一可能だとしてもやめた方が良い」
ってことでしょうね。

回答ありがとうございました。

お礼日時:2005/06/15 16:17

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMAC アドレスの取得

ホームページのセキュリティ(ログイン)強化の為、アクセスしてきた人の「MAC Address」を取得する方法はないでしょうか?
(ipconfig/full で得られるところの Ethernet NIC/Physical Address に相当するものです)。

言語は、JavaScript でも、何でも良いです。
プロバイダー名は、簡単に取得できるのですが、、、、。

IPアドレスとプロバイダー名ぐらいでしか、管理するしかないのでしょうか?
ただし、IPアドレスは変わってしまいますよね。

何か良い方法はないでしょうか?

アドバイスよろしくお願い致します。

Aベストアンサー

>(2) (離職者のように)のアクセス権の管理
>  => 公開したパスワードの有効期間の管理

クライアント証明の有効期限設定は
上記の目的に対しては、二次的な対策に過ぎません。

根本的には
一人一人に個別のIDを割り当て、退職と同時にそのIDを削除するのが
重要でしょう。

またパスワード漏洩しないように、モラル教育する必要があります。
システム側でいくら制限をかけ運用で注意していても
・ブラウザにクライアント証明書やパスワードを保存していたPCが盗難にあう
・平易なパスワードをつけている
・同じパスワードを多数のサイトで使いまわしていて、あるシステムから漏洩して全滅。
というのはよくある話です。

なお、クライアント証明の配布やインストールは端末数が多いと大変ですから
社内のIPアドレスからは、クライアント証明なしでアクセスできるが
持ち歩く人や在宅勤務の方だけは短期のクライアント証明書を必須と
してWebサーバーに設定するということで
クライアント証明書の再配布の手間を減らすことは可能です。

さらに、在宅勤務の方が、固定IPなりISP限定にできるなら
クライアント証明+IPアドレス限定
のダブルチェックにするということも可能です。

>(2) (離職者のように)のアクセス権の管理
>  => 公開したパスワードの有効期間の管理

クライアント証明の有効期限設定は
上記の目的に対しては、二次的な対策に過ぎません。

根本的には
一人一人に個別のIDを割り当て、退職と同時にそのIDを削除するのが
重要でしょう。

またパスワード漏洩しないように、モラル教育する必要があります。
システム側でいくら制限をかけ運用で注意していても
・ブラウザにクライアント証明書やパスワードを保存していたPCが盗難にあう
・平易なパスワードをつ...続きを読む

QJavascriptでマシン固有の情報を取得する方法

Javascriptだけで完全なユニーク文字列を作成したいのですが、可能でしょうか?
ランダムの場合、偶然同じになるかもしれないためです。

マシン固有の情報を使って、それ+日時を種にしてランダムにすれば、かなりユニークな文字列を作れそうですが。

Javascriptでマシン固有の情報を取得する何かよい方法をご存知の方、教えてください。

IEとFireFox限定でもかまいません。

Aベストアンサー

>完全なユニーク文字列

他の値がなにかわからないのであれば、ユニークである保障はできません。
理論上は完全にユニークというのはムリでしょう

逆に比較するというプロセスがないのならユニークでなくても
他の値と競合する可能性はありません。

結局はどのくらいの精度で処理したいかによります
たとえば、100億の端末から同時アクセスされたときにユニークな値を
だすのは工夫が必要でしょうけど、そもそもハードウェアやネットワーク的に
100億のアクセスを処理することはできないでしょう。
ボトルネックが別にあるのに、精度をもとめることは意味がありません。

QサーバーからクライアントのMACアドレスを取得

ASPを使用して、サーバーからクライアント側の
ネット情報などを取得したいのですが、できるのでしょうか?

今現在WMIを使用してクライアントからサーバーのMACアドレスを
取得できているのですが、逆の事もできるのではと考えました。

<HTML>
<HEAD>
<TITLE>MACアドレスの表示</TITLE>
</HEAD>

<BODY>
<Form method="post" name="form1">
<input type="hidden" name="h_MACaddress" value="<%= MACA %>">
<%

Dim MACA

ConnectString = "winmgmts:{impersonationLevel=impersonate}!root\cimv2"
Query = "SELECT MACaddress "
Query = Query & " FROM Win32_NetworkAdapterConfiguration"
Query = Query & " WHERE IPEnabled=TRUE"

On Error Resume Next
Set IPConfigSet = GetObject( ConnectString ).ExecQuery( Query )

if Err <> 0 Then'エラー発生表示
if Err.Number = -2147217405 then
Response.Write "Error 0x80041003: Access Denied: "
Response.Write "Check permissions and file security for this ASP file."
Response.Write "<BR>"
else
Response.Write "エラー説明: "
Response.Write Err.Description
Response.Write "エラー番号: "
Response.Write Err.Number
Response.Write "<BR>"
end if
end if

For each IPConfig in IPConfigSet'MACアドレス取得処理
Response.Write("MACADDRESS: ")
Response.Write(IPConfig.MACaddress & "<br>")
MACA = IPConfig.MACaddress
Next
'Response.write("aaa:" & MACA & "<BR>")'MACアドレスの変数

Response.Write "<BR>"

if Err <> 0 Then'エラー発生表示
Response.Write "エラー説明: "
Response.Write Err.Description
Response.Write "エラー番号: "
Response.Write Err.Number
Response.Write "<BR>"
end if

%>

</BODY>
</HTML>

プログラムはこのようなものを使用しております。
できるできないだけでも知りたいので、
分かる方いらっしゃいましたら教えていただけますでしょうか?
宜しく御願い致します。

ASPを使用して、サーバーからクライアント側の
ネット情報などを取得したいのですが、できるのでしょうか?

今現在WMIを使用してクライアントからサーバーのMACアドレスを
取得できているのですが、逆の事もできるのではと考えました。

<HTML>
<HEAD>
<TITLE>MACアドレスの表示</TITLE>
</HEAD>

<BODY>
<Form method="post" name="form1">
<input type="hidden" name="h_MACaddress" value="<%= MACA %>">
<%

Dim MACA

ConnectString = "winmgmts:{impersonationLevel=impersonate}!root\c...続きを読む

Aベストアンサー

> ASPを使用して、サーバーからクライアント側の
> ネット情報などを取得したいのですが、できるのでしょうか?

できないような気が・・・

> 今現在WMIを使用してクライアントからサーバーのMACアドレスを
> 取得できているのですが、逆の事もできるのではと考えました。

その理屈で言うと・・・

ASPは(クライアントの要求で)サーバ上で動作してサーバ上の情報を取得している
のですから、
クライアントの情報を取得したいなら(ASP上ではなく)クライアントスクリプト上で取得しなければならない
のでは?

QJavaScriptにおいてコンピュータ名を取得するには??

どうしたらよいでしょうか??

よろしくおねがいします!!!!

Aベストアンサー

すいません、期待させてしまって。
コンピュータ名をWindowsアカウントと勘違いしておりました。

言語は何を使用されているか分かりませんが、VBScriptでは
次のとおりです。
ご存知かとは思いますが、サーバー側で環境情報を取得するには、

Request.ServerVariables ( 変数名 )

を使用します。
LOGON_USER・・・ ログインした Windows アカウント

で取得します。

本題に関しては、分かり次第、また、回答させていただきます。

どのようなことをしたいのか?
また、サーバー側言語は何なのか?
クライアント側言語は何なのかをご教授して頂くと、代案等を考えることができると思います。

QPC固有の番号(シリアル番号等)を取得したい。

PHPを使用して、PC固有の番号(シリアル番号等)を取得したいのですが、どのように記述すればよいか分からないので教えて下さい。

○やりたいこと
現在作成中のSNSサイトで友達を紹介する仕組みを作りたいです。
紹介する人にも紹介を受ける人にもメリットがあります。
紹介する人が、紹介を受ける人のメールアドレスをサイト内で入力・送信をすると、サイトから紹介を受けるに招待メールが送られます。
紹介を受ける人は、招待メールのリンクを辿りサイトの登録へと進みます。
メールアドレスは、WEBメールでの登録も許可しているので、1台のPCでいくつもアドレスを作ることができて、自作自演が可能です。
そこで、PC固有の情報を取得して登録メールアドレスと組み合わせてアカウントチェックをすることで、1台で複数のアカウントが取得できると考えています。


参考になる文献でもよいので、どうか皆さんのお知恵を貸して下さい。
宜しくお願い致しますm(__)m



■環境
windows vista
xampp/apache 2.2.4
PHP Version 5.2.3

Aベストアンサー

PC固有の値を取得することはできないので、他のサービスがどうやって
この問題を解決しているか、いくつか例を挙げます。

1.
住民票の写し、免許証のコピーなどを提出させて、個人を特定しアカウントを発行する。
ネット証券会社など

2.
アカウント申請時に携帯電話番号を入力させ、本人確認の電話を運営側から自動音声で行う。
gmailなど

3.
携帯電話でのみアカウント作成を許可する。
いわゆるガラケーであれば、端末固有IDを取得する仕組みがあります。

4.
携帯電話会社のOpenIDで認証する。
PC上で完結しますが、一般ユーザへの認知度が高いとは言えませんね。


2.3.4.は厳密には複アカできてしまいますが、携帯契約数以上のアカウントは作れないので
ある程度の抑止力になると思います。

Qローカルのコンピュータ名を取得したい

クライアントのPC名=A
サーバのPC名   =B
DNSサーバ名   =C

$IP = $_SERVER['REMOTE_ADDR'];
$PcName = gethostbyaddr($IP);

上記のようにすると$PcNameにはCが入ります。
Aを取得したいのですが、どうすれば良いか教えて下さい

Aベストアンサー

インターネットを介してと言う事でしょうか?
であれば、クライアントPCにグローバルIPが振られて、かつDNSに登録されていない限りAは取得出来ません。
REMOTE_ADDRは接続IPを取得するだけなので。

まあ、PC名分かったらセキュリティ上やばいと思うのでw

ローカルであればDNS構築して逆引き登録をちゃんとやればOKです。

Qhtmlのfileタグに自動で値を入れる方法

htmlのタグでいって
<input type="file">を用いてファイルをサーバーにアップロードしたいと思っています。で、このとき、ファイル名は任意に選べるのではなく固定で送信したいと思っています。

すなわち、HTMLを読み込んだ時点で、fileのテキストボックスにファイルパスが埋め込まれているか、JavaScriptで、ファイルパスを自動入力するようにしたいと思っています。

最終的には、form内のオブジェクトをすべて非表示にし、onload時にsubmitするような形にしたいと思っています。いろいろ事情があって苦肉の策になっています…。

とりあえず(だめだとは思っていたのですが)
<input type="file" value="ファイルパス" name="filepath">
と直書きにしてみたり
document.all.filepath.value = "ファイルパス";
などとしてみたりしましたがだめでした…。
W3C勧告の使用上はvalueでファイルパスを指定できるようになっているようなのですが、現在の一般的なブラウザでは禁止されているようですね。

このような場合、何らかの方法でfileにファイルパスを自動入力することはできますでしょうか?
もしできない場合、何らかの方法で実現する方法はありますでしょうか?よろしくお願いします。

ちなみに実現できればいい環境は
WinXP環境のIE6です。言語はクライアント言語はJavaScriptのみで、という条件付です。
できないかもしれないのですが、こういうのって必要になるときもあるよなーなどと思っており、もしかしたら解決方法があるかもしれないと思い質問しました。よろしくお願いします。

htmlのタグでいって
<input type="file">を用いてファイルをサーバーにアップロードしたいと思っています。で、このとき、ファイル名は任意に選べるのではなく固定で送信したいと思っています。

すなわち、HTMLを読み込んだ時点で、fileのテキストボックスにファイルパスが埋め込まれているか、JavaScriptで、ファイルパスを自動入力するようにしたいと思っています。

最終的には、form内のオブジェクトをすべて非表示にし、onload時にsubmitするような形にしたいと思っています。いろいろ事情があって苦肉...続きを読む

Aベストアンサー

やっぱ無理じゃないでしょうか。
なにか裏ワザ的な方法で一時的にできたとしても、いつか直されるかもしれないのでおいそれとは使えないし。

>W3C勧告の使用上はvalueでファイルパスを指定できるようになっている
→参考URL 「ユーザが明示的に送信を求めたファイル以外のものは送ってはいけない」とあります。

参考URL:http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/appendix/notes.html#forms-security

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Qアクセス元PCのMACアドレス取得方法

どのカテで相談するべきか悩みましたが、Webについて
こちらを見られている方がお詳しそうだったのでAJAX
限定と言う訳ではありませんがこちらに
質問させていただきました。

アクセス元PCのMACアドレスの取得をしたいのですが、
通常のやり方では、間にルータが入る以上取得不可能と言う
事は認識しておりますが、アクセス元のPC内でMACアドレス
を記録して送信してもらうようなプログラムをWeb上又はローカル
クライアントから実行してもらいそれを、サーバ側で取得する
方法では可能になりませんでしょうか?

もし、別の方法でも可能であればその手順等を教えて頂けません
でしょうか?

※実装に関しては、別途質問を立てたいと思いますので、
簡潔な情報で構いません。

Aベストアンサー

DOSコマンドの実行結果を文字列で取得できる
ActiveX コンポーネント「ATLDocs」というのがアップされています。
http://www.vector.co.jp/soft/win95/prog/se222454.html
これを使って
ipcongig /all
の結果からPhysicalAddressの値を取得して、サーバーに送信してしまう。
※もちろんWindowsとIE限定ですが。

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング