環境変数

  • 環境変数の多くはクライアント側から送出されたメタヘッダから設定されます。
    特に QUERY_STRING や HTTP_ や CONTENT_ で始まる変数名は簡単にいじくれるので
    悪意のタブやSSIコード、Java、VBスクリプトを入れておくこともできます。
    • こういう安心できない tainted(汚染された)データをCGIなどで扱う場合は
      タグの除去や危険なコードを削るような処理が必要。
      もちろん、フォームからのPOSTで送られてきた入力も安心できない。
  • CONTENT_ で始まる環境変数はクライアントから送られ、
    変数名のアンダーバー(_)をハイフン(-)に置き換えたものとほぼ同じヘッダからの情報。
    Content-Length: ヘッダ → CONTENT_LENGTH
    Content-Type: ヘッダ → CONTENT_TYPE
  • HTTP_ で始まるク環境変数はクライアントから送られ、
    変数名のHTTP_を除き、アンダーバー(_)をハイフン(-)に置き換えたものと同じヘッダからの情報。
    Accept-Language: ヘッダ → HTTP_ACCEPT_LANGUAGE
    Host: ヘッダ → HTTP_HOST
  • SERVER_ で始まる情報はサーバ側が設定した情報。
    CGIなどを実行している側の情報が設定されている。
    比較的安心できる。
  • REMOTE_ で始まる情報はクライアント側が設定した情報。

リンク

言語ごとの取得方法

  • C
    printf( getenv("CONTENT_TYPE") );
  • Perl
    print $ENV{CONTENT_TYPE};
  • PHP
    echo $_SERVER[CONTENT_TYPE];

AUTH_TYPE

認証方式名。

Basic, MD5

CONTENT_LENGTH

POST形式で標準出力から送られてくるデータのサイズ。
GET形式で渡されたクエリーデータのサイズ。

CONTENT_TYPE

送られてくるデータの MIME タイプ。

text/html; charset=ShiftJIS

DATE_GMT

サーバの世界標準時による現在日時。

Friday, 04-Feb-2000 21:58:27 GMT

DATE_LOCAL

サーバの現地時間による現在日時。

Saturday, 05-Feb-2000 06:58:27 JST

DOCUMENT_NAME

送られてくるデータのファイル名。

index.html

DOCUMENT_PATH_INFO

DOCUMENT_ROOT

サーバ外部の仮想パスのルートに対応したサーバ内の絶対パス。

/home/public_html

DOCUMENT_URI

送られてくるデータの仮想パス。

/~test/index.html

GATEWAY_INTERFACE

サーバの用いているゲートウェイプロトコル名。
WWWサーバーが使うCGIのバージョン。通常は CGI/1.1

HTTP_ACCEPT

