.htaccessによるBasic認証


ログインシステムを5分で実装しろ

え、無理ですよ、そんなの
データベースにテーブル作って…
パスワードはハッシュ化して…
フォームやクエリからの攻撃を防いで…

え?今回はごく一部の人が使うシステムだから
セキュリティはガバガバでも良い?

じゃぁ、できます

basic認証とは

Base64という暗号形式を利用したログインシステムで
.htaccessにちょいちょいと記述するだけで完成する。
でもセキュリティは弱い。

どうやって作るの?

まずは.htpasswdというテキストファイルを作成し
その中にユーザーのID:Base64で暗号化されたパスワードという感じに書く。

例えばユーザーIDはtadanohito、パスワードはhimitudesuだったとする。
このユーザーIDとパスワードをBase64で暗号化するとd31esqz2hqswUとなる。
(Base64の暗号化は無料のwebアプリがあるので、それを利用すると良い。)
その場合の記述は

.htpasswd
tadanohito:d31esqz2hqswU

となる。
もしユーザーを増やしたいなら、改行して追記していくだけで良い。

そしたら.htaccessファイルに

.htaccess
AuthUserfile /admin/system/.htpasswd
AuthGroupfile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

と記述する。
それぞれ解説をすると

AuthUserfile
  .htpaccessのあるパスを書く。

AuthGroupfile
  グループファイルのあるパスを書く
  のだが、グループファイルなど作らなくても良いので
  /dev/nullと書けば良い。

AuthName
  認証時に表示する文字列を書く。
  日本語で書くと文字化けする可能性が高いので
  英語で簡単に書くと良い。

AuthType
  認証方法を書く。
  BasicDigestのどちらか選択出来て
  Basicの場合はパスワードをBase64で暗号化
  Digestの場合はパスワードをMD5で暗号化
  しなければならない。

require
  認証を通すユーザー名を書く。
  valid-userと書くと全員が通る。
  user ユーザー名と書くと、そのユーザーしか通らなくなる。

サーバーに2つのファイルをアップロードして完了

プログラミングすることなく、これでログインシステムの完成!
多分カップラーメン茹で上がるより早く完成する。

編集後記

入社5日目
今日から管理システムページを0から作ることになって
そのログインシステムをbasic認証で実装しました。

上司「basic認証で良いよ」
僕「basic認証…?」
上司「ググれ」

となったので、少し調べてみました。
めちゃ簡単でした。