


Welche Sicherheitslücken bestehen bei der Verwendung von Timing-Attack in Knotenanwendungen?
Dieser Artikel analysiert die Sicherheitslücke bei Timing-Angriffen von Knotenanwendungen anhand der Prinzipien. Interessierte Freunde können ihn als Referenz lesen.
Vorwort
Wenn Sie auf einen Eslint-Fehler gestoßen sind. Möglicher Timing-Angriff in Ihrem Projekt, ignorieren Sie ihn nicht! Dies ist ein Sicherheitsproblem: Timing-Angriffe.
Ursache des eslint-Fehlerberichts
Zunächst führt eslint ein Plug-in namens eslint-plugin-security ein. Dieses Plug-in hilft bei der Identifizierung potenzieller Sicherheitsprobleme, kann aber auch zu Fehlalarmen führen Adresse des Plug-in-Quellcodes.
var keywords = '((' + [ 'password', 'secret', 'api', 'apiKey', 'token', 'auth', 'pass', 'hash' ].join(')|(') + '))'; var re = new RegExp('^' + keywords + '$', 'im'); function containsKeyword (node) { if (node.type === 'Identifier') { if (re.test(node.name)) return true; } return } if (node.test.operator === '==' || node.test.operator === '===' || node.test.operator === '!=' || node.test.operator === '!==') { // 在这里 console 出错误 }
Zunächst ermittelt dieses Plug-in, ob der Operator dieses Mal ==, ===,! ist. =,! ==Eine davon: Überprüfen Sie zweitens, ob der Bezeichner (Feldname) die spezielle Zeichenfolge „Passwort“, „Geheimnis“, „API“, „APIKey“, „Token“, „Authentifizierung“, „Pass“ und „Hash“ enthält. Wenn beide Bedingungen gleichzeitig erfüllt sind, wird eslint kompilieren und melden ein Fehler Möglicher Timing-Angriff.
Angriffsdefinition
Timing-Angriff: Timing-Angriff, der zum Seitenkanalangriff/Seitenkanalangriff gehört, bezieht sich auf die Verwendung von Informationen außerhalb des Kanals. Die Angriffsmethode basiert auf den Daten, der Datenvergleichszeit, dem Chiffretext-Übertragungsverkehr und den Kanälen, was einer „Anspielung“ entspricht.
Angriffspunkt
Lassen Sie uns zunächst über das Prinzip von js sprechen, indem wir die Größe zweier Zeichenfolgen vergleichen:
Bestimmen Sie, ob Die Zeichenfolgenlänge beträgt 0. Wenn sie 0 ist, kann das Ergebnis direkt verglichen werden. Andernfalls fahren Sie mit dem zweiten Schritt fort.
Strings bestehen aus Zeichen und werden anhand des charCodes jedes Zeichens verglichen.
Solange im zweiten Schritt ein Zeichen unterschiedlich ist, wird „false“ zurückgegeben und die übrigen Zeichen werden nicht verglichen.
Der Vergleich einzelner Zeichen erfolgt sehr schnell auf Mikrosekunden genau und kann auf diese Weise durch Experimentieren ableiten, welches Zeichen nicht verwendet wird Wenn Sie immer wieder ein Skript in Python schreiben oder es ausführen, können Sie das richtige Passwort ausprobieren und die Schwierigkeit beim Knacken von Passwörtern wird ebenfalls erheblich verringert.
Vulnerable Writing
if (user.password === password) { return { state: true }; // 登录成功 }
Abwehrmaßnahmen
Jede unterschiedliche Eingabe führt dazu, dass die Verarbeitungszeit unterschiedlich ist. Um dies zu verhindern, müssen wir dafür sorgen, dass der Zeichenfolgenvergleich unabhängig vom eingegebenen Passwort gleich lange dauert.
Schreiben, das nicht anfällig für Angriffe ist
Die Länge jedes Passworts im System ist festgelegt. Verwenden Sie bei jedem Vergleich, ob das Passwort gleich ist, die Länge des richtigen Passworts als Anzahl der Vergleiche , und verwenden Sie XOR, um jedes Zeichen zu vergleichen. Überprüfen Sie, ob die Unicode-Codierungen gleich sind, speichern Sie jedes Vergleichsergebnis in einem Array und bestimmen Sie schließlich, ob jedes Element des Arrays 0 ist (0 bedeutet, dass die beiden Zeichen gleich sind).
// psdReceived 为用户输入密码; // psdDb 为系统中存储的正确用户密码 const correctUser = (psdDb, psdReceived) => { const state = []; for (let i = 0; i < psdDb.length; ++i) { if (!psdReceived[i]) { state.push(false); } else { state.push(psdReceived.charCodeAt(i) ^ psdDb.charCodeAt(i)); } } return state.length !== 0 && state.every(item => !item); }
Drei-Parteien-Paketempfehlung
Sie können dieses Problem auch mit den npm-Modul-Cryptiles lösen
import cryptiles from 'cryptiles'; ...... return cryptiles.fixedTimeCimparison(passwordFromDb, passwordReceived);
Das Obige ist das, was ich für alle zusammengestellt habe in Zukunft für alle hilfreich sein.
Verwandte Artikel:
Bild- und Datei-Upload in Vue Beispielcode
Instanz der Vue-Axios-Formularübermittlung zum Hochladen von Bildern
Das obige ist der detaillierte Inhalt vonWelche Sicherheitslücken bestehen bei der Verwendung von Timing-Attack in Knotenanwendungen?. 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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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



So löschen Sie einen Knoten mit nvm: 1. Laden Sie „nvm-setup.zip“ herunter und installieren Sie es auf dem Laufwerk C. 2. Konfigurieren Sie Umgebungsvariablen und überprüfen Sie die Versionsnummer mit dem Befehl „nvm -v“. install“-Befehl Knoten installieren; 4. Löschen Sie den installierten Knoten über den Befehl „nvm uninstall“.

Wie gehe ich mit dem Datei-Upload um? Der folgende Artikel stellt Ihnen vor, wie Sie Express zum Hochladen von Dateien im Knotenprojekt verwenden. Ich hoffe, er ist hilfreich für Sie!

Während dieser Zeit habe ich einen dynamischen HTML-Dienst entwickelt, der allen Kategorien von Tencent-Dokumenten gemeinsam ist. Um die Generierung und Bereitstellung des Zugriffs auf verschiedene Kategorien zu erleichtern und dem Trend der Cloud-Migration zu folgen, habe ich über die Verwendung von Docker nachgedacht Serviceinhalte verwalten und Produktversionen einheitlich verwalten. In diesem Artikel werden die Optimierungserfahrungen, die ich bei der Bereitstellung von Docker gesammelt habe, als Referenz weitergegeben.

In diesem Artikel stellen wir Ihnen das Prozessmanagement-Tool „pm2“ von Node vor und sprechen darüber, warum PM2 benötigt wird und wie Sie PM2 installieren und verwenden. Ich hoffe, dass es für alle hilfreich ist!

Detaillierte Erläuterungs- und Installationshandbuch für Pinetwork -Knoten In diesem Artikel wird das Pinetwork -Ökosystem im Detail vorgestellt - PI -Knoten, eine Schlüsselrolle im Pinetwork -Ökosystem und vollständige Schritte für die Installation und Konfiguration. Nach dem Start des Pinetwork -Blockchain -Testnetzes sind PI -Knoten zu einem wichtigen Bestandteil vieler Pioniere geworden, die aktiv an den Tests teilnehmen und sich auf die bevorstehende Hauptnetzwerkveröffentlichung vorbereiten. Wenn Sie Pinetwork noch nicht kennen, wenden Sie sich bitte an was Picoin ist? Was ist der Preis für die Auflistung? PI -Nutzung, Bergbau und Sicherheitsanalyse. Was ist Pinetwork? Das Pinetwork -Projekt begann 2019 und besitzt seine exklusive Kryptowährung PI -Münze. Das Projekt zielt darauf ab, eine zu erstellen, an der jeder teilnehmen kann

Wie packe ich die ausführbare Datei von nodejs mit pkg? Im folgenden Artikel erfahren Sie, wie Sie mit pkg ein Node-Projekt in eine ausführbare Datei packen. Ich hoffe, dass er Ihnen weiterhilft!

npm node gyp schlägt fehl, weil „node-gyp.js“ nicht mit der Version von „Node.js“ übereinstimmt. Die Lösung ist: 1. Löschen Sie den Knotencache über „npm cache clean -f“ 2. Über „npm install -“ g n“ Installieren Sie das n-Modul. 3. Installieren Sie die Version „node v12.21.0“ über den Befehl „n v12.21.0“.

Was ist ein Single-Sign-On-System? Wie implementiert man es mit NodeJS? Im folgenden Artikel erfahren Sie, wie Sie mit Node ein Single-Sign-On-System implementieren. Ich hoffe, dass er Ihnen weiterhilft!
