ガレコレ
Garage Collection
 
2019年12月21日(土)
ログインページを守る技術 #■パソコン・通信

 ガレコレの最高峰の技術は秘密とさせて頂きますが、ログインページにたくさんの錠を仕込んだシステムをご紹介します。この程度でも、セキュリティとしてはまあまあで、お客様からは「そこまでは要らない」と言われて、提供したことはありません。

 この技術のサンプルとフローチャートを公開したのは、有名サイトでもログインページのセキュリティがお粗末なことを嘆いてのことです。

 なお、サンプルなので、それぞれのキーの値は静的で簡単な文字列にしております。運用時には、D/Bを用いて、動的に暗号化した文字列を使用します。

 サンプルでは、状況に応じたコメントが表示されますが、運用時には「Error!」の一言で済ませるか、フェイクページに飛ばせばいいのです。


【サンプル】

http://neconote.jp/prg/login.php
 →
 
SSL
 
False

⓪SSL利用が必須
https://neconote.jp/prg/login.php
 →
 
GET
 
key
 
False

①第1キー:GET/POST
 
key
https://neconote.jp/prg/login.php?key=123
 →
 
You
 
need
 
to
 
make
 
a
 
cookie
 
key.
・SSLでは、GETパラメータ(?から右側)も暗号化されます。
・このキーをアドレス(URL)に追記しないと、何も進みません。
・ログインページ表示以降は、POSTパラメータで行います。

②第2キー:COOKIE
 
key
https://neconote.jp/prg/login.php?key=123&mk_cookie=abc
 →
 
A
 
cookie
 
key
 
was
 
made.
・COOKIEに第2キーを作成します。
・入力を間違ったら、ブラウザのCOOKIEを削除して、同じ作業を行います。

※運用時には、第2キーをD/Bで管理して、一度しか発行できないようにして、裏口(back
 
door)を閉じます。
※COOKIEが期限切れか、COOKIEを削除してしまうと、第2キーは無くなります。COOKIEの期限切れをさせないためには、ログイン成功時にCOOKIEの更新が必要です。

③第3キー:ユーザ名とパスワード
https://neconote.jp/prg/login.php?key=123
ユーザ名 :usr
パスワード:passwd
 正→
 
Login
 
Successful!
 誤→
 
Login
 
False

④第4キー:SESSION
 
key(内部キー)
・不正アクセスを想定してのキーです。

⑤同一ファイルのチェック
・不正アクセスを想定してのチェックです。


【フローチャート】

[⓪SSL]
 ◇─→
 
"SSL
 
False"
有│ 無
 ↓
session_start()
 ↓
[④SESSION
 
key]
 ◇────→[④SESSION
 
key=sesami]
無│ 有    ◇─→
 
"SESSION
 
key
 
False"
 │     正│ 誤
 │      ↓
 │     [⑤同一ファイル]
 │      ◇─→
 
"File
 
False"
 │     正│ 誤
 │      ↓
 │     [①POST
 
key=123]
 │      ◇─→
 
"POST
 
key
 
False"
 │     有│ 無誤
 │      ↓
 │      ★
 ↓
[①GET
 
key=123]
 ◇─→
 
"GET
 
key
 
False"
正│ 無誤
 ↓
 ★
 ↓
[②COOKIE
 
key]
 ◇─→[GET
 
mk_cookie=abc]
有│ 無 ◇─→
 
"A
 
COOKIE
 
key
 
was
 
made."
 │  無↓ 有
 │  "You
 
need
 
to
 
make
 
a
 
COOKIE
 
key."
 ↓
[②COOKIE
 
key=12345678]
 ◇─→
 
"COOKIE
 
key
 
False"
正│ 誤
 ↓
[③POST
 
usr/passwd]
 ◇─→[③POST
 
usr=usr/passwd=passwd]
 

無│ 有 ◇─→
 
"Login
 
Successful!"
 │  誤│ 正 
 │   ↓
 │  [SESSION
 
count++]
 │   ◇─→
 
"Login
 
False"
 │  内│ 外
 ↓   ↓
ログインページの表示


 なお、PHPプログラミングコードは、下記のテキストファイル(Shift_JIS)を参照して下さい。ご自由に加工してご利用下さい。
http://neconote.jp/prg/login.txt


P.S.
 
最近では、文字コードはもっぱらUTF8で作成しますが、テキストファイル(.txt)に対して各ブラウザの自動判別ではShift_JISとなり、UTF8では文字化けしますね。テキストエンコーディングを変更すれば、正常に見えますが、面倒です。なので、今回のサンプルPHPファイルおよびテキストファイルは、Shift_JISにしました。


P.S.2
 
Miさん、ガレコレの最高峰の技術の一つと謳っているミラージュシステムの仕様、当たりです。まあ、PHPをよく知っている方なら、気づきますよね。

 サーバのファイルシステムに関与して、ログインページのファイル名やコンテンツのディレクトリ名(フォルダ名)を変更します。アクセスキーを当てられる前に、存在を変化させて、アクセスキーも作り直します。

 例えば、サハラ砂漠のどこかのオアシスにお宝があるとします。そのオアシスは移動を繰り返すというお決まりの設定で、偶然に見つけたとしても、もたもたしている間に、消え去ってしまうというもの。

 それでも、D/Bやサーバ自体が乗っ取られたら無意味ですが、そこまで言ったらキリがない世界です。

 まあ、このレベルのシステムは、今のガレコレには不要です。いたちごっこに疲れて、今は公開データのみの『子猫の手
 
Ver.2(ニャン)』の運用のみですから。。。

 なんか、試作品、作り直すの馬鹿らしくなってきたニャー。今でも、きちんと動くかどうか確認したいだけなんだけどね。
 
お問い合わせ
by Network Communication Note