⊗ppPmAuAHS 425 of 447 menu

認証へのソルトの追加

これで、認証を変更する必要があります。 ここでの変更はより重要なものになります。

もはや、ログインとパスワードのペアの正しさを 即座に1つのクエリで確認することはできません。なぜなら: パスワードを確認するには、そのソルト付きハッシュを 取得する必要がありますが、ソルトはデータベースに保存されており、 各ログインに対して一意だからです。

まず、ログインのみでレコードを取得し、 ソルトを読み取り、入力されたパスワードにソルトを加えて、 データベースからのソルト付きパスワードと比較し、 それらが一致した場合にのみユーザーを認証する 必要があります。

ログインが誤って入力されている可能性があることを 考慮してください。この場合、パスワードの確認は 行わず、直ちに認証が不可能であること、つまりデータが 正しくないことを表示できます:

<?php $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { // このログインのユーザーがいます。次にパスワードを確認する必要があります... } else { // このログインのユーザーはいません。メッセージを表示します } ?>

パスワード確認を追加しましょう:

<?php $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $salt = $user['salt']; // DBからのソルト $hash = $user['password']; // DBからのソルト付きパスワード $password = md5($salt . $_POST['password']); // ユーザーからのソルト付きパスワード // ソルト付きハッシュを比較 if ($password == $hash) { // すべてOK、認証... } else { // パスワードが一致しません。メッセージを表示します } } else { // このログインのユーザーはいません。メッセージを表示します } ?>

セキュリティ上の理由から、ログインとパスワードのペアの ブルートフォースをハッカーが行うのを難しくするために、 通常、ユーザーには何が一致しなかったか(ログインかパスワードか)は 通知されません。単にログインとパスワードのペアが 間違っているか、またはそのような内容のメッセージが 表示されます。

上記のソルト付きパスワードによる認証を実装してください。 登録し、認証し、すべてが機能することを確認してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否