Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich ein sichereres Cookie zum Speichern des Anmeldestatus festlegen?

Wie kann ich ein sichereres Cookie zum Speichern des Anmeldestatus festlegen?

WBOY
WBOYOriginal
2016-10-10 11:55:561092Durchsuche

Hauptsächlich für zwei Situationen:

  1. Benutzer knackt Cookies

  2. Böswillige Benutzer kapern Cookies und geben vor, sich anzumelden

Wie werden Cookies gesetzt, um den Anmeldestatus des Benutzers zu speichern und relativ sicher zu sein?

Antwortinhalt:

Hauptsächlich für zwei Situationen:

  1. Benutzer knackt Cookies

  2. Böswillige Benutzer kapern Cookies und geben vor, sich anzumelden

Wie werden Cookies gesetzt, um den Anmeldestatus des Benutzers zu speichern und relativ sicher zu sein?

Freunde, die auf Session geantwortet haben, ich denke, der Fragesteller hofft auf jeden Fall, dass der Benutzer den Anmeldestatus speichern kann, damit er sich bei seinem nächsten Besuch automatisch anmelden kann. Sie haben Session erwähnt. Wie können die folgenden Probleme gelöst werden?

  • Wie berechnet man das Sitzungs-Timeout?

  • SessionID muss auch in Cookie gespeichert werden.

Frage zum Thema:

  1. Bei Verschlüsselungsproblemen reicht die AES-Verschlüsselung nicht aus. Informationen zur spezifischen Verschlüsselung/Entschlüsselung finden Sie unter https://segmentfault.com/q/10...

  2. Verhindern Sie die XSS-Injektion und erhalten Sie Cookies.
    httponly ist ausreichend. Sowohl session_id als auch login status erfordern httponly. JavaScript kann keine Cookies mit httponly-Attributen erhalten.

PHPs native session_id ist nicht httponly, daher implementiert Laravel die gesamte Sitzungslogik und unterstützt Datenbank, Datei, Redis und andere Treiber

Sitzung

Es ist relativ sicher, die Sitzung serverseitig zu speichern.

Cookie-Format wie user_identity|expires_timestamp verschlüsselt den Teil, der kodiert werden muss.
Wenn verifiziert, dann entschlüsseln und verifizieren

Stellen Sie httponly ein, um js den Zugriff auf Cookies zu verbieten.
Verwenden Sie HTTPS, um Man-in-the-Middle-Angriffe zu verhindern.

Nachdem sich der Benutzer angemeldet hat, wird ein verschlüsseltes String-Autorisierungstoken generiert und in einem Cookie gespeichert. Beim nächsten Mal wird das Cookie geöffnet, um zu überprüfen, ob das Token gültig ist

<code>1. 用户将Cookie进行破解

对于这种情况,可以考虑的是加密的复杂度,以及校验逻辑的升级。比如,将访问时间、客户端IP这些东西都作为Cookie 加密的一部分,增加破解难度。</code>
<code>2. 恶意用户劫持Cookie冒充登陆

因为Cookie 的加密是结合了客户端的IP 信息的。所以,即使Cookie被用到其他的机器来访问,但是IP 本身也是不匹配的,验证无法通过。

同时,我们还可以考虑在服务端,SESSION 存储该Cookie 的信息,用来跟上传信息进行比对,检验cookie信息是否有被篡改过。</code>

Es gibt verschiedene Methoden dazwischen, wir müssen nur analysieren, welche Ebene wir berücksichtigen müssen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn