webサイトの認証機能の作り方 #1「セキュリティについて」

2021年10月3日

テクノロジー

eyecatch いろいろなサイトのログインIDとパスワードの管理がうんざりする、ユゲタです。 でも、実際に何かしらのWEBサービスを作るときは、認証機能を付けなくてはいけません。 だって使う人を特定してその人のデータと紐付ける必要があるから、どうしてもデータと一緒に格納しているユーザー番号が必要になります。 認証機能には、いろいろな会社が様々な方式で行っていますが、セキュリティの知識が乏しいとこの辺のシステムを公開するのも、まあまあしんどく感じるかもしれません。 ということで、これまで数々の認証機能を作ってきたユゲタが、 初心者でも簡単に作れる認証機能から、上場会社レベルの認証機能までを解説しつつ、独自で作れるログイン画面についてのレクチャーを何回かに分けてしてみたいと思います。

セキュリティについて

まずはじめに考えておきたいのはセキュリティについてですが、最も簡易で広く使われている認証システムは、ログインIDとログインパスワードを入力して、 サーバーに保存されているそれらの文字列と同じであれば、「認証成功」とするものですが、 過去に発生した個人情報漏洩で多いパターンとして、サーバーにおいてあるログインIDとパスワードを一覧で持っていかれてしまうというケースがあります。 これは過去に漏洩したID(多くの場合はメールアドレス)とパスワードのセットとなった一覧データを、総当たり攻撃する手法で「ブルートフォースアタック」と呼ばれる、 サーバーやシステムに対しての悪意的な攻撃で、この方法でそのサイトに対して、ログイン失敗する場合と成功する場合をデータにbooleanフラグを立てていきます。 出来上がった一覧リストが、そのサイトで事由にログインができる、有効パスワードリストとなるわけです。

攻撃に対応するためのシステム

これを防ぐセキュリティは、いくつか対応方法があるのですが、最も簡単なものとしては、同じユーザーが何度かログイン失敗した場合(3回ほどが適切)5分から1時間(中には24時間と言う場合もある)ほどのアイドルタイムを設けるようにする事で、 大量のアタックに対する効率を下げることができるようになります。 ただし、この方法は、IPアドレス、または、cookieを使ったやり方になるのですが、そのどちらも偽証することができるので、精度としては100%とは程遠いですね。 次にできる対策としては、2段階認証ですが、本人確認できる携帯電話にSMS送信をして、確実に本人を確認するという方法ですが、この方法はかなり大幅なシステム改修と、 事前に携帯電話などの電話番号など、IDとパスワード以外の情報を入力してもらっていなければいけません。 ユーザーの使いやすさを二の次にするのであれば、SMSではなく、メール宛に認証リンクを送信して、その時にログイン成功した場合のワンタイムURLアドレスを送信して、いちいちそれをクリックしてもらうという手段もありますが、 このやり方はセキュリティ的に有効なのですが、なかなかそこまでやっているサービスを見たことがないですね。 ユーザーが便利に使えて、且つ、セキュリティ防止力が高いとなると、利用されているブラウザが、認証フラグ(cookieやlocalStorage)を保持していればそれを本人確認として、 もし仮に認証フラグがない場合(新しくスマホやパソコンを買い替えた場合や、設定をクリアしてしまった場合)のみに、メール認証を送付するというやりかたであれば、 かなり有効かもしれません。 この辺は、いろいろなロジックを考えて、ユーザーライクと、高セキュリティとのバランスがうまくとれたシステムがあれば、今後広く採用されるかもしれませんね。

wordpressのセキュリティ

webサイト構築を簡易にするためのシステムで、一番世の中で使われているのはwordpressなのだそうですが、 標準で使うwordpressは、攻撃などに対しては、防御力があまり高くなく、簡単にハッキングされてしまうという事もよくあるようです。 実際にどういう被害にあってしまうかというと、
  1. ログインできない
  2. 何もしていないのにサイトが変わった(たとえば、ホームページが静的ページに置き換えられたり、新しいコンテンツが追加されたり)
  3. 別のサイトにリダイレクトされている
  4. あなたや他のユーザーがサイトにアクセスしようとすると、ブラウザに警告が表示される
  5. サイトを検索すると、ハッキングされた可能性があるという警告がGoogleから表示される
  6. セキュリティプラグインから違法行為または予期しない変更についての通知を受け取った
  7. ホスティングプロバイダーから、アカウントの異常なアクティビティが警告された
参考 : WordPressサイトのハッキング対処—サイトの危機的状況で何をすべきか 怖いですねえ。 ちなみに、プロバイダーなどから警告を受け取った次には、アカウント停止処理が取られてしまうので、 こうした被害には絶対に会いたくないですね。 ちなみに、ハッキングした人は、その後何をしているかというと、 自分名義ではないサーバーから、大量の詐欺メールなどを世界中に配信しているということなんですね。 むしろ名義が自分であるとすると、詐欺に加担したという事実になりかねません。 ユゲタがwordpressを初心者が使うことはあまりオススメできないのも、この点があるからかもしれません。 あまり、怖い話ばかりしても仕方がないのですが、こうした事を知らずに使って被害に遭う事の方が怖いので、webで何かシステムを公開するときには、必ずセキュリティを真っ先に学習しておくというのは、 今どきのセオリーなのかもしれません。

最後に

セキュリティを学習しようと思ったら、とにかくあまりの学習ボリュームの多さにうんざりしてしまうかもしれませんが、 今回は認証機能を作ることを前提としているので、まずはログイン機能に関してのセキュリティの触り程度を簡単に説明してみました。 世の中にはいろいろな攻撃があり、その防止方法もどんどん生まれています。 その技術で特許をとって、大きな会社に成長いしているケースもあるので、興味のある人はこの分野だけでも追求してみると面白い技術学習ができるかもしれませんね。 初回からかなり、濃い話になってしまいましたが、次回は、認証システム(ログインシステム)を自分で作るときの、データの話をしてみたいと思います。 もっと聞かせて欲しい話があるという人はお気軽にお問い合わせに投稿ください。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