クライアントが明示している、対応した MIME タイプの一覧。
すべてが許される場合は */*

image/gif, image/jpeg

HTTP_ACCEPT_CHARSET

クライアントが明示している、対応した文字コードセット。

Shift_JIS,*,utf-8

HTTP_ACCEPT_ENCODING

クライアントが明示している、対応したデータ変換形式。

gzip, deflate

HTTP_ACCEPT_LANGUAGE

クライアントが明示している、対応した国語。

ja, en

HTTP_CACHE_CONTROL

max-age=259200, max-stale=0", bypass-client=123.45.6.78

HTTP_CACHE_INFO

キャッシュ情報

proxyt.foo.ne.jp; get-count=0

HTTP_CLIENT_IP

クライアントの実IPアドレス。プロキシ使用時などに出る。

HTTP_CONNECTION

Keep-Alive
close

HTTP_COOKIE

クライアントから受け取った HTTP-Cookie情報。

HTTP_EXTENSION

Security/Remote-Passphrase

HTTP_FORWARDED

クライアントの閲覧要求を通した(FORWARDED)プロキシサーバ情報。
by 〜〜〜が経由したプロキシ、for 〜〜〜に要求を出したクライアントIPが記されることもある。
プロキシを連続させた場合、新しいものが , で区切られて順に左側へ追加されていく。

by http://proxy.tt.test.ac.jp:8080 (Netscape-Proxy/3.52), by WinProxy (Version 2.0.0) for 234.56.78.9

HTTP_FROM

クライアントの電子メールアドレス。

myname@client.com

HTTP_HOST

クライアントが閲覧要求を出したURLのサーバ名
バーチャルサーバ等の識別に使われる。

HTTP_IF_MODIFIED_SINCE

Tue, 01 Feb 2000 04:33:34 GMT

HTTP_MIME_VERSION

1.0

HTTP_NEGOTIATE

trans

HTTP_PRAGMA

キャッシュ情報。no-cacheとするとキャッシュしないという意味。No-Cache

HTTP_PROXY_CONNECTION

Keep-Alive

HTTP_REFERER

クライアントが要求した文書の参照元になったURI。
ただし複数開いたブラウザで混同したり間違うこともある。
フレーム内でも取得可能。

http://mokemoke.com/index.html, bookmarks

[unknown origin] はNC4.7等で見るが取得失敗という意味だろうか?

HTTP_USER_AGENT

クライアントが利用しているマシンのOS、ブラウザ名等。
プロキシサーバを利用した場合、 via proxy gateway 等が含まれることもある。

Mozilla/3.0 (Macintosh; I;68K), Mozilla/4.04 [ja] (Win95; I ;Nav) via proxy gateway CERN-HTTPD/3.0 libwww/2.17

HTTP_VIA

クライアントの要求を経由したサーバ情報。
ドメイン名が省略されている場合もある。
for 〜〜〜に要求を出したクライアントIPが記されることもある。
プロキシを連続させた場合、新しいものが , で区切られて順に左側へ追加されていく。

1.0 proxy.foo.ne.jp:8080 (Squid/2.2.STABLE5)
HTTP/1.1 tok-ab[C6510502] (Traffic-Server/3.0.6 [uScMs f p eN:t cCMi p s ])

HTTP_X_LOCKING

127.0.0.1:/var/delegate/cache/http/www.foo.com/bar/=

HTTP_X_FORWARDED_FOR

クライアントの閲覧要求を経由したIP。
プロキシを連続させた場合、新しいものが , で区切られて順に右側へ追加されていく。 225.225.225.225, 127.127.127.127 unknown

LAST_MODIFIED

サーバが送出した文書の最終更新日時

Wednesday, 02-Feb-2000 23:09:00 JST

MESSAGE_ID

PATH_INFO

入力されたパスで呼び出されたファイル以降のパス。
/bar.cgi/f=0/d=2?a=1&b=4が入力され、呼び出されたのが/bar.cgiなら/f=0/d=2が入る

PATH_TRANSLATED

QUERY_STRING

GET形式で渡されたクエリーデータ。パスの ? から # もしくは末尾まで。
入力されたパスが/bar.cgi/f=0/d=2?a=1&b=4ならa=1&b=4が入る

QUERY_STRING_UNESCAPED

デコード文字列?

REDIRECT_STATUS

200

REDIRECT_URL

/test/

REDIRECT_nokeepalive

1

REMOTE_ADDR

クライアントのリモートIPアドレス。

255.128.1.16

REMOTE_HOST

クライアントのリモートホスト名もしくはIPアドレス。
REMOTE_ADDR のみで HOST は取得しないサーバもある。ppp.core.com

REMOTE_IDENT

クライアントのユーザ名。RFC931認証技術に対応してる場合のみ

REMOTE_PORT

クライアントが利用しているポート番号。結構色々。1348

REMOTE_USER

クライアントが認証機能で得たユーザ名。

takesyui

REQUEST_METHOD

クライアントから送られてきたデータの送信形式。通常はGETかPOST。
GET は環境変数 QUERY_STRING に、POST は標準出力にデータが渡される。
他にはHEAD, PUT, DELETE, LINK, UNLINKなど。

REQUEST_URI

/cgi-bin/test.cgi

SCRIPT_FILENAME

サーバで現在実行してるスクリプトの絶対パス。

/home2/hoke/public_html/moke.cgi

SCRIPT_NAME

サーバで現在実行してるスクリプトの仮想パス。

/~hoke/moke.cgi

SERVER_ADDR

サーバのIPアドレス

127.0.0.1

SERVER_ADMIN

サーバ管理者の情報。

adm@test.com

SERVER_NAME

サーバのホスト名、もしくはIPアドレス。

pink.bear.ne.jp

SERVER_PORT

サーバにアクセスできるTCPポート番号。WWWサーバーなら通常 80。

SERVER_PROTOCOL

サーバが用いているHTTPのバージョン。通常は HTTP/1.0 など。

SERVER_SIGNATURE

サーバの署名 

SERVER_SOFTWARE

サーバがWWWに使っているOSの種類。形式は ソフトウェア名/バージョン。

NCSA/1.4.2 Apache/1.0.5

SESSION_ID

USER_NAME

TZ

サーバのタイムゾーン


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規新規下位 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-01-30 (水) 18:53:34 (3433d)