web-dev-qa-db-ja.com

パスワードなしのログイン機能を安全に実装する方法はありますか

新しいプラグインを投稿しました: これ以上パスワードはありません

プラットフォームへのログインは重要な問題であり、セキュリティホールがあるかもしれないものをリリースしたくないので、私は現在それをベータ版とタグ付けしています。だからここに私のクエリです:

安全ですか?

セキュリティを確保するために、次のことを行いました。

  1. ユーザー名/パスワードはやり取りされず、一意のハッシュのみが渡されます。
  2. ハッシュは一度使用されるとデータベースから削除されますが、使用されていない古いハッシュはデータベースがハッキングされない限り使用できませんが、それより大きな問題があります。
  3. ハッシュに対するすべてのデータベースクエリはXSS攻撃を防ぐためにエスケープされています。
  4. nonceがajax呼び出しに追加されました。
  5. cSRF攻撃を防ぐために、モバイルエンドにナンスと確認が追加されました。

ここで私は それがどのように働くかについての完全な説明を持っています

次のバージョン私はTwitter経由で認証を実装したいと思っています、なぜならiOSは現在それがうまくいっているからです...

事前にご意見をいただきありがとうございます。

編集:私は追加された層として、私がQRコードログインを開始したブラウザと同じブラウザログインであることを確認するためにsessionIDチェックを追加することにしました。

10
jackreichert

(私は代替ログインスキームを吸っています)

DBのエスケープに関する若干の注意点:

  • あなたはmysql_real_escape_string()を直接使います。推奨される方法は$wpdb->prepare()またはesc_sql()を使用することです。

  • UPDATEクエリは$wpdb->update()によって最もよく処理されます。

5
scribu

私はそれが素晴らしいアイディアだと思いますが、いつものように最大の弱点は人的要因です、この場合それは電話自体が紛失、盗難または傍受されることでしょう。 SMS確認コード(gmailなど)のように、2層認証を追加することを検討しましたか。あるいは、もっと簡単な方法は、cookie + secret Wordです。

また、あなたはあなたのアバウトページでどのアルゴリズムがQRコードを生成しているかについて言及することができますか?

5
Wyck