●CGI起動のセキュリティ確保

この世の常には、どうにかして他人のサーバーを利用して
私腹を肥やしてやろうとか、他人のHPを悪意を持って
メチャクチャに壊してやろうとか。
 
そういう輩(ヤカラね)が蔓延っている訳です。
僕だって大昔は、そんなハッカーと呼ばれたい願望?
の一族だった事実は否めない訳ですが苦笑。
 
プログラムを書く側にとっては、
こんな、僕からしてみると本当は愛しいアホなヤカラから、
お客様の大事なサーバーを守る施術を色々と思考錯誤してる毎日。
 
つか、本音は、ハッカー色の人種って嫌いではないのですが。
(僕が好きなのは、本物の秀才ハッカーではなく、庶民的?もしくは、
真のハッカーになりきれないオタクハッカー?の層かな笑)
 
PERLやPHPでプログラムを書いて、WEB上で動作させる場合。
しかも、これを仕事としている場合、当たり前だけど、
ある程度のセキュリティーを意識しなくてはなりませんよね。
(ほとんどの場合、個人情報の流出は内部からの人為的な漏れなんだけどね)
 
そこで、何らかの理由で、
どうしてもCGI(注1)をBASIC認証下のフォルダー内に置けない場合の、
セキュリティー確保の方法を、
10年以上に渡りサーバーと日夜格闘して来た
僕の経験値から(偉そう?)いくつか書いてみたいと思います。
 
★環境変数「HTTP_REFERER」を利用する
 
環境変数って素敵な言葉だと思いませんか?(僕だけですかね?)
あとね、確率論なんかを夜な夜な勉強していると、
とっても興味深い熟語に目を奪われたりもします。
 
例えば「標本空間」。な〜んかいい響きの四文字熟語ですよね。
そんな事はどうでもいいか。
 
環境変数ってのが何なのか理解できない人、
または、どうやって「HTTP_REFERER」を取得するのかを知らない人は、
是非のこの際、ググッて調べて下さい。
 
この環境変数の中に、「HTTP_REFERER」ってのがあるんです。
要するに「HTTP_REFERER」には、
どこのURLから飛んで来たアクセスなのかがマンマ書いてある。
 
この「HTTP_REFERER」を利用すると、
例えば、自社の管理画面から飛んで来たアクセスなのか、
それとも、全く関係ないハッカー的な悪意のアクセスなのかを
判断することが出来ます。
これにより、管理者からのみのアクセスに絞ることが出来るのです。
 
ただし、この「HTTP_REFERER」という情報、数年前から、
パソコンにイントールする一部のセキュリティーソフト(ノートン等)で、
プライバシーの侵害という大儀で、消されつつある傾向にあります。
だから、管理者が使うセキュリティーソフトによっては
利用出来ないケースもあるのですが。
 
★GETではなくPOSTを使う
 
どんなフォームやCGIへのテキストリンクでも、
目的のCGIを起動するには、GETかPOSTすることになります。
(GETやPOSTが分からない方は、すみませんググってください)
 
一回でもCGIを作成した経験のある人は分かると思うけど、
GETだと、URL欄に全てのクエリが丸裸で表示されてしまいます。
 
これではいささかマズい場合、CGIへの起動元リンクをPOST対応にして、
URL欄へのクエリ表示を無くす方法もあります。
 
例えば、自社の管理画面からの元リンクをPOSTにして、
ユニークなクエリを一つ追加する。
 
このようにPOSTする事によって、
受けるCGI側では管理画面からのアクセスなのか、
他人からのアクセスなのかを判断できます。
 
ただ、これにも避けられない欠点はあって、
管理画面のHTMLソースを見てしまえば、
クエリを特定することが可能になります。
 
でも、管理画面にパスワード無しでは入れないような仕組み(Basic認証等で)
を作っておけば、目的のCGIの起動は安全に保たれる訳です。
 
★クッキーを活用する
 
これまた、クッキー(cookie)を知らない人は、
申し訳ないですがググってください。
 
例えば、自社HPの管理画面から、
アクセス者のブラウザにクッキーを発行します。
今現在のネット世界は、
クッキー無しには成立しないまでにもカオス状態になっているので、
まあ今どき、クッキーを拒絶する設定にしている人はいないと思うのです。
 
管理者のみが知りうるページからユニークなクッキーを発行して、
そのクッキーを内包するブラウザだけに、CGIを起動する権限を与える。
 
こうする事によって、管理画面にアクセス出来た人、
要するに管理者のみが目的のCGIを使えるようにすることが可能になるのです。
 
※注1
CGIっていうと、最近の若い人のほとんどはPERLだと思い込んでるみたいで。
それは多分、PERLの拡張子が「.cgi」だからだと推測するんだけど。
 
CGIって、Common Gateway Interface の略だからして、
本来は、ウェブサーバー上でプログラムを動作させるための
仕組み全般を意味するのであって。
 
厳密には、PHPだってRubyだってCGIだかんね〜!
(こんなことほざいてる僕って、既に頭の硬い老人かな?)
 
だってだって、最近、PERLを軽視する傾向にあるんだもの。
こんなにモジュールが充実している現実的な言語なのに!
 
 
▼▼▼▼
今時のレスポンシブ・デザインのサイトが簡単に作れます!
今時のレスポンシブ・デザインのサイトが簡単に作れます!

 
 
 
 

 

facebookへ twitterへ

 
 
FX比較ランキング  

動画パソコン教室
SEOマニュアル

 
TOPに戻る
オススメの教材

▼最近の記事です。

TOPに戻る

▼このHPに連動した、メルマガも発行させてもらっています。もし気分が乗ったら、登録してもらえれば嬉しいです。

メルマガ購読・解除
【超初心者】からのインターネット講座
   
バックナンバー
powered by まぐまぐトップページへ

田中の初心者向けアフィリエイト講座へ

レスポンシブ・デザインに対応したHTMLデザインテンプレート

リンク集