質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.32%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

5回答

447閲覧

会員登録・ログイン機能を PHP で作成する場合どのような方法がよいでしょうか?

homepage-site

総合スコア65

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2025/04/14 13:25

実現したいこと

会員登録・ログイン機能を PHP で作成したいと考えております。

発生している問題・分からないこと

大手の会員登録サイトを見るとユーザーIDとパスワードとメールアドレスを入力後にメール送信を行い、メールアドレスに届いた認証コード入力して登録成功という仕組みになっているようですが、認証コードのみでセキュリティを強化できるのでしょうか?

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

認証機能や会員登録機能について調べてみたところ認証コードを送信するというタイプのものがなくセキュリティ対策として最適なのか疑問です。

補足

※参考サイト
https://begginerkun.hatenablog.com/entry/2022/06/08/110752

https://note.com/koushikagawa/n/n9c6e396e2687

https://kekenta-it-blog.com/php-login-app/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

あえて一般論から書き始めますが、「何のサービスも提供しないことで、セキュリティ問題が発生することそのものを避ける」という手段を除いて、あらゆるセキュリティ手段は特定の種類の脅威への対策です。

そして、「何一つ意味がない、おまじないレベルのもの」や「セキュリティ対策のつもりが別な脆弱性になっていたもの」などは論外として、有意なセキュリティ対策の評価は、見込める効果のみならず、実装の手間・運用コスト・ユーザーへの影響などを考えた総合的なものとなります。たとえば、「2段階認証でSMSを必須とする」ような対策は、銀行であれば求められるかもしれませんが、コミュニティサイトではユーザーにかける手間やコスト問題で不適当となるかもしれません。

極端な話、「登録フローを面倒にする」ような技術的要素が弱い「対策」でも、「カジュアルな荒らしの登録を減らす」という観点で見れば有効ということがありえます。


「認証コードのみでセキュリティを強化できるのでしょうか?」とありますが、少なくともこの対策はゼロやマイナスにはならないものです。どのような攻撃に対するどの程度の防御になるのか(もし、全く意味がないという結論に至ったとしたら、その推論の過程はどのようなものか)、それを考えてみましょう。

投稿2025/04/15 13:12

maisumakun

総合スコア146505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2025/04/15 13:19

> 参考サイトを見たところ認証コードを入力させるものがなくセキュリティ対策として十分なものか疑問です。 「ゼロデイアタック」といって、攻撃者のほうが先にソフトウェアの脆弱性を見つけ出して、対策がなされていないところに攻撃を仕掛けてくる、という事例も決して珍しくありません。「書かれていないから無意味」というのは、正しい態度ではありません。
homepage-site

2025/04/16 04:16

maisumakunさん回答ありがとうございます。 皆さんからアドバイス頂いた対策についてどのような意図があるのか調べながら整理してみます。 攻撃手段についても調べておいた方が良さそうですね…
guest

0

他の方の回答とだいたい同内容ですが、簡単にまとめると、

● 「会員登録」で、入力されたメールアドレスにコード送信
これは、主に入力されたメールアドレスが正しいものであるかどうかを確認するためのものであり、基本的にはこの部分のセキュリティは重要ではありません。

● 「ログイン」で、登録されたメールアドレスにコード送信
これは、「二要素認証」のための手順であり、utm.さんの回答にあるとおり、所持を確認するためのものです。この部分でのセキュリティは、入力回数制限/タイムアウトとコードのリセットで充分な強度が得られます。

投稿2025/04/15 01:25

TakaiY

総合スコア14238

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

homepage-site

2025/04/15 02:39

TakaiY さん回答ありがとうございます。 認証コードはメールアドレスを確認するものでセキュリティ対策にはならないんですね勉強になりました。 ログインの度にメールが送られてくるものがあって気になっていたのですがセキュリティ対策用だったのを初めて知りました、二要素認証が一番セキュリティ対策として良さそうですね。
TakaiY

2025/04/15 07:24

> 認証コードはメールアドレスを確認するものでセキュリティ対策にはならないんですね ちがいます。そんなことは書いてないつもりです。 > ログインの度にメールが送られてくるものがあって気になっていたのですがセキュリティ対策用だったのを初めて知りました 2要素認証とはまったく関係ありませんが、漏洩や乗っ取りに遭った場合に気づくための措置です。 > 良さそうですね 質問の主旨とは違うし、勘違いされているようにも思ってちょっと心配です。
homepage-site

2025/04/16 04:12

TakaiYさん回答ありがとうございます。 認証コードはなりすまし対策として有効なようですね勘違いしておりました申し訳ありません。 2要素認証について認識の違いがあったのですが、ログインの度にコードを送信してそれを入力させるということでしょうか?
TakaiY

2025/04/16 04:38

> ログインの度にコードを送信してそれを入力させる はい、そうです。 そうすることで、パスワードを盗み見られても勝手にログインされる心配はなくなりますので、強度が高いということです。
guest

0

※ガバガバ回答します

認証によるセキュリティには
記憶、所持、生体認証(生物的な認証)があります、

パスワードの入力、キーワードの入力(昔飼ってたペットの名前だとか誕生日だとか)は記憶になります。
簡単に盗むことや予測することが出来ます

メールアドレスでの認証、ワンタイムパスワード(使い捨てできる保有パスワード)などは所持になります、
ユーザーを認証する上で乗っ取りや物理的な盗難、盗聴出ない限り突破することは難しいです、

生体認証は指紋、虹彩、声などがあります。
忘れたり、失ったりしないものの、同様にコピーして、盗むことは出来ます。

さて、質問にあるようなパスワードの入力時のメール認証ですがこれは、ユーザー登録の際に「そのメールアドレスが実際に使われており、ログインユーザが所持しているものか」を判別するものです。
セキュリティの観点からみて、流用できますがメールアドレスが生きているか確認するものであり、質問の内容としては若干の違和感はあります。

投稿2025/04/14 16:43

utm.

総合スコア752

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

utm.

2025/04/15 01:44

あ、ログインの話をしているのか。 自分の方で整理出来てませんでした...
homepage-site

2025/04/15 02:53

utm. さん回答ありがとうございます。 認証でも3通りセキュリティ対策があるんですね勉強になります。 セキュリティ対策として二要素認証、パスワード紛失時の再設定として認証コードを考えてみます。
guest

0

認証コードのみでセキュリティを強化できるのでしょうか?

どこが質問ポイントなのか2通りありそうです。どっちですかね?
・メールアドレスの検証をすることに意味があるのか?
・メールアドレスを検証はするのだが、その際に、メール中の長いURLクリックでなく、数桁の認証コードで十分なのか?

・メールアドレスの検証をすることに意味があるのか?
メインは、誤ってタイプミスのメールアドレスを登録してしまうことの防止でしょう。
メールアドレスを手打ちする人は少なからずのようです。コピペでもコピーミスで1文字少ないとかあり得ます。

誤登録のメールアドレスがたまたま実在の他人のメールアドレスだったりすると、その人にアカウントを乗っ取られてしまう可能性もあるので、そういう意味ではセキュリティー対策とも言えます。メールアドレスがそのままidになっているケースとか、そうじゃなくてもidが書いてあるメールが送られるようだとパスワード再設定出来そうです。

・メールアドレスを検証はするのだが、その際に、メール中の長いURLクリックでなく、数桁の認証コードで十分なのか?

何文字以上あれば安全で、何文字以下であれば危険という境目はないので、程度の問題としか言い様が無いです。
ただ、赤の他人がメールを受け取ってその認証コードを使おうとしても、おそらくいま認証コード入力待ちのセッションを乗っ取らないと駄目な気がするので、短くても良いのかもしれません。厳密に考え出すと切りが無いですが。
長いURLクリックは、PCで登録作業して、スマホに届いたメールのURLをクリックして通ったことがあるので、少なくともその場合はセッション乗っ取り不要ということだと思います。

また、「メール中の長いURLクリック」の方が利用者は楽でしょうが、不正メール対策で「メール中のURLクリックはしない主義」の人もいるかも知れません。「メール中のURLクリックは原則はしないが、必要があれば十分確認してから」という普通の人の場合は、HTMLメールだったりすると「本当のリンク先」を確認するのが面倒なので、テキストメールが良いかと思います。

投稿2025/04/14 14:29

otn

総合スコア86255

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

homepage-site

2025/04/15 02:34

