5

$_SESSION数週間前にログインページを作成しているときに知りました。正常にログインして変数で使用できます。現在、私は理解しようとしてい$_SESSIONます$_COOKIE。私が間違っている場合は修正してください$_SESSION。ログインしてページを移動するときに使用できます。を$_COOKIE使用すると、最後に訪問した日時と好みを記憶するために使用されます。

Cookie に関連するもう 1 つのことは、Web サイトが広告 (Google AdSense など) を使用する場合、訪問者が広告をクリックしたときを追跡するために Cookie を使用することですよね?

両方 ( $_SESSION& $_COOKIE) を使用できますか? session_idCookieのas値を保存できる場所を読みました。

また、セキュリティについて読んで、これを見つけることができました:ユーザーがログインしたときにphpセッションに何を保存する必要がありますか? . session_regenerate_idユーザーがサイトに戻ってきたときに使用するのは適切ですか?

そしてこれ:を含むphpでクッキーを保存する方法uniqid.

ログインについて知りたい人のために、私は電子メールとパスワードを使用します。そうすれば、ユーザーは自分のユーザー名を変更できます。

この 2 つについて、知識を共有したい人からさらに学ぶことを楽しみにしています。あまりにも多くの質問をした場合は、より経験のある質問に答えてください。

さらに情報が必要な場合は、何かを含めるのを忘れている可能性があるため、質問してください.

ありがとうございました。


これが見つかりました:自分の Web サイトに広告を掲載する前に、どのようなリスクに注意する必要がありますか?

4

1 に答える 1

13

簡単に言えば、$_SESSION$_COOKIEは異なります。どちらもphpグローバルですが、Cookieは言語の制限なしに使用されます。 $_SESSIONセッションIDをCookieとして保存しながら、サーバーにデータを保存することがすべてです。ブラウザがサーバーに送信する$_COOKIECookieです。これが大きな違いです。クライアントブラウザでCookieが無効になっている場合、セッションは機能しません。

- 安全 -

ブラウザが送信するリクエストヘッダーを確認すると、各リクエストにCookie情報が含まれていることがわかります。それらは、ネットワーク通信を盗聴することで追跡できます。より優れたツールを持っている人なら誰でもCookieデータを編集できます。 パスワードの保存にCookieを使用しないでください。 セッションを使用する場合、パスワードはサーバーにあり、セッションID Cookieのみがクライアントに保存されるため、セキュリティの問題が軽減されます。チャックノリスはまだセッションを乗っ取ることができます。

- パフォーマンス -

200バイトのCookieをブラウザに5つ保存すると、jpgファイルであろうと実際にCookie情報を必要とするページであろうと、リクエストごとに最大1KBのデータが必要になります。したがって、これは、サイトがエンドユーザーに対して実行できる速度に直接影響します。

セッションを使用する場合、クライアントが各ページ要求でセッションIDを送信している間、サーバーにはこの1KBのデータがあります。静的ファイルを別のCookieのないドメインにシフトすることで賢くなります。

- 一生 -

セッションはタイムリーにクリアされます。したがって、何かを長期間保存したい場合は、代わりにCookieを使用してください。ほとんどのサイトの「rememberme」機能はこのように機能します(それでも、パスワードは保存されません。セッション情報のみ-セッションIDと混同しないでください)。

結論として、セッションとCookieは異なるタイプです。セッションは比較的安全で、サーバー側のストレージです。頻繁にクリアされます。Cookieの寿命は長くなる可能性がありますが、それを念頭に置いていない限り、パフォーマンスに影響します(CPU / RAM-ロード時間ではありません)。ただし、1KBをCookieとして保存する理由がある場合は非常に奇妙です。

を介して送信されるユーザー入力を絶対に信用しないでください$_GET/POST。同様の注意を払ってください$_COOKIE。そして、セッションハイジャックがあります。誰かが他の人のセッションIDを推測することはほぼ不可能ですが、推測することができます。したがって、最初にサーバー側で検証を使用します。

于 2012-07-02T02:09:49.357 に答える