PHPを使用して、安全な「覚えている」システムを作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3645322

質問

ログインシステムがあります。セキュアを実装するにはどうすればよいですか 私を覚えてますか Cookieを使用したシステム。

Cookieのユーザー名とパスワードに保存する必要があるのはどのような値ですが、どのように保護できますか?

役に立ちましたか?

解決

次に、DBでSalt Foreachユーザーを定義します

設定で

$expire_time = time() + 2 * 7 * 24 * 3600; // 2 weeks exp time

setcookie( 
    "rememberMe",
    crypt($username, $salt),
    $expire_time,
    '/'
);

検証について

$_COOKIE['rememberMe'] === crypt($username, $salt)

他のヒント

たぶん、そのユーザーとMACアドレスとデータベースに関連付けられている16の文字/数字文字列を作成して、(人々があまりにも一生懸命努力していない限り)そのマシンのみをログオンできるようにすることができます。

(DBに)訪問者IP、ユーザーエージェント、タイムゾーン、またはインストールされたプラグインを保存する必要があります。 MACアドレスを取得することが問題になる可能性があるため、JavaScriptを使用するのが簡単かもしれません。

次に、ユーザーが前回と同じIP、UA、タイムゾーン、またはプラグインを持っているかどうかを簡単に確認できます:)または、MaxMindを使用して彼の場所を確認し、正しいタイムゾーンを使用しているかどうかを確認できます。疑わしいものがある場合は、Cookieの資格情報を捨てる必要があります。

それにはあまりありません...セッションファイルをクリーンアップさせないでください(ini設定 session.gc_probability = 0)、およびセッションクッキーを一時的なものから永続的に変更する(ini設定 session.cookie_lifetime = however_long_you_want_the_user_to_be_remembered).

もちろん、おそらく最終的に古いセッションファイルをクリーンアップしたいので、 非常に クリーンアップが発生する可能性が低いか、外部クリーンアップを行います。いずれにせよ、ユーザーがセッションのクッキーを保持し、セッションファイルを周りに保持している限り、それらは「記憶されている」でしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top