今までセキュリティの方での実装経験などがなく知識が追いついてません。しかし、今度のプロジェクトでセキュリティ面を意識する事になりました。
今まで調べてきた事、方向性がこれで妥当かどうか(決して全くサイバーに合わない処理と言っている訳ではありません。あくまで基本的な処理が入っているかの確認をしていただけると嬉しいです。)みていただきたいです。よろしくお願いします。
現在の知識の箇条書き
・セキュリティの100%はない。Googleの大手でさい、日々セキュリティ対策に勤しんでいる。なぜなら、新しいセキュリティ対策をしても常に新しくセキュリティを解除するサイバー達が沢山いるから。
・大事なものはiosならキーチェーンなどを使い値を保存した方が、普通に端末に保存するUserDefaultsよりはるかにセキュリティを高くして保存できる(なぜなら、アプリ内で保存するのではなく、端末自体に保存なので、ハッカーも手を出しにくい。)
・アクセストークン、リフレッシュトークンには必ず期限がある。(なぜなら、もし仮にハッカーに取られてしまっても期限があればずっと悪用できないから)
・APIを使い情報を個人の情報をもらうときはアクセストークン(期限短い)方を付与。アクセストークンの期限切れと同時にリフレッシュトークン(期限が長い)をサーバーに要求。こうする事で常にweb上を行き来しハッカーに取られやすいアクセストークンが仮に取られてしまってもリフレッシュトークンが取られない限り悪用は短い期間ですむ。
・証明書の作成。証明書とは印鑑証明書のようなもの。しかし、この実装の方法や流れはまだ掴めていません。
今回セキュアにしたい情報
アクセストークン
リフレッシュトークン
現在考えている実装の流れ
アクセストークン(期限短い)、リフレッシュトークン(期限長い)をユーザーのパスワードとメールアドレスをサーバーに送り発行してもらったものをキーチェーンを使い端末に保存。
APIによる情報をもらうときはアクセストークン付与で個別の情報をもらい、アクセストークンの期限が切れたときはリフレッシュトークンで、また新たにアクセストークンとリフレッシュトークンを取得端末に保存。さらにリフレッシュトークンが切れた際にはログイン画面からやり直してもらう。
さらに、ログイン時には必ずログインされたメールアドレスあてにログインしましたの報告をする。(この事で、ログインしていないはずの方がログイン(悪用)されていたらそのアカウントを止める事ができ、悪用が短い期間ですむから。)
懸念点と考えていること
今回証明書の使い方が理解できなかった事もありますが、今回使う情報で、クレジットカードの番号などはなく、会社の情報やメールアドレスとパスワードなので、強烈にハッカーに狙われ、損害がそれほど多くなりそうではないので、これぐらいのセキュリティが妥当かと思いました。一番はあくまで乗っ取りが怖かったのでその対策にメールアドレスでログインの確認などを入れたいと思いました。
アクセストークンとリフレッシュトークンに関しては期限を1日と1週間ほどと考えていますが、これはちょうどいいのか、短いのか長いのかが正直わかりませんでした。
長い文書読んでいただきありがとうございます。結構長い間色々調べても妥当性がわからなく、今回相談させていただきました。よろしくお願いします。
あなたの回答
tips
プレビュー