IPアドレスからホスト名を取得するツールを作りました!
IPアドレスからホスト名を取得するツールを作ったので、開発ログを残しておきたいと思います。
正確には、以前作っていたものをサーバー移転を機会に作り直しました。
IPアドレスからホスト名を取得
作成したツールはIPアドレス→ホスト名特定ツール!です。
このツールの概要は、
- フォームにIPアドレスを入力
- 「実行」ボタンをトリガーにjQueryでIPアドレスを取得
- 取得したIPアドレスをajaxでサーバーに投げる
- サーバー(PHP)側でgethostbyaddr関数を使用してホスト名を取得
こんな感じです。
ツールの設計
このツールは、
- HTML
- javascript・jQuery
- PHP
からなります。
HTML
IPアドレスからホスト名を取得するので、利用者にIPアドレスを入力してもらうフォームをこのように作りました。
<form> <input style="width:200px;" name="ip-address" type="text" value="" /> <input id="button" type="button" value="実行" /> </form>
javascript・jQuery
ユーザーがフォームにIPアドレスを入力して「実行」ボタンを押したときにスクリプトが発動するようにしました。
jQuery(function($){ $('body').on('click', '#button' ,function(event){ //IPアドレスを取得 ip = $(':text[name="ip-address"]').val(); //以下略(ajax通信) }); });
流れとしてはIPアドレスをフォームから取得して、それをajaxでサーバー側に投げる感じです。
PHP
PHP側(サーバー側)では、ajaxでPOSTされたデータ(IPアドレス)を受け取り、gethostbyaddr(IPアドレスからインターネットホスト名を取得する関数)を利用してホスト名を取得します。
//POSTデータ $ip = $_POST["ip"]; //ホスト名を取得 $host = gethostbyaddr($ip);
無事にホスト名を取得できたら、データをユーザー側(ブラウザ)に返します。
なお、入力されたIPアドレスがIPアドレスの形式として正しいのかのチェックを次のように行っています。
//POSTデータ $ip = $_POST["ip"]; //IPアドレスの形式をチェック if(preg_match("/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/", $ip, $matches)){ //ホスト名 $host = gethostbyaddr($ip); }else{ //エラー $error_message = "IPアドレスの入力にミスがあります"; } //ホスト名がなかった場合 if($ip === $host) $error_message = "ホスト名が見当たりませんでした";
ブラウザ側では、サーバーから返されたホスト名をjQueryを使用してページに表示します(この辺はページのソースコードを見てください)。
まとめ
最近は昔に比べてコメント荒らしなどは見なくなりましたが、代わりに海外からの攻撃が増えてきています。
基本スパマーは同一サーバーで複数IPアドレスを使って攻撃を仕掛けてくるので、本ツールを使ってIPアドレスからホスト名を取得して、そのホスト毎サーバーで弾けばサイトのセキュリティが上がります。
これまでは海外のホスト名取得ツールを使って調べていましたが、回数制限があって煩わしい思いをしたので自分で作ってみた次第であります。
あわせて読んでほしい!
コメント
まだコメントはありません。