Heim > Web-Frontend > js-Tutorial > Ausführliche Erläuterung von Funktions-Hijacking-Beispielen in JavaScript

Ausführliche Erläuterung von Funktions-Hijacking-Beispielen in JavaScript

小云云
Freigeben: 2018-03-16 17:34:17
Original
1861 Leute haben es durchsucht


Funktions-Hijacking entführt, wie der Name schon sagt, eine Funktion, bevor sie ausgeführt wird, und fügt die gewünschte Funktionalität hinzu. Wenn diese Funktion tatsächlich ausgeführt wird, ist sie nicht mehr die ursprüngliche Funktion, sondern verfügt über die von uns hinzugefügten Funktionen. Dies ist auch eines der Prinzipien unserer gemeinsamen Hook-Funktionen.
Auf den ersten Blick sieht dies wie ein Umschreiben einer Funktion aus. Das Umschreiben von Funktionen kann auch als eine Art Funktionshijacking verstanden werden, aber diese Methode ist zu ekelhaft. Nachdem Sie als Entführer Vorteile aus der Entführung erhalten haben, sollten Sie sich auch an die Berufsethik halten und die Person unversehrt zurückgeben. Daher müssen wir die ursprüngliche Funktion der Funktion an der entsprechenden Stelle zurückrufen.
Tatsächlich stoßen wir häufig auf das Konzept des „Hijacking“. Wenn beispielsweise eine Website von einem Betreiber gekapert wird, erscheint beim Surfen auf der Website die Werbung des Betreibers.

Beispiel

Nehmen wir nun ein einfaches Beispiel, kapern die Funktion „alert()“ und fügen ihr eine kleine Funktionalität hinzu:

let warn = alertwindow.alert = (t) => {    if (confirm('How are you?')) warn(t)
}

alert('Help me...!!!')
Nach dem Login kopieren

Sie können die Entwicklung öffnen. Versuchen Sie dies Beispiel mit dem Tool: Sie werden feststellen, dass „Helfen Sie mir...!!!“ nur angezeigt wird, wenn Sie zur Bestätigung auf „OK“ klicken.
Als nächstes kapseln wir diesen Teil des Inhalts in eine allgemeine Funktion:

const hijack = (obj, method, fun) => {
  let orig = obj[method]
  obj[method] = fun(orig)
}
Nach dem Login kopieren

Zuerst definieren wir eine Hijack-Funktion, die zuerst die ursprüngliche Funktion speichert und sie dann automatisch ausführt. Definieren Sie eine Funktion und die Die ursprüngliche Funktion wird innerhalb der benutzerdefinierten Funktion aufgerufen.
Dann lasst uns die Funktion „Bestätigen“ kapern:

hijack(window, 'confirm', (orig) => {  return (text) => {
    alert('HELP ME PLZ!!!')    if (orig.call(this, text)) {
      alert('YOU SEEMS FINE AND I AM LEAVING, GOOD BYE!')
    } else {
      alert('HOLD ON! I AM COMING!!')
    }
  }
})
Nach dem Login kopieren

Die Funktion dieser Funktion ist sehr einfach und ich werde sie nicht im Detail erklären, und Sie werden es wissen:

Anti-Hijacking

Erstellen Sie eine neue Seite, öffnen Sie die Konsole Ihrer Entwicklertools, geben Sie die Warnung ein. Sie sehen diese Ausgabe:

function alert() { [native code] }
Nach dem Login kopieren

Dann verwenden Sie den Code am Anfang dieses Artikels, Hijack Alert() und Re-Enter Alert auf der Konsole. Sie sehen eine Ausgabe wie diese:

function (t) => {    if (confirm('How are you?')) warn(t)
}
Nach dem Login kopieren

Anhand des obigen Beispiels können Sie erkennen, ob eine Funktion gekapert wurde , Sie müssen es nur noch ausdrucken. Für systemnative Funktionen bedeutet [nativer Code], dass er rein und umweltfreundlich ist.

Verwandte Empfehlungen:

Eine kurze Diskussion über die Entführung von Javascript-Funktionen [nachgedruckt von xfocus]_Javascript-Kenntnisse

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Funktions-Hijacking-Beispielen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage