実現したいこと
会員登録・ログイン機能を PHP で作成したいと考えております。
発生している問題・分からないこと
大手の会員登録サイトを見るとユーザーIDとパスワードとメールアドレスを入力後にメール送信を行い、メールアドレスに届いた認証コード入力して登録成功という仕組みになっているようですが、認証コードのみでセキュリティを強化できるのでしょうか?
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
認証機能や会員登録機能について調べてみたところ認証コードを送信するというタイプのものがなくセキュリティ対策として最適なのか疑問です。
補足
※参考サイト
https://begginerkun.hatenablog.com/entry/2022/06/08/110752
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答5件
0
あえて一般論から書き始めますが、「何のサービスも提供しないことで、セキュリティ問題が発生することそのものを避ける」という手段を除いて、あらゆるセキュリティ手段は特定の種類の脅威への対策です。
そして、「何一つ意味がない、おまじないレベルのもの」や「セキュリティ対策のつもりが別な脆弱性になっていたもの」などは論外として、有意なセキュリティ対策の評価は、見込める効果のみならず、実装の手間・運用コスト・ユーザーへの影響などを考えた総合的なものとなります。たとえば、「2段階認証でSMSを必須とする」ような対策は、銀行であれば求められるかもしれませんが、コミュニティサイトではユーザーにかける手間やコスト問題で不適当となるかもしれません。
極端な話、「登録フローを面倒にする」ような技術的要素が弱い「対策」でも、「カジュアルな荒らしの登録を減らす」という観点で見れば有効ということがありえます。
「認証コードのみでセキュリティを強化できるのでしょうか?」とありますが、少なくともこの対策はゼロやマイナスにはならないものです。どのような攻撃に対するどの程度の防御になるのか(もし、全く意味がないという結論に至ったとしたら、その推論の過程はどのようなものか)、それを考えてみましょう。
投稿2025/04/15 13:12
総合スコア146505
0
他の方の回答とだいたい同内容ですが、簡単にまとめると、
● 「会員登録」で、入力されたメールアドレスにコード送信
これは、主に入力されたメールアドレスが正しいものであるかどうかを確認するためのものであり、基本的にはこの部分のセキュリティは重要ではありません。
● 「ログイン」で、登録されたメールアドレスにコード送信
これは、「二要素認証」のための手順であり、utm.さんの回答にあるとおり、所持を確認するためのものです。この部分でのセキュリティは、入力回数制限/タイムアウトとコードのリセットで充分な強度が得られます。
投稿2025/04/15 01:25
総合スコア14238
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
※ガバガバ回答します
認証によるセキュリティには
記憶、所持、生体認証(生物的な認証)があります、
パスワードの入力、キーワードの入力(昔飼ってたペットの名前だとか誕生日だとか)は記憶になります。
簡単に盗むことや予測することが出来ます
メールアドレスでの認証、ワンタイムパスワード(使い捨てできる保有パスワード)などは所持になります、
ユーザーを認証する上で乗っ取りや物理的な盗難、盗聴出ない限り突破することは難しいです、
生体認証は指紋、虹彩、声などがあります。
忘れたり、失ったりしないものの、同様にコピーして、盗むことは出来ます。
さて、質問にあるようなパスワードの入力時のメール認証ですがこれは、ユーザー登録の際に「そのメールアドレスが実際に使われており、ログインユーザが所持しているものか」を判別するものです。
セキュリティの観点からみて、流用できますがメールアドレスが生きているか確認するものであり、質問の内容としては若干の違和感はあります。
投稿2025/04/14 16:43
総合スコア752
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
認証コードのみでセキュリティを強化できるのでしょうか?
どこが質問ポイントなのか2通りありそうです。どっちですかね?
・メールアドレスの検証をすることに意味があるのか?
・メールアドレスを検証はするのだが、その際に、メール中の長いURLクリックでなく、数桁の認証コードで十分なのか?
・メールアドレスの検証をすることに意味があるのか?
メインは、誤ってタイプミスのメールアドレスを登録してしまうことの防止でしょう。
メールアドレスを手打ちする人は少なからずのようです。コピペでもコピーミスで1文字少ないとかあり得ます。
誤登録のメールアドレスがたまたま実在の他人のメールアドレスだったりすると、その人にアカウントを乗っ取られてしまう可能性もあるので、そういう意味ではセキュリティー対策とも言えます。メールアドレスがそのままidになっているケースとか、そうじゃなくてもidが書いてあるメールが送られるようだとパスワード再設定出来そうです。
・メールアドレスを検証はするのだが、その際に、メール中の長いURLクリックでなく、数桁の認証コードで十分なのか?
何文字以上あれば安全で、何文字以下であれば危険という境目はないので、程度の問題としか言い様が無いです。
ただ、赤の他人がメールを受け取ってその認証コードを使おうとしても、おそらくいま認証コード入力待ちのセッションを乗っ取らないと駄目な気がするので、短くても良いのかもしれません。厳密に考え出すと切りが無いですが。
長いURLクリックは、PCで登録作業して、スマホに届いたメールのURLをクリックして通ったことがあるので、少なくともその場合はセッション乗っ取り不要ということだと思います。
また、「メール中の長いURLクリック」の方が利用者は楽でしょうが、不正メール対策で「メール中のURLクリックはしない主義」の人もいるかも知れません。「メール中のURLクリックは原則はしないが、必要があれば十分確認してから」という普通の人の場合は、HTMLメールだったりすると「本当のリンク先」を確認するのが面倒なので、テキストメールが良いかと思います。
投稿2025/04/14 14:29
総合スコア86255
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
6桁の数値を返すなら100万通りの確率になります。一時的な確認には十分な提案でしょう。Eメールで言うとパスワードの変更(パスワードを忘れたときなど)にも使われており、Eメールの個人特定と利便性を活用する必要十分な仕組みだと言えます。逆にいえばEメールサーバーへのログインについては個人の責任でセキュリティを管理してくださいという切り分けになります。ランダム攻撃の防止用にリトライ回数制限や失敗回数でのロック機能などは別途検討が必要です。
100万通りを安全でないとするならもちろん入力を英数記号まで拡張したり桁数を増やせばセキュリティはあがりますが、数字以外の入力はミスを誘発するためフールプルーフとしては推奨されません。
投稿2025/04/15 00:30
編集2025/04/15 00:32総合スコア117548
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/04/15 13:19
2025/04/16 04:16