認証システムはよくライブラリや外部サービスを使っているケースが多いように感じます。
例えばRubyのdevise、Auth0など
しかしシンプルな認証システムを自前で作成することは危険なのでしょうか?
例えばですが、
- メールアドレスとパスワードでログイン
- パスワードはハッシュ化して保存し、ハッシュ値が同じであれば認証成功とみなす
- 認証成功後はブラウザのcookieに認証情報を暗号化したものを保存し、以後そのcookieをみて認証済みかどうか判断する
上記のような一般的な認証システムを実装することはそこまで大きな労力には感じませんが、それをすることで冒頭に挙げたようなライブラリや外部サービスを使うより危険なことがあるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
上記のような一般的な認証システムを実装することはそこまで大きな労力には感じませんが、それをすることで冒頭に挙げたようなライブラリや外部サービスを使うより危険なことがあるのでしょうか?
要件定義や設計が完了しているのであれば、確かに労力はそれほどかからないと思います。
が、認証システム(というか、会員管理システム)は適切に設計することすら大きな労力を伴います。
システムのセキュリティ精度を一定以上に保つためには脅威分析を行わねばならず、脅威分析を行うには、脅威自体を網羅的に知る必要がありますが、この「網羅的に脅威を知る(洗い出す)」という行為が非常にハードルが高いです。
情報の性質として仕方ないのですが、クローズドな情報として扱われるケースが多く、この部分において、セキュリティの専門家と一般エンジニアの持つ情報量の乖離は絶望的です。。。
シェアの大きなフレームワークや有名ライブラリでは、この部分を集合知で乗り切ろうとしています。
コードをオープンにすることで、クローズドな情報も持った方からも実装の提案を受けやすくし、「それなりに安全なシステム」として成立できる程度を結果として保てるようになります。
ごく一般論としてですが、集合知によってなされたコード群の背景にある要件は、一般システムの持つ要件を包括しています。そのため、(ホントに要件を満たしているかの確認は必要ですが)自前で実装するよりもはるかに安全に使用することが可能です。
個人的には、フレームワークやライブラリが、その実装の背景にある要件や設計を明文化していないケースが多いのが不満ですが、それでも実利を考えると、フレームワークの使用やライブラリの使用をオススメします。
投稿2020/08/20 07:46
退会済みユーザー
総合スコア0
0
一昔前では、自前で作るのが当たり前だったわけですから、
アプリケーションを作る事自体はそんなにハードルは高くないでしょう。
ノウハウなどを勉強するための情報も、十分にあると思います。
どうしても不安なら、セキュリティに強い会社に相談してもいいでしょうし。
結局、運営側で一番嫌な事ってのは、**「個人情報を自分たちの管理下で持つ」**ってところなんですよね。
クレデンシャルの情報もそうですし、カード番号などもなるべく持ちたくありません。
アプリがセキュアでも内部の人間が業者に売り飛ばすかもしれませんしね。
そういう意味でも、外部に委譲した方が楽な事が多いってだけです。
あと、TwitterやFacebookなどの有名なサービスでのOAuthが用意されていると、
ユーザーの会員登録へのハードルが下がるという効果もあるかもしれませんね。
投稿2020/08/20 05:53
編集2020/08/20 06:37総合スコア4666
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
危険になるかどうかは質問者さんの技量次第です。
例えば、攻撃方法や防御方法を熟知した上で作成するなら、既存のより圧倒的に柔軟性の高いのができると思いますが、それらを持ち合わせていない・自信がないなら避けるのが無難だと思います。
投稿2020/08/20 05:18
総合スコア10429
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/20 05:24 編集
退会済みユーザー
2020/08/20 05:25
2020/08/20 05:31
2020/08/20 06:27
0
認証成功後はブラウザのcookieに認証情報を暗号化したものを保存し、以後そのcookieをみて認証済みかどうか判断する
これだけだと、cookieを「盗まれる」ような事があると不正ログインに使用される事がありますね。
だから、その認証を失効させる手段が必要な訳です。
(OAuthなんか使ってるとそういうページありますよね。)
で、cookieが盗まれる、というのはそのシステム側だけでなく、ブラウザ側のバグにより漏れる事があったりもするので、そういったシーケンスもろもろ合わせて使用する(つまりは、〇〇ライブラリを使う)というような話になる訳です。
投稿2020/08/20 05:23
総合スコア1305
0
実装上の問題もありえますが、設計上の問題が大きそうですね。
パスワード保護だけとっても、単に「ハッシュで保存すればよい」というものではありません。このテーマでYouTube動画を作ったものがありますので、よろしければどうぞ。3本でトータル35分くらいかかります。
投稿2020/08/20 12:49
総合スコア11705
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/08/20 07:53 編集