Umfassende Beherrschung der Express-Cookie-Parser-Middleware
Cookie-Parser ist die Middleware von Express, die zum Parsen von Cookies verwendet wird. Es handelt sich um eine der Middleware, die in das offizielle Gerüst integriert ist. Die Verwendung ist sehr einfach, es kann jedoch gelegentlich zu Problemen bei der Verwendung kommen. Dies wird normalerweise durch mangelndes Verständnis der Signatur- und Überprüfungsmechanismen von Express + Cookie-Parser verursacht. In diesem Artikel wird Ihnen hauptsächlich das Implementierungsbeispiel für die Express-Cookie-Parser-Middleware vorgestellt. Der Herausgeber findet es recht gut, daher werde ich es jetzt mit Ihnen teilen und als Referenz geben. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.
Erste Schritte: Cookie-Einstellungen und Parsing
Beginnen wir mit dem einfachsten Beispiel, um die Verwendung des Cookie-Parsers zu betrachten. Hier wird die Standardkonfiguration verwendet.
Cookie-Einstellungen: Verwenden Sie die integrierte Methode res.cookie() von Express.
Cookie-Parsing: Cookie-Parser-Middleware verwenden.
var express = require('express'); var cookieParser = require('cookie-parser'); var app = express(); app.use(cookieParser()); app.use(function (req, res, next) { console.log(req.cookies.nick); // 第二次访问,输出chyingp next(); }); app.use(function (req, res, next) { res.cookie('nick', 'chyingp'); res.end('ok'); }); app.listen(3000);
Im aktuellen Szenario ist die Cookie-Parser-Middleware grob wie folgt implementiert:
app.use(function (req, res, next) { req.cookies = cookie.parse(req.headers.cookie); next(); });
Erweitertes Beispiel: Cookie-Signatur und -Analyse
Aus Sicherheitsgründen müssen wir Cookies normalerweise signieren.
Das Beispiel wird wie folgt umgeschrieben, wobei einige Punkte zu beachten sind:
Wenn cookieParser initialisiert wird, übergeben Sie es im Geheimen als Signaturschlüssel.
Wenn Sie ein Cookie setzen, setzen Sie „signed“ auf „true“, um das zu setzende Cookie zu signieren.
Wenn Sie Cookies erhalten, können Sie diese über req.cookies oder req.signedCookies erhalten.
var express = require('express'); var cookieParser = require('cookie-parser'); var app = express(); // 初始化中间件,传入的第一个参数为singed secret app.use(cookieParser('secret')); app.use(function (req, res, next) { console.log(req.cookies.nick); // chyingp console.log(req.signedCookies.nick); // chyingp next(); }); app.use(function (req, res, next) { // 传入第三个参数 {signed: true},表示要对cookie进行摘要计算 res.cookie('nick', 'chyingp', {signed: true}); res.end('ok'); }); app.listen(3000);
Der Cookie-Wert vor dem Signieren ist chyingp, der Cookie-Wert nach dem Signieren ist s%3Achyingp.uVofnk6k%2B9mHQpdPlQeOfjM8B5oa6mppny9d%2BmG9rD0 und nach der Dekodierung ist er s:chyingp.uVofnk6k+ 9mHQpdPlQe OfjM8B5oa6mppny9d+ mG9rD0.
Lassen Sie uns analysieren, wie Cookie-Signatur und -Analyse implementiert werden.
Analyse der Cookie-Signatur und Verifizierungsimplementierung
Express vervollständigt die Signatur von Cookie-Werten und Cookie-Parser implementiert das Parsen signierter Cookies. Beide teilen den gleichen geheimen Schlüssel.
Cookie-Signatur
Die Cookie-Einstellungen von Express (einschließlich Signaturen) werden alle über die Methode res.cookie() implementiert.
Der vereinfachte Code lautet wie folgt:
res.cookie = function (name, value, options) { var secret = this.req.secret; var signed = opts.signed; // 如果 options.signed 为true,则对cookie进行签名 if (signed) { val = 's:' + sign(val, secret); } this.append('Set-Cookie', cookie.serialize(name, String(val), opts)); return this; };
sign ist die Signaturfunktion. Der Pseudocode lautet wie folgt, der tatsächlich den ursprünglichen Wert des Cookies mit dem Wert nach hmac verkettet.
Wichtiger Punkt an der Tafel: Der signierte Cookie-Wert beinhaltet den Originalwert.
function sign (val, secret) { return val + '.' + hmac(val, secret); }
Woher kommt das Geheimnis hier? Es wird übergeben, wenn der Cookie-Parser initialisiert wird. Wie im folgenden Pseudocode gezeigt:
var cookieParser = function (secret) { return function (req, res, next) { req.secret = secret; // ... next(); }; }; app.use(cookieParser('secret'));
Signiertes Cookie-Parsen
Nachdem man den Mechanismus der Cookie-Signatur kennt, ist klar, wie man das signierte Cookie „analysiert“. In dieser Phase führt die Middleware hauptsächlich zwei Dinge aus:
Extrahieren Sie den ursprünglichen Wert, der dem signierten Cookie entspricht.
Überprüfen Sie, ob es sich um ein signiertes Cookie handelt legal
Der Implementierungscode lautet wie folgt:
// str:签名后的cookie,比如 "s:chyingp.uVofnk6k+9mHQpdPlQeOfjM8B5oa6mppny9d+mG9rD0" // secret:秘钥,比如 "secret" function signedCookie(str, secret) { // 检查是否 s: 开头,确保只对签过名的cookie进行解析 if (str.substr(0, 2) !== 's:') { return str; } // 校验签名的值是否合法,如合法,返回true,否则,返回false var val = unsign(str.slice(2), secret); if (val !== false) { return val; } return false; }
Es ist relativ einfach, den ursprünglichen Wert des Cookies zu beurteilen und zu extrahieren. Es ist nur so, dass der Name der Unsign-Methode verwirrend ist.
Grundsätzlich werden nur Unterschriften rechtsgültig beglaubigt, eine sogenannte Gegenzeichnung gibt es nicht.
Der Code der Unsign-Methode lautet wie folgt:
Extrahieren Sie zunächst den Originalwert A1 und den Signaturwert B1 aus dem eingehenden Cookie-Wert.
Zweitens verwenden Sie denselben geheimen Schlüssel, um A1 zu signieren, um A2 zu erhalten.
Bestimmen Sie abschließend anhand der Gleichheit von A2 und B1, ob die Signatur zulässig ist.
exports.unsign = function(val, Secret){
var str = val.slice(0, val.lastIndexOf('.')) , mac = exports.sign(str, secret); return sha1(mac) == sha1(val) ? str : false; };
Die Rolle der Cookie-Signatur
dient hauptsächlich der Vermeidung von Sicherheitsgründen Zur Erhöhung der Sicherheit wurden Cookies manipuliert.
Nehmen wir ein kleines Beispiel, um zu sehen, wie die Cookie-Signatur Manipulationen verhindern kann.
Erweitern Sie basierend auf dem vorherigen Beispiel. Gehen Sie davon aus, dass die Website das Nick-Cookie verwendet, um zu unterscheiden, wer der aktuell angemeldete Benutzer ist. Im vorherigen Beispiel lautet der entsprechende Wert von Nick im Cookie des angemeldeten Benutzers wie folgt: (nach der Dekodierung)
s:chyingp.uVofnk6k+9mHQpdPlQeOfjM8B5oa6mppny9d+mG9rD0
Zu diesem Zeitpunkt versucht jemand, diesen Cookie-Wert zu ändern, um den Zweck der Identitätsfälschung zu erreichen. Ändern Sie es beispielsweise in „xiong“:
s:xiaoming.uVofnk6k+9mHQpdPlQeOfjM8B5oa6mppny9d+mG9rD0
Wenn die Website die Anfrage empfängt, analysiert sie das Signatur-Cookie und stellt fest, dass die Signatur überprüft wurde scheitert. Daraus kann geschlossen werden, dass das Cookie gefälscht ist.
hmac("xiaoming", "secret") !== "uVofnk6k+9mHQpdPlQeOfjM8B5oa6mppny9d+mG9rD0"
Werden Signaturen Sicherheit garantieren?
Natürlich nicht.
Das Beispiel im vorherigen Abschnitt verwendet nur den Wert des Nick-Cookies, um zu bestimmen, welcher Benutzer angemeldet ist. Dies ist ein sehr schlechtes Design. Allerdings ist es schwierig, signierte Cookies zu fälschen, wenn der geheime Schlüssel unbekannt ist. Aber wenn der Benutzername derselbe ist, ist auch die Signatur gleich. In diesem Fall ist es tatsächlich sehr leicht zu fälschen.
Darüber hinaus sind die Algorithmen von Open-Source-Komponenten öffentlich, sodass die Sicherheit des geheimen Schlüssels zum Schlüssel wird und sichergestellt werden muss, dass der geheime Schlüssel nicht durchgesickert ist.
Es gibt noch viele weitere, daher werde ich hier nicht näher darauf eingehen.
Zusammenfassung
Dieser Artikel bietet hauptsächlich eine relativ ausführliche Einführung in den Signatur- und Analysemechanismus von Express + Cookie-Parser.
In vielen ähnlichen zusammenfassenden Artikeln wird die Cookie-Signatur als Verschlüsselung beschrieben. Dies ist ein häufiger Fehler und die Leser müssen darauf achten.
Die Einführung in den Signaturteil beinhaltet ein wenig einfaches Sicherheitswissen. Schüler, die mit diesem Thema nicht vertraut sind, können eine Nachricht hinterlassen, um zu kommunizieren. Der Einfachheit halber sind einige Absätze und Formulierungen möglicherweise nicht streng genug. Sollten Fehler oder Auslassungen vorliegen, weisen Sie bitte darauf hin.
Verwandte Empfehlungen:
Knoten erstellt seine eigene Serverinstanz durch Implementierung von Express
Node.js verwendet die Express.Router-Instanz Ausführliche Erklärung
Das obige ist der detaillierte Inhalt vonUmfassende Beherrschung der Express-Cookie-Parser-Middleware. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Das Prinzip der Tomcat-Middleware wird basierend auf Java Servlet- und Java EE-Spezifikationen implementiert. Als Servlet-Container ist Tomcat für die Verarbeitung von HTTP-Anfragen und -Antworten und die Bereitstellung der Laufumgebung für Webanwendungen verantwortlich. Die Prinzipien der Tomcat-Middleware umfassen hauptsächlich: 1. Container-Modell; 3. Servlet-Verarbeitungsmechanismus; Technologie; 9. Eingebetteter Modus usw.

Für die Verwendung von Middleware zur Formularvalidierung in Laravel sind spezifische Codebeispiele erforderlich. Einführung: In Laravel ist die Formularvalidierung eine sehr häufige Aufgabe. Um die Gültigkeit und Sicherheit der von den Nutzern eingegebenen Daten zu gewährleisten, überprüfen wir in der Regel die im Formular übermittelten Daten. Laravel bietet eine praktische Formularvalidierungsfunktion und unterstützt auch die Verwendung von Middleware zur Formularvalidierung. In diesem Artikel wird detailliert beschrieben, wie Middleware für die Formularvalidierung in Laravel verwendet wird, und es werden spezifische Codebeispiele bereitgestellt.

Verwendung von Middleware zur Datenbeschleunigung in Laravel Einführung: Bei der Entwicklung von Webanwendungen mit dem Laravel-Framework ist die Datenbeschleunigung der Schlüssel zur Verbesserung der Anwendungsleistung. Middleware ist eine wichtige Funktion von Laravel, die Anfragen verarbeitet, bevor sie den Controller erreichen oder bevor die Antwort zurückgegeben wird. Dieser Artikel konzentriert sich auf die Verwendung von Middleware zur Datenbeschleunigung in Laravel und stellt spezifische Codebeispiele bereit. 1. Was ist Middleware? Middleware ist ein Mechanismus, der im Laravel-Framework verwendet wird

So verwenden Sie Middleware für die Antwortkonvertierung in Laravel Middleware ist eine der sehr leistungsstarken und praktischen Funktionen im Laravel-Framework. Es ermöglicht uns, Anfragen und Antworten zu verarbeiten, bevor die Anfrage in den Controller gelangt oder bevor die Antwort an den Kunden gesendet wird. In diesem Artikel werde ich zeigen, wie man Middleware für die Antworttransformation in Laravel verwendet. Stellen Sie vor dem Start sicher, dass Sie Laravel installiert und ein neues Projekt erstellt haben. Jetzt folgen wir diesen Schritten: Erstellen Sie eine neue Middleware. Öffnen Sie

Laravel ist ein beliebtes PHP-Webanwendungs-Framework, das viele schnelle und einfache Möglichkeiten zum Erstellen effizienter, sicherer und skalierbarer Webanwendungen bietet. Bei der Entwicklung von Laravel-Anwendungen müssen wir häufig die Frage der Datenwiederherstellung berücksichtigen, d. h. wie wir Daten wiederherstellen und den normalen Betrieb der Anwendung im Falle eines Datenverlusts oder einer Beschädigung sicherstellen können. In diesem Artikel stellen wir die Verwendung der Laravel-Middleware zur Implementierung von Datenwiederherstellungsfunktionen vor und stellen spezifische Codebeispiele bereit. 1. Was ist Lara?

So verwenden Sie Middleware für die geplante Aufgabenplanung in Laravel. Einführung: Laravel ist ein beliebtes PHP-Open-Source-Framework, das praktische und leistungsstarke Tools zum Entwickeln von Webanwendungen bereitstellt. Eine der wichtigen Funktionen sind geplante Aufgaben, die es Entwicklern ermöglichen, bestimmte Aufgaben in bestimmten Intervallen auszuführen. In diesem Artikel stellen wir vor, wie Sie Middleware verwenden, um die geplante Aufgabenplanung von Laravel zu implementieren, und stellen spezifische Codebeispiele bereit. Vorbereitung der Umgebung Bevor wir beginnen, müssen wir uns vergewissern

So richten Sie Cross-Origin Resource Sharing (CORS) mithilfe von Middleware im Slim-Framework ein. Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, der es dem Server ermöglicht, einige zusätzliche Informationen im HTTP-Antwortheader festzulegen, um dem Browser mitzuteilen, ob Cross erlaubt ist -Domain-Anfragen. In einigen Projekten mit Front-End- und Back-End-Trennung kann der CORS-Mechanismus verwendet werden, um die domänenübergreifende Anforderung des Front-Ends für die Back-End-Schnittstelle zu realisieren. Wenn wir das Slim-Framework zum Entwickeln der REST-API verwenden, können wir Middleware (Middleware) verwenden.

CodeIgniter-Middleware: Bietet sichere Funktionen zum Hochladen und Herunterladen von Dateien. Einführung: Das Hochladen und Herunterladen von Dateien sind sehr häufige Funktionen bei der Entwicklung von Webanwendungen. Aus Sicherheitsgründen erfordert der Umgang mit Datei-Uploads und -Downloads jedoch häufig zusätzliche Sicherheitsmaßnahmen. CodeIgniter ist ein beliebtes PHP-Framework, das eine Fülle von Tools und Bibliotheken bereitstellt, um Entwickler beim Erstellen sicherer und zuverlässiger Webanwendungen zu unterstützen. In diesem Artikel wird erläutert, wie Sie die CodeIgniter-Middleware zum Implementieren sicherer Dateien verwenden
