In diesem Kapitel Wir werden uns einige gängige Angriffe ansehen, und wie die Beispiel-Bulletin-Board-Site angreifbar ist, und wie man es für diese Angriffe repariert. Die erste Schwachstelle, die wir uns ansehen werden ist Cross-Site-Scripting. Denken Sie daran, dass Cross-Site-Scripting eine Schwachstelle ist das passiert, wenn wir Eingaben von einem Benutzer entgegennehmen und einem anderen Benutzer anzeigen. Warum ist dies eine Schwachstelle? Denken Sie daran, was der Server an den Benutzer sendet wird als HTML-Seite angezeigt. Eine HTML-Seite kann JavaScript enthalten Das ist Code, der im Browser ausgeführt wird. Wir möchten nicht, dass Hacker Code auf unserer Website einfügen die in den Browsern anderer Benutzer ausgeführt wird. Die Bulletin-Board-Site hat zwei Stellen wo wir Eingaben von einem Benutzer entgegennehmen und anderen Benutzern anzeigen. Man ist in den Benutzerprofilen, und der andere ist in Bulletin Board Posts. Wir werden uns speziell die Benutzerprofile ansehen. Also hier, wenn wir neue Posts haben, wir können auf das Profil eines Benutzers klicken, auf den Namen des Benutzers um ihr Profil zu sehen. Und dort sehen wir das Profil für John. Wenn John jetzt sein Profil bearbeiten möchte, Ich bin derzeit als John angemeldet, Ich kann auf Profil bearbeiten klicken. Und dann können sie ihren About-Text ändern und ihr Profilbild ändern. Um zu testen, ob ein bestimmtes Feld vorhanden ist ist anfällig für Cross-Site-Scripting, wir müssen nur etwas HTML eingeben. Also zum Beispiel Lass uns das letzte bisschen fett machen, wenn wir anfällig für Cross-Site-Scripting sind. Wenn wir nicht anfällig für Cross-Site-Scripting sind, dann sehen wir das eigentliche Tag, stark. Wir gehen zurück und sehen uns Johns Profil an. Wir können also sehen, dass dieser Satz tatsächlich fett ist. Wir sehen die Tags nicht. Die Tags werden als HTML interpretiert. Das bedeutet, dass dieses spezielle Feld ist anfällig für Cross-Site-Scripting. Schauen wir uns ein anderes Beispiel an. Denken Sie daran, dass HTML JavaScript enthalten kann. Da es anfällig für Cross-Site-Scripting ist, Dieses Skript wird ausgeführt, wenn ein Benutzer Johns Profil anzeigt. Das Skript wurde also ausgeführt und eine Warnung angezeigt. Jetzt ist eine Warnung ziemlich harmlos, aber irgendein JavaScript hätte drin sein können, und es wäre hingerichtet worden. Cross-Site-Scripting ermöglicht es Hackern also, Code einzufügen in Ihre Website, die in den Browsern anderer Benutzer ausgeführt wird. Wie beheben wir das? Nun, die Grundidee ist, dass wir die Ausgabe verarbeiten müssen und bestimmte Schlüsselzeichen durch HTML-Äquivalente ersetzen. Beispielsweise, Wir ersetzen das Kleiner-als-Zeichen durch ein <. Wir ersetzen das Größer-als-Zeichen durch ein ähnliches HTML-Entität. Jetzt müssen wir das mit jedem einzelnen Charakter machen das ist speziell für HTML. Dies muss bei jeder Ausgabe erfolgen die wir an den Browser des Benutzers senden die Eingaben anderer Benutzer enthält. Und es ist wirklich einfach, Orte zu übersehen. Also der beste Weg, dies zu lösen ist die Verwendung eines Templating-Systems. Das Templating-System ist im Grunde eine Mini-Sprache die wir zum Erstellen unserer Webseiten verwenden. Lassen Sie mich Ihnen das Templating-System zeigen die diese bestimmte Website verwendet. Wir verwenden also das Templating-System Twig. Das sieht man zB. Wir haben dort eine Überschrift mit der Aufschrift Profil für, und dann in doppelten geschweiften Klammern, es ist person.name. Das nimmt den Inhalt einer Variablen namens Person, Nehmen Sie ein Feld namens name, und dann an den Webbrowser ausgeben. Vorlagensysteme schützen Sie standardmäßig aus Cross-Site-Scripting. Tatsächlich musste ich dieses Templating-System ausdrücklich darauf hinweisen um mich nicht zu beschützen damit wir die Schwachstelle sehen können. Wir schauen nach unten, wo wir den About-Text ausgeben. Ich habe dort die Raw-Flagge hinzugefügt um dem Templating-System mitzuteilen, schützt mich nicht vor Cross-Site-Scripting. Also lass mich diese rohe Flagge entfernen, Rette das und aktualisieren Sie dann dieses Profil. Jetzt können Sie also sehen, dass ich sehe das eigentliche JavaScript, in das sie eingegeben haben. Es wird nicht ausgeführt. Ein Templating-System ist bei weitem der beste Weg zum Schutz vor Cross-Site-Scripting, da es Sie jedes Mal automatisch schützt dass Sie etwas an den Webbrowser ausgeben. Sie müssen sich keine Sorgen machen, etwas zu verpassen in deinem filter. Es gibt eine weitere Cross-Site-Scripting-Schwachstelle auf der Bulletin-Board-Site. Denken Sie daran, worüber wir gesprochen haben als wir über Input und Output sprachen und welche Aktionen möglicherweise angreifbar sind. Ich überlasse es Ihnen als Übung diesen zu finden und zu reparieren. Danke fürs zuschauen. In der nächsten Lektion Wir werden uns die URL-Manipulation ansehen, Ein sehr häufiger Trick, den Hacker verwenden, um Zugang zu Bereichen zu erhalten Sie sollten nicht zugreifen können.