2017-03-07 9 views
0

セキュリティの面でキーの名前が重要かどうか疑問に思っていました。ユニークな名前は一般的な名前よりも安全ですか?

$_SESSION['email']にユーザーのメールを保存した場合、ユーザーごとに一意であれば、$_SESSION['em_10lettersID']のようになります。しかし、一般的にセッションにメールを保管することは安全ではないかもしれません。

答えて

0
  • あなたはセッション変数、ないセッションの名前について話しています。
  • いいえ、問題ではありません。誰でもブラウザを開いてデバッガのリソースをチェックし、クッキーに保存されているものを見ることができます。あなたが "asdfkjh234690hj"または "email"と呼ぶかどうかは、格納された値が "[email protected]"であるかどうかは関係ありません。

通常、メールアドレスやその他の機密情報をセッションに保存することはお勧めできません。データベース(またはWebルートの外部にあるフラットファイル - 公衆のwwwユーザーがアクセスできない)で検索できるユーザートークン(MD5ハッシュまたはAES暗号化された秘密の文字列のようなもの)を保存することをお勧めします。データベースまたはデータストアでは、そのキーを使用してコードに取り込む必要がある値を取得できます。

希望に役立ちます。

+2

* "一般的に、メールアドレスやその他の機密情報をセッションに保存することはお勧めできません。" *クッキーを意味するのですか? – ficuscr

+0

はい、クッキーもあります。しかし、OPはクッキーについて尋ねていませんでした。 – TinkerTenorSoftwareGuy

2

誤解を解消します。

セッションはサーバー側のストレージです。それ以上のことはありません。このストレージは、固有のトークンを含むクッキーをデバイスに保存することで、デバイス(「ユーザ」)に関連付けられます。各要求では、デバイスはこのクッキー(したがってトークン)をサーバーに送信します。次に、サーバーはトークンを認識し、既存のセッションがこのトークンに存在するかどうかをチェックします。ストレージからセッションをロードし(デフォルトではこのストレージはファイルです)、その内容は$_SESSION変数に格納されます。

デフォルトでは、クッキーの名前はPHPSESSIDであり、トークンはランダムに生成されたハッシュです。このCookieは、Chrome開発者コンソールの[リソース]タブで確認できます。

ここでセッションとそれに含まれるものは決してユーザーに公開されません(サーバーにという永続化されていることを覚えておいてください)。クライアントは知ることができません。

このルールの例外は、クライアントがサーバーにアクセスできる場合です。しかし、このような場合には、より大きな問題があり、心配する必要があります。

もう1つ注意すべき点は、$_SESSIONはクライアント/ユーザーごとに一意であり、お互いの影響を受けることができないということです。$_SESSION

この説明はいくらか簡略化されています。

ここでは、機密情報をクッキー$_COOKIE)に保存しないでください。それらはクライアント/ユーザに保存されます!

関連する問題