安全なWebアプリケーションがどのように開発されるかを学びたいと思っています。特に、クライアントからサーバーにパスワードが送信される方法がわかりません。一般的なユーザー/パスワードのログインフォーム。クライアントがHTTPS経由でPOSTリクエストでプレーンテキストのユーザー/パスを送信する場合。これで十分ですか?サーバーがbcryptのようなものを使用して保存されたソルトでプレーンテキストのパスを十分な反復でハッシュすることを考慮してください。
このシナリオは十分に安全ですか? SQLインジェクション、XSSなどの他の攻撃ベクトルを無視します。POSTリクエストでSSLを介してプレーンテキストのパスワードを送信することで十分安全かどうか、または他のセキュリティが必要かどうかを確認します。クライアント側で。
はい、POST
を使用してHTTPS
で情報を送信するのが一般的な方法です。
@Terryの回答を完了するには:POST HTTPSでユーザー名とパスワードを送信することはtypicalの方法だけではありません)完了しました。また、正しい方法でもあります。これにより、期待できる最高のセキュリティが得られます。セキュリティ」ではありませんが、これ以上うまくやるのは難しいでしょう。実際、クライアント側でWebコンテキストで行うことは、サーバー自体からのJavascriptを使用する必要があります。同様に、認証が実行された後も、そもそも認証を保証するのに十分な機密性のあるデータを送信する必要があります。したがって、悪意のある盗聴や改ざんを防止するために十分に安全なHTTPSに依拠する必要があります。
shoulder surfers を阻止するために、パスワード入力フィールドが「非表示」になっていること、つまり、ユーザーが入力した文字の代わりに箇条書きまたは星を表示することを確認します。基本的なキーロガーを阻止するための「ビジュアルキーボード」など、銀行が好む追加の仕掛けは、通常 努力する価値はありません です。
はい、伝送チャネルポストとHTTPSを介してユーザーの資格情報を保護することで十分です。ただし、ID管理は非常に大きなトピックであり、考慮が必要な他の多くの攻撃ベクトルがあります。詳細については this を参照してください。
実際にはHTTPSを使用するのが慣例ですが、ユーザーと彼自身のパスワードを保存するために、暗号機能を置き換えるべきではないと思います!
SQLi、XSS、XSEに対して、私は https://owasp.org/ を読むことをお勧めします