環境変数とは

掲示板を改造する際に、プロキシサーバを経由してきた荒らしをどのように処理するのかを考えなければなりません。 そこで理解しておかなければならないのが、環境変数(Environment)です。 環境変数とは、個々のユーザ環境によって変化する情報を格納したデータ群のことで、 プログラム同士が情報を交換する際にブラウザやサーバアプリケーションが設定や参照する特殊な変数のことです。

この変数はCGIスクリプトを使って情報を呼び出すことができ、 訪問者がプロキシサーバ経由でアクセスしているのかなどを判断する時に活用します。 この環境変数は、WWWサーバとブラウザがデータのやりとりをする時に、データのヘッダ情報として送受信します。 環境変数を設定するソフトはブラウザ、Webサーバ、Proxyサーバの3つです。

これらのソフトが設定した環境変数を使って、アクセス制限やアクセス解析、ログなどを取ったりします。 インターネットではHTTP(HyperText Transfar Protocol)のルールに従ってデータのやり取りを行っており、 HTTPヘッダの中にあるデータを環境変数として利用しています。 どの環境変数にどんな形式の値を設定するのかはRFC2616のHTTP1.1に書いてあり、 そこでは、RFCが定める環境変数とユーザが自由に作成できるものと2種類あると書いてあります。

例えば、「HTTP_VIA」はプロキシサーバを経由したときにプロキシサーバがセットする経由元のIPアドレスが取得できますが、 これはRFCで定義されているため多くのプロキシサーバは設定しています。 それとは違い、「HTTP_X・・・」で始まる多くの環境変数は、RFCでは自由に定義しても良い環境変数としているので、 どっかの誰かが勝手に作成した変数の可能性があるので、値がセットされていたり、そうでなかったりします。

また、HTTPで始まる環境変数は自由に読み書きができるためデータの改ざんが可能になります。 これを聞くと環境変数自体に疑いをもちますが、HTTPヘッダを改ざんするためには、 環境変数に変な値を入れるように設定されているプロキシサーバを経由するか、書き換えソフトなどで書き換えるかになってきます。 しかし、自作ソフトでは基本的にリモートホストまでは変える事ができませんし、 プロキシサーバを自分で構築してそれを経由してもそのプロキシサーバのIPアドレスが自分のものなので、 まったく他人が構築したプロキシサーバかつ環境変数がまったく値が設定されていない、 もしくは変な値が設定されているものでないかぎり、基本的にHTTPで始まる環境変は信頼してもよいと思います。

ユーザエージェントは、ブラウザレベルで簡単に偽装ができるので、信頼はできないと考えておいたほうが無難でしょう。

[PR] ケアマネージャー 試験 | ナチュラルガーデン | O脚 矯正