2016-08-29 5 views
-1

私は、Html、Css、Javascript、およびPhPを使用している小さなウェブサイトを持っています。 Webサイトには、ユーザーがパスワードを入力する必要がある基本ログインページが含まれています。その後、パスワードはphpに送られ、phpはSHA-512を使用して暗号化され、データベースに追加されます。Javascriptまたはバックエンドでログインパスワードを暗号化する必要がありますか?

私は不思議に思った。これは物事をするための好ましい方法ですか?私はjavascriptを使ってパスワードを暗号化し、それがすでに暗号化されているときにphpに送る方が良いかもしれないと思った。少なくともそのように、元のパスワードはPOSTリクエスト内にはありません。

本当に正しい方法ですか?誰かが私が使っている暗号化の種類を見ることができれば悪くないですか?

+1

正確な方法は、HTTPSを使用して通過中のパスワードを保護し、パスワード用に作成されたサーバ側の低速ハッシュアルゴリズムを使用することです(* SHA256以外のSHAファミリのメンバー、高速ハッシュ、塩を有する)。 –

+0

@ AlexanderO'Mara私はHTTPSを使用しています。私はちょうどハッシュが行われるべきであるかと思っていた。どんなハッシュでも。 – TheCrafter

+1

ユーザーのパスワードを保護するために単純なハッシュ関数を使用しないでください。 PBKDF2、bcrypt、scrypt、Argon2などの強力なハッシュスキームを使用する必要があります。コスト係数/反復回数が高いことを確認してください。 1回の反復で少なくとも100msかかるようにコストを選択するのが一般的です。詳細:[パスワードを安全にハッシュする方法](http://security.stackexchange.com/q/211/45523) –

答えて

1

暗号化されたものがクライアント側で何も解決しないことに気づかなければなりません。何かを暗号化して送信し、サーバーがそれを使ってユーザーを認証すると、その暗号化された値は事実上のパスワードになります。攻撃者は、要求を傍受し、暗号化されたパスワードを読み取り、同じ要求を再度送信すればよいだけです。 クライアントサイドを暗号化することで何も得られません。

暗号化されたパスワードハッシュをサーバー側に保存し、暗号化されていない状態でSSL/TLSを送信し、送信された認証サーバー側のハッシュを計算して保存します。

たぶんここを見て:

セッション管理チートシート - OWASPを https://www.owasp.org/index.php/Session_Management_Cheat_Sheet

+0

あなたは正しいです!ありがとう。 – TheCrafter

0

サイード・パスワードは、その順番で、SHA-512を使用してそれを暗号化し、それを追加してPHPに送信され データベースへ。

代わりにhow to store passwords safelyを知りたいかもしれません。

JavaScriptを使用してパスワードを暗号化し、すでに暗号化されている場合はphpに送信する方が良いかもしれないと思いました。少なくともそのように、元のパスワードはPOSTリクエスト内にはありません。

参照:Javascript Cryptography Considered Harmful TLSはこの問題とそれを好む多くの人にとって正しい解決策です。

+1

あなたが私に提供した答えとリンクをありがとう。彼らはとても役に立ちました! – TheCrafter

関連する問題