PHP開発初心者です。また、PHP について話し合う同僚もいません。だから私はここに私の質問を投稿します。
私はなんとか自分用のログインスクリプトを作成しました。魔女はこのサイトのスクリプトによく似ています: http://www.phpeasystep.com/phptu/6.html
私の質問はです。これは安全なアプローチですか?PHP ログイン スクリプトに関する適切なチュートリアルはありますか? セッションに情報を保存するアプローチに何か問題がありますか?
PHP開発初心者です。また、PHP について話し合う同僚もいません。だから私はここに私の質問を投稿します。
私はなんとか自分用のログインスクリプトを作成しました。魔女はこのサイトのスクリプトによく似ています: http://www.phpeasystep.com/phptu/6.html
私の質問はです。これは安全なアプローチですか?PHP ログイン スクリプトに関する適切なチュートリアルはありますか? セッションに情報を保存するアプローチに何か問題がありますか?
投稿したチュートリアルに関するいくつかの問題。
正しく実行したい場合は、フォームベースの Web サイト認証の決定版ガイドを読んで、その提案を実装してください。
絶対に安全ではありません。パスワードをハッシュせずにテキストとして保存しています。パスワードのハッシュ化 (少なくとも sha256、md5 または sha1 ではありません) を確認し、ソルティング ハッシュ化によってパスワードがエンコードされるため、db 攻撃が成功した場合に誰もパスワードを取得できなくなります。ソルティングはある程度のセキュリティを追加します。すべてのパスワードに文字列を追加してハッシュするだけです。すべてのユーザーのカスタム ソルトと、キーボードにない特殊な文字を含むサーバー ソルトを使用できます。これにより、パスワードはかなり安全になります。SQL クエリに PDO とパラメーターを使用すると、SQL インジェクション攻撃からより安全になります。
セッションでの保存については、パスワードを保存しないでください。パスワードは挿入され、ハッシュされ、少なくとも別のログインまで二度と使用されません。
まったく安全ではありません:
SHA512ハッシュは、可能であればソルトを使用する最良の方法ですが、これとPDOの使用に関する負荷が見つかりましたが、sha512ハッシュを使用する登録フォームを作成できません。アイデアを返信してください
そのスクリプトを見ると、ストリップ スラッシュ機能を実装し、パスワードの保存にハッシュ アルゴリズム (SHA256) を使用している限り、適切な行が長く続くと言えます。ハッシュにソルトを追加することでこれをさらに拡張できます。これにより、誰かがデータベースを攻撃して SELECT * FROM Password WHERE Password = 'HASH'; を実行した場合に保護されます。これにより、すべてのユーザー名が返され、攻撃者はこれらの資格情報を使用してログインを試みることができます。SQL インジェクションと XSS は、Web サイトに対する一般的なタイプの攻撃であり、ログイン システムを介して実行できます。それらを一読することをお勧めします。
その他のリソース:
http://www.webstockbox.com/php/7-tutorials-on-how-to-create-a-php-login-system/
いいえ。パスワードをそのまま保存しない方がはるかに安全です。パスワードを (つまり md5() で) ハッシュし、ハッシュを DB に保存することをお勧めします。ログインするには、フォームから送信されたパスワードを取得し、それをハッシュして、DB に保存されているハッシュと比較します。