Was ist XSS: Für Laien kann ein XSS-Angriff genau wie die SQL-Injection auch als eine Injektion von HTML und JS betrachtet werden. Sie hatten ursprünglich gehofft, vom Benutzer einen nützlichen Text zu erhalten, aber der Benutzer hat Ihnen ein ausführbares Javascript oder ein anderes Skript mit Hintergedanken vorgelegt (das Zerstören von Stilen oder Dokumenttext wird hier nicht als Angriff betrachtet). Werden übermittelte Inhalte auf der Seite angezeigt, erfolgt der XSS-Angriff.
Es gibt unzählige Angriffsmethoden und -szenarien zu XSS. Dieser Artikel dient nur dazu, einige grundlegende Sicherheitsschutzkenntnisse bekannt zu machen (es handelt sich nicht um Flash-Skript-Angriffe). Ich empfehle ein Buch: <
Grundkenntnisse, die in diesem Artikel erlernt werden müssen: Cookies, Sitzungsprinzipien und ein gewisses Verständnis des TP-Frameworks.
1: Widersteht 99 % der Angriffsmethoden, anwendbar auf 90 % der Szenarien
Wenn die Website keine komplexen Benutzerinteraktionen beinhaltet, können alle von Benutzern eingereichten Aktionen ausgeführt werden Der Text wird von der Funktion htmlspecialchars verarbeitet.
Die Schritte in der THINKPHP3.2-Version sind:
1: Konfiguration in der Projektkonfigurationsdatei hinzufügen: 'DEFAULT_FILTER' => ; htmlspecialchars', // Standardfilterfunktion
Zwei: Verwenden Sie die I-Methode des Frames, um vom Benutzer übermittelte Daten zu erhalten;
Beispiel: M('Member' )->save(array('content'=>I('post.content')));Der auf diese Weise hinzugefügte Inhalt wurde von htmlspecialchars verarbeitet.
Frage: Warum wird er verarbeitet von htmlspecialchars Kann die Sicherheit von Text garantiert werden?
Antwort: Betrachtet man verschiedene XSS-Angriffsmethoden, so stützen sich die meisten auf ein oder mehrere der Zeichen <>'"&, um Inhalte einzuschleusen. Die Funktion der Funktion htmlspecialchars besteht darin, diese Zeichen in harmlose HTML-Entitäten umzuwandeln;
Frage: Warum gibt es eine so gute Methode, aber dennoch werden so viele Websites angegriffen?
Antwort: Weil viele Programmierer immer vergessen, diese Methode zu verwenden, indem sie einen bestimmten Teil auslassen von Daten
2: COOKIE an IP binden
Cookies enthalten im Allgemeinen automatische Anmeldeinformationen und Sitzungs-ID, auch für den Inhalt des Cookies. Alle werden verschlüsselt Informationen, die von anderen durch XSS-Angriffe erhalten werden, sind gleichbedeutend mit der Weitergabe Ihres Kontopassworts an andere.
Binden Sie das Cookie an die IP (natürlich können Sie auch weitere Informationen über den Benutzer erhalten). Ende kann gleichzeitig gebunden werden) Sie können anhand der IP des Benutzers beurteilen, ob dieses Cookie vom ursprünglichen autorisierten Benutzer stammt.
Typisches Anwendungsbeispiel:
Speichern automatische Anmeldeinformationen, wenn der Benutzer die automatische Anmeldung einstellt:
$auto=I('post.auto');//用户设置了自动登录 if(!empty($auto)){ cookie('auto',encrypt(serialize($data)));//将登录信息保存到cookie,其中$data里含有加密后的帐号,密码,和用户的IP,这里的cookie已在全局中设置过期日期为一周 }
Wenn der Benutzer den Browser schließt und die Website erneut besucht, Die automatischen Anmeldeinformationen werden gespeichert. Anmelden
if (!is_login()) {//是否未登录状态? $auth=cookie('auto'); if(!empty($auth)){//是否未有自动登录cookie? $data=unserialize(decrypt($auth)); if(!empty($data) && !empty($data['username']) && !empty($data['password']) && !empty($data['last_login_ip'])){ $user=M('Member')->where(array('username'=>$data['username'],'password'=>$data['password']))->find(); if(!empty($user['id'])&&($user['last_login_ip']==get_client_ip())){//cookie帐号密码是否有效?//IP来源是否相同? login_session($user['id'], $user['username'], $data['last_login_ip']);//用户自动登录成功 } } } }
Vorteile: In den meisten Fällen werden Cookies von XSS gestohlen Angriffe können ungültig gemacht werden. Nachteile: Da die IP möglicherweise von mehreren Computern geteilt wird, kann die Bindung nicht sehr präzise sein
Die neueste Version von thinkphp unterstützt diesen Parameter bereitsDieser Parameter kann sicherstellen, dass das Cookie nur in der http-Anfrage übertragen und nicht abgerufen wird durch das Skript auf der Seite ist es bereits verfügbar
4: Bemerkenswerte neue Funktionen von HTML5:
Das dem Iframe hinzugefügte Sandbox-Attribut kann verhindern, dass nicht vertrauenswürdige Webseiten bestimmte Vorgänge ausführen. Ich glaube, dass diese Methode in Zukunft weit verbreitet sein wird.
5: Rich-Text-Filterung
Rich-Text-Filterung ist nicht nur das problematischste Thema von XSS-Angriffen ist eine kleine Website, und selbst Giganten wie BAT haben täglich damit zu kämpfen
Weitere technische Artikel zu ThinkPHP finden Sie unter Tutorial zur Verwendung von ThinkPHP Spalte zum Lernen!
Das obige ist der detaillierte Inhalt vonthinkphp-Filter xss. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!