otn さん回答ありがとうございます。 メールアドレスの検証をすることに意味があるのかの方になります。 参考サイトを見たところ認証コードを入力させるものがなくセキュリティ対策として十分なものか疑問です。 パスワードの再設定は導入すべきだと思っていたのですが、その場合はメールアドレスを ID にした方が有効だと覚えておきます。 認証コードの入力に30秒以内など時間制限を設けた方がセッション乗っ取り対策になりということでしょうか? URL を踏ませてクリックさせることでセキュリティ対策になると思っていたのですが、テキストメールでも問題ないのですね…
otn

2025/04/15 04:58 編集

> メールアドレスの検証をすることに意味があるのかの方になります。 であれば、検証方法は質問と関係ないということでは? > 参考サイトを見たところ認証コードを入力させるものがなくセキュリティ対策として十分なものか疑問です。 いずれの方法でも誤ったメールアドレスを登録してしまうことの防止にはなるのでどちらでも同じかと。 > パスワードの再設定は導入すべきだと思っていたのですが、その場合はメールアドレスを ID にした方が有効だと覚えておきます。 どこからそう思ったのですかね?どんな有効性があると思うのでしょうか? ・メールアドレスをIDにする・・・・利用者は新たにIDを覚えなくて良いので楽だが、メールアドレスは公知な情報 ・独自にIDを決めてもらう・・・・利用者は新たにIDを覚える必要が出てくるが、公知な情報では無いのでセキュリティー的には多少まし > 認証コードの入力に30秒以内など時間制限を設けた方がセッション乗っ取り対策になりということでしょうか? セッション乗っ取り対策はいずれにせよすべての場面に置いて必要です。制限時間を設けることで、セッション乗っ取り対策に穴があった場合でも乗っ取りリスクを減らすことは出来ると思いますが。 そもそも、「登録しようとした人のメールアドレス入力ミスで、たまたま認証メールを受け取ってしまった赤の他人が、その登録ミスした人のセッションを乗っ取ろうとその瞬間に思いつく」ことがあったにせよ、サイト名が分かっても、どこの誰とも知れぬ人のセッションを乗っ取るのは無理な気がします。 > URL を踏ませてクリックさせることでセキュリティ対策になると思っていたのですが、テキストメールでも問題ないのですね… URLをクリックさせるメールが、HTMLメールでくると、普通は「詐欺メール」と思っちゃうので、HTMLメールは避けた方が良いでしょうね。クリックさせる部分が、AタグでなくてテキストだけでURLを書いてあるのならいいですが、テキストメール中にURLがあると自動的にリンクにしてくれるメールソフトもあるのでテキストメールの方が親切です。 「利用者はセキュリティー意識の低い人ばかりである」という前提があるならHTMLメールでも良いかと。
homepage-site

2025/04/16 05:17

otnさん回答ありがとうございます。 検証方法については別途お聞きすべきでした申し訳ありません。 「メールアドレスがそのままidになっているケースとか、そうじゃなくてもidが書いてあるメールが送られるようだとパスワード再設定出来そうです。」と教えていただいたので、メールアドレスをそのままidにした方がよいのではないかと思い込んでおりました… セッション乗っ取り対策として時間制限は他の登録サイトを見てから決めてみます。 詐欺メールと考えてクリックしないという考えはありませんでしたが、アドバイスを頂いてテキストメールにすることに決めました。
guest

0

6桁の数値を返すなら100万通りの確率になります。一時的な確認には十分な提案でしょう。Eメールで言うとパスワードの変更(パスワードを忘れたときなど)にも使われており、Eメールの個人特定と利便性を活用する必要十分な仕組みだと言えます。逆にいえばEメールサーバーへのログインについては個人の責任でセキュリティを管理してくださいという切り分けになります。ランダム攻撃の防止用にリトライ回数制限や失敗回数でのロック機能などは別途検討が必要です。

100万通りを安全でないとするならもちろん入力を英数記号まで拡張したり桁数を増やせばセキュリティはあがりますが、数字以外の入力はミスを誘発するためフールプルーフとしては推奨されません。

投稿2025/04/15 00:30

編集2025/04/15 00:32
yambejp

総合スコア117548

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

homepage-site

2025/04/15 02:43

yambejp さん回答ありがとうございます。 パスワード再設定の方法として認証コードは有効ということで覚えておきます。 ランダム攻撃の防止用にリトライ回数制限や失敗回数でのロック機能、その他にも有効なものがないか調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.32%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問