Copyright(c)AOTAKA 1995-2003 - www.aotaka.jp |
RIMNETでは今回、Apatchに鞍替えしたと同時にセキュリティー強化が為され、安易にdateコマンドを使用できなくなってしまいました。そこで注目されるのが「環境変数の読み出し」です。また電子掲示板(BBS)システムなどではIPアドレスがよく表示されますが、そのカラクリを簡単に体験してみましょう。
※表示情報は閲覧のブラウザーでのみ表示され、サーバーには記録されません。
※環境変数は、サーバー側の設定により色の付いている行しか閲覧できません。
1999-12-14 1st
2002-11-08 再掲載
項目 | 意味/例 | 結果 | ||
---|---|---|---|---|
ク ラ イ ア ン ト の 情 報 |
DATE_LOCAL | S | ドキュメントを開いた地方時(LST) | |
DATE_GMT | S | ドキュメントを開いた世界時(GMT) | ||
REMOTE_ADDR | CS | クライアントのIPアドレス | ||
REMOTE_HOST | CS | クライアントのホスト名 | ||
REMOTE_IDENT | CS | リクエストを送ったユーザー | ||
REMOTE_USER | CS | リクエストを送った認証名 | ||
REMOTE_PORT | CS | リクエストを送ったポート番号 | ||
REQUEST_METHOD | CS | クライアントから要求された方法 GET,POSTなど | ||
HTTP_REFERER | CS | リンク元ページURL | ||
HTTP_COOKIE | * | クッキー | ||
HTTP_USER_AGENT | CS | 使用ブラウザーの情報 | ||
HTTP_ACCEPT | CS | 表示可能なMIMEタイプ(データのタイプ) | ||
HTTP_ACCEPT_CHARSET | * | 表示可能な文字セット | ||
HTTP_ACCEPT_LANGUAGE | * | 表示可能な言語の一覧 ※例 ja,en;q=0.7,fr;q=0.3 | ||
QUERY_STRING | CS | クエリー文字列 | ||
QUERY_STRING_UNESCAPED | S | デコードできない文字列 | ||
項目 | 意味/例 | 結果 | ||
こ の ペ | ジ |
LAST_MODIFIED | S | ドキュメントの最終更新日 | |
DOCUMENT_NAME | * | ドキュメントの名前 | ||
DOCUMENT_ROOT | CS | サーバー上での場所 | ||
DOCUMENT_URI | S | URLからドメイン部分を除いたもの | ||
項目 | 意味/例 | 結果 | ||
プ ロ ク シ | の 情 報 |
HTTP_FORWARDED | * | プロクシーの場所 | |
HTTP_VIA | * | プロクシーの種類等 | ||
HTTP_X_FORWARDED_FOR | * | プロクシーを通す前のIP | ||
HTTP_XROXY_CONNECTION | ||||
HTTP_CACHE_CONTROL | * | 接続元(IPアドレス) | ||
HTTP_CLIENT | * | 接続元(ホスト名) | ||
HTTP_LOCKING | * | リンク元ページURL | ||
HTTP_X_LOCKING | * | クッキー | ||
項目 | 意味/例 | 結果 | ||
サ | バ | 側 の 情 報 |
SCRIPT_FILENAME | CS | 実行されるスクリプト名(パス) | |
SCRIPT_NAME | CS | スクリプトファイル名(URL) | ||
SERVER_ADMIN | CS | サーバー管理者 | (IDやメールアドレス等を表示) | |
SERVER_NAME | CS | サーバー名 | ||
SERVER_PORT | CS | サーバーのポート | ||
SERVER_SOFTWARE | CS | サーバーソフト名 | ||
GATEWAY_INTERFACE | CS | CGIリビジョン | ||
SERVER_PROTOCOL | CS | プロトコル名とリビジョン | ||
TZ | CS | タイムゾーン | ||
項目 | 意味/例 | 結果 | ||
他 | AUTH_TYPE | CS | 認証方式 | |
CONTENT_LENGTH | CS | データ長 | ||
CONTENT_TYPE | CS | コンテントタイプ | ||
HTTP_CONNECTION | CS | 接続状況 | ||
HTTP_HOST | CS | サーバーホスト名 | ||
HTTP_PRAGMA | * | * | ||
HTTP_UA_CPU | * | * | ||
HTTP_UA_OS | * | * | ||
HTTP_UA_COLOR | * | * | ||
HTTP_UA_PIXELS | * | * | ||
PATH | CS | サーバーのパス情報 | ||
PATH_INFO | CS | 拡張パス情報 | ||
PATH_TRANSLATED | CS | PATH_INFOを変換した情報 | ||
REQUEST_URI | CS | リクエストされたファイル名 | ||
HTTP_ACCEPT_ENCODING | * | * | ||
REDIRECT_STATUS | * | * | ||
REDIRECT_URL | * | * | ||
SERVER_ADDR | * | サーバーアドレス | ||
SERVER_SIGNATURE | * | * | Apache/x.x.x Server at www.kt.rim.or.jp Port 80 | |
DOCUMENT_PATH_INFO | * | * | ||
USER_NAME | * | ユーザー名(このページの所有者) | ******** | |
HTTP_CLIENT_IP | * | * | ||
HTTP_EXTENSION | * | * | ||
HTTP_FORM | * | * | ||
HTTP_PROXY_CONNECTION | * | * | ||
HTTPS_KEYSIZE | * | * | ||
HTTPS_SECRETKEYSIZE | * | * | ||
HTTPS_SERVER_ISSUER | * | * | ||
HTTPS_SERVER_SUBJECT | * | * | ||
INSTANCE_ID | * | * | ||
INSTANCE_META_PATH | * | * | ||
KEEP_ALIVE | * | * | ||
LD_LIBRARY_PATH | * | * | ||
LOCAL_ADDR | * | * | ||
PHP_SELF | * | * | ||
TRANSFER_ENCODING | * | * |
ダイアルアップ接続などの固定IPを有さないアクセスでは、実際にこれだけの情報で本人を特定するのは不十分な場合がほとんどですが、これらの情報を元に推測を行うことは可能です。また昨今ではJavaやクッキーを駆使して、アクセスの履歴を取ることも容易となっているため、継続的に調べることはいとも簡単に行えます。
さらに触法行為をした場合は、捜査機関が令状を取ってプロバイダーに情報開示を命令することが可能であり、本人を完全に特定できてしまいますので注意しましょう。
さてちゃんと「1999年12月08日 01:23:45 AM JST」の様に表示されましたか? しかしAM/PMというのは明確な定義の無い表記法(*1)で今一ベターではありませんので、次に24時間表示を行いましょう。
- 書式例
- <!--#config timefmt="%Y年%m月%d日 %I:%M:%S %p %Z"-->
<!--#echo var="DATE_LOCAL"-->- 結果
今度は「99年12月08日 01:23:45 JST」の様に24時間表示になりました。しかしよく見ると西暦が2桁表記になっています。これでは2000年は迎えられません(爆謎) このようにいろいろ表示を変えることができるので是非とも試してみましょう。
- 書式例
- <!--#config timefmt="%y年%m月%d日 %H:%M:%S %Z"-->
<!--#echo var="DATE_LOCAL"-->- 結果
24時間表現 | 太政官布告三百三十七号 (明治5年) |
Windows XP |
日本工業規格 国際標準ISO |
Java 1.2 (12時間表記) |
C言語(12時間) ISO/IEC 9899:1999 |
|
00:00 | 午前00:00 すなわち 午後12:00 | 午前12:00 | 12時間表記 無し 00:00:00 : 23:59:59 |
00:00 AM | 12:00 AM | 12:00 AM |
00:01 | (未定義) | 午前12:01 | 00:01 AM | 12:01 AM | 12:01 AM | |
01:00 | 午前01:00 | 午前01:00 | 01:00 AM | 01:00 AM | 01:00 AM | |
12:00 | 午前12:00 | 午後12:00 | 00:00 PM | 12:00 PM | 12:00 PM | |
12:01 | (未定義) | 午後12:01 | 00:01 PM | 12:01 PM | 12:01 PM | |
13:00 | 午後01:00 | 午後01:00 | 01:00 PM | 01:00 PM | 01:00 PM | |
24:00 | 午後12:00 | - | 翌00:00と同じ | - | - |
<!--#command | option= | "value" --> | 説明 |
---|---|---|---|
#config | errmsg | 文字列 | エラーメッセージの設定を行う |
timefmt | ※別表(下)参照 | 時間表示形式の指定 | |
sizefmt | bytes,kilobytes megabytes,abbrev |
ファイルサイズ表示形式の指定 (Bytes,KB,MB,自動判別) |
|
#echo | var | ※別表(上)参照 | 環境変数の取り込み |
#exec | cmd | 外部コマンド名 | シェルコマンドの実行 |
cgi | CGIファイル名 | CGIスクリプトの実行 | |
#flastmod | file | ファイル名 | ファイル更新日の表示(ファイル名で指定) |
virtual | ファイル名 | ファイル更新日の表示(絶対パス指定、URLで指定) | |
#fsize | file | ファイル名 | ファイルサイズの表示(ファイル名で指定) |
virtual | ファイル名 | ファイルサイズの表示(絶対パス指定、URLで指定) | |
#include | file | ファイル名 | ファイルの取り込み(ファイル名で指定) |
virtual | ファイル名 | ファイルの取り込み(絶対パス指定、URLで指定) | |
<!--#printenv --> | 全環境変数表示 ※Apache1.2以上のみ | ||
<!--#set var="string1" value="string2" --> | string1で指定する環境変数にstring2をセットする ※Apache1.2以上のみ |
||
<!--#if expr="条件1" --> 条件1が真の場合に表示 <!--#elif expr="条件2" --> 条件1が偽で条件2が真の場合に表示 <!--#else --> 条件1,2ともに偽の場合に表示 <!--#endif --> |
条件分岐 ※Apache1.2以上のみ if〜elseif〜else〜endifを表す。 最後はendifで閉じる。 |
項目 | 引数 | 結果 |
---|---|---|
西暦年 | %Y (yyyy形式) %C(上2桁) %y (2桁) | |
月 | %m (01~12) %B (January~) %b (Jan~) | |
日 | %d (01~31) | |
時 | %H (00~23) %I (00~11) %p (AM~PM) | |
分 | %M (00~59) | |
秒 | %S (00~59) %s (time_t形式) | |
曜日 | %A (Sunday~) %a (Sun~) | |
他 | %D mm/dd/yy形式の日付 %T HH:MM:SS形式の時刻 %c LC_TIMEで指定されている形式 %r hh:MM:SS AM %Z タイムゾーン |