私はウェブサイト上で作業しており、ユーザーのログインとセッションを作成したいと考えています。セッションが存在するかどうかを確認する最も安全な方法は何ですか(クッキーやセッション変数のチェックなど)か、PHPのセッションを使用する方が良いでしょうか?ここで最も安全な方法は、PHPでセッションを作成する
答えて
session_id()
戻りトンです現在のセッションのセッションID、または現在のセッションがない場合は空の文字列( "")です(現在のセッションIDは存在しません)。
が、セッションがアクティブであるかどうかだけを示していますこと。
ほとんどの場合、私はちょうどsession_start();
(ユーザーがログインしていなくても)のすべてのスクリプトの冒頭に呼び出します。ログイン時には、ユーザIDまたはユーザオブジェクトで$_SESSION['user']
を設定します。ログアウト時には、私はただunset($_SESSION['user']);
です。 empty($_SESSION['user'])
をチェックして、誰かがまだログインしているかどうかを確認できます。あなたのセッション中の他の場所にユーザ依存の情報を保存している場合は、これをしないでください。そうしないと、ログインしている次のユーザーは、彼が見るはずの情報を得ることができます(この場合はsession_destroy();
を使います)。
でも安全ですか? GET/POST url rewrites(クッキーのみ)によるセッションIDの伝播を無効にするだけで、キャッシュされたり他の人に配布されることはありません(この場合、セッションハイジャックが可能です)。 php.iniにsession.use_only_cookies
を設定することでそれを行うことができます。
信頼できない共有サーバーや誤って構成された共有サーバーをホストしている場合、同じマシン上の他のユーザーがセッションデータを読み取る可能性があります。この場合、セッションハンドラを書き換えてセッションデータをデータベースに格納することができます。 intertubesでsession handler mysql
を検索するだけで、準備ができているソリューションがあると確信しています。パスワードのような機密情報をセッションに保存しないで、比較する必要があるたびにクエリを実行する方がよいでしょう。
以外のもの...ログインとユーザー管理にssl/httpsを使用するため、平文パスワードは転送されません。データベースにsaltでpw-hashのみを保存します。パスワードを誰にも見せないようにする(意味:htmlや電子メールには決して印刷しない)。ユーザーが見ることができる(したがって推測する)IDにauto_increment値を使用しないでください。それはすでに質問の範囲外です。
は、セッションの安全性上のいくつかのチュートリアル
PDF文書が機能しません。 –
- 1. phpの中で最も安全な方法は何ですか?
- 2. 最も安全なハッシュ方法は何ですか? (PHP)
- 3. オブジェクトを共有する最も安全な方法は何ですか?PHP
- 4. PHPでデータベースに接続する最も安全な方法は何ですか?
- 5. phpとmysqlを使って安全なセッションを作る方法は?
- 6. インターネット経由でビデオをストリーミングする最も安全な方法
- 7. セッションを使用してサイト構成を保存するのは、安全で安全な方法ですか?
- 8. ハッシュ暗号で安全なログインページを作成する方法は?
- 9. Javaで安全なランダムAESキーを作成する方法は?
- 10. 管理者権限でプロセスを作成する最も安全な方法は何ですか?
- 11. 1300のブックを作成する最速(そして最も安全な)方法は?
- 12. 安全なオンラインコンパイラの作成方法?
- 13. テーブルの行IDを参照する最も安全な方法
- 14. MySQLパブリックサーバiMacを設定する最も安全な方法
- 15. Firebaseから値を取得する最も安全な方法
- 16. スレッドセーフなシングルトンパターンを実装する最も安全な方法は何ですか?
- 17. リモートPHPコード/ファイルを含む最も適切で安全な方法
- 18. mysqlをnodeJSで(phpなしで)使用する最も現代的で安全な方法は何ですか?
- 19. 最も安全なDevise構成は何ですか?
- 20. セッションを安全にカウントする方法:Session_Start/End in Global.Asaxは安全で安全ですか?
- 21. PHPアプリケーションから/ etcに書き込む最も安全な方法は?
- 22. データベースに接続する最も安全な方法
- 23. 安全で安全なセッション名とは何ですか?
- 24. Webサービス/ APIを実装する最も安全な方法は何ですか?
- 25. FileStreamはFile.Copyをコピーする最も安全な方法ですか?
- 26. 安全なパスワードフィールドでユーザーを作成する方法
- 27. 相対的なjava.io.Fileを作成する安全な方法
- 28. 有効なHTMLで自動抜粋を生成する最も安全な方法は何ですか?
- 29. Androidでのアクティビティ間で最も安全な方法を送信する
- 30. HashSetを反復する最も速く/最も安全な方法は何ですか?
'とパスワードのような機密情報をセッションに保存しないでください。それを比較する必要があるたびにクエリを実行してください。 - まあ、パスワードの片方向暗号化バージョン(md5 +ハッシュ)を保存する方が速いと思って、代わりに照会をdbに再作成して、もう一度 – Strae
をtrueにしてください。通常はチェックする必要はありません#1:ログインのみ、#2:パスワード変更(現在のパスワードを入力して新しいパスワードを設定するように要求した場合) #1の場合データベースを照会しなければならず、#2は頻繁に行われることはないので、追加のオーバーヘッドはごくわずかです。 – stefs