PHP和XSS跨站攻击_PHP
其实这个话题很早就想说说了,发现国内不少PHP站点都有XSS漏洞。今天偶然看到PHP5的一个XSS漏洞,在此小结一下。顺便提醒,使用PHP5的朋友最好打下补丁,或者升级一下。
如果你不懂什么是XSS,可以看这里,或者这里(中文的也许会好懂一些)。
国内不少论坛都存在跨站脚本漏洞,例如这里 有一个Google Hack XSS的攻击例子,针对的是Discuz 4.0.0RC3。国外也很多这样的例子,甚至Google也出现过,不过在12月初时修正了。跨站攻击很容易就可以构造,而且非常隐蔽,不易被查觉(通常盗取信息后马上跳转回原页面)。
如何攻击,在此不作说明(也不要问我),主要谈谈如何防范。首先,跨站脚本攻击都是由于对用户的输入没有进行严格的过滤造成的,所以我们必须在所有数据进入我们的网站和数据库之前把可能的危险拦截。针对非法的HTML代码包括单双引号等,可以使用htmlentities() 。
$str = "A 'quote' is bold";
// Outputs: A 'quote' is bold
echo htmlentities($str);
// Outputs: A 'quote' is bold
echo htmlentities($str, ENT_QUOTES);
?>
这样可以使非法的脚本失效。
但是要注意一点,htmlentities()默认编码为 ISO-8859-1,如果你的非法脚本编码为其它,那么可能无法过滤掉,同时浏览器却可以识别和执行。这个问题我先找几个站点测试后再说。
这里提供一个过滤非法脚本的函数:
function RemoveXSS($val) {
// remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
// this prevents some character re-spacing such as
// note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs
$val = preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\x20])/', '', $val);
// straight replacements, the user should never need these since they're normal characters
// this prevents like
$search = 'abcdefghijklmnopqrstuvwxyz';
$search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$search .= '1234567890!@#$%^&*()';
$search .= '~`";:? /={}[]-_|\'\\';
for ($i = 0; $i // ;? matches the ;, which is optional
// 0{0,7} matches any padded zeros, which are optional and go up to 8 chars
// @ @ search for the hex values
$val = preg_replace('/([x|X]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
// @ @ 0{0,7} matches '0' zero to seven times
$val = preg_replace('/({0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
}
// now the only remaining whitespace attacks are \t, \n, and \r
$ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
$ra2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
$ra = array_merge($ra1, $ra2);
$found = true; // keep replacing as long as the previous round replaced something
while ($found == true) {
$val_before = $val;
for ($i = 0; $i $pattern = '/';
for ($j = 0; $j if ($j > 0) {
$pattern .= '(';
$pattern .= '([x|X]0{0,8}([9][a][b]);?)?';
$pattern .= '|({0,8}([9][10][13]);?)?';
$pattern .= ')?';
}
$pattern .= $ra[$i][$j];
}
$pattern .= '/i';
$replacement = substr($ra[$i], 0, 2).'
$val = preg_replace($pattern, $replacement, $val); // filter out the hex tags
if ($val_before == $val) {
// no replacements were made, so exit the loop
$found = false;
}
}
}
}

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

Herausgeber des Machine Power Report: Wu Xin Die heimische Version des humanoiden Roboters + eines großen Modellteams hat zum ersten Mal die Betriebsaufgabe komplexer flexibler Materialien wie das Falten von Kleidung abgeschlossen. Mit der Enthüllung von Figure01, das das multimodale große Modell von OpenAI integriert, haben die damit verbundenen Fortschritte inländischer Kollegen Aufmerksamkeit erregt. Erst gestern veröffentlichte UBTECH, Chinas „größter Bestand an humanoiden Robotern“, die erste Demo des humanoiden Roboters WalkerS, der tief in das große Modell von Baidu Wenxin integriert ist und einige interessante neue Funktionen aufweist. Jetzt sieht WalkerS, gesegnet mit Baidu Wenxins großen Modellfähigkeiten, so aus. Wie Figure01 bewegt sich WalkerS nicht umher, sondern steht hinter einem Schreibtisch, um eine Reihe von Aufgaben zu erledigen. Es kann menschlichen Befehlen folgen und Kleidung falten

Vue ist ein beliebtes JavaScript-Framework, das in der Webentwicklung weit verbreitet ist. Da die Nutzung von Vue weiter zunimmt, müssen Entwickler auf Sicherheitsprobleme achten, um häufige Sicherheitslücken und Angriffe zu vermeiden. In diesem Artikel werden die Sicherheitsaspekte erörtert, auf die bei der Vue-Entwicklung geachtet werden muss, damit Entwickler ihre Anwendungen besser vor Angriffen schützen können. Validierung von Benutzereingaben Bei der Vue-Entwicklung ist die Validierung von Benutzereingaben von entscheidender Bedeutung. Benutzereingaben sind eine der häufigsten Quellen für Sicherheitslücken. Beim Umgang mit Benutzereingaben sollten Entwickler immer Folgendes tun

Mit der kontinuierlichen Weiterentwicklung des Internets gibt es immer mehr Webanwendungen, aber auch Sicherheitsaspekte geraten immer mehr in den Fokus. CSRF-Angriffe (CrossSiteRequestForgery, Cross-Site-Request-Forgery) sind ein häufiges Netzwerksicherheitsproblem. Was ist ein CSRF-Angriff? Der sogenannte CSRF-Angriff bedeutet, dass der Angreifer die Identität des Benutzers stiehlt und im Namen des Benutzers illegale Operationen ausführt. Laienhaft ausgedrückt bedeutet dies, dass der Angreifer den Anmeldestatus des Benutzers nutzt, um ohne Wissen des Benutzers illegale Vorgänge durchzuführen.

Die beste Lösung für Nginx, um Skriptangriffe zu verhindern. Skriptangriffe beziehen sich auf das Verhalten von Angreifern, die Skriptprogramme verwenden, um Zielwebsites anzugreifen, um böswillige Zwecke zu erreichen. Skriptangriffe gibt es in verschiedenen Formen, wie zum Beispiel SQL-Injection, XSS-Angriffe, CSRF-Angriffe usw. In Webservern wird Nginx häufig für Reverse-Proxy, Lastausgleich, statisches Ressourcen-Caching und andere Aspekte eingesetzt. Auch bei Skriptangriffen kann Nginx seine Vorteile voll ausspielen und eine effektive Verteidigung erreichen. 1. Wie Nginx Skriptangriffe in Ngin implementiert

Verwendung der Pattern.compile-Funktion in Java Die Pattern.compile-Funktion in Java ist eine Methode zum Kompilieren regulärer Ausdrücke. Der reguläre Ausdruck ist ein leistungsstarkes Tool zum Abgleichen und Verarbeiten von Zeichenfolgen, mit dem Zeichenfolgen gesucht, ersetzt, überprüft und andere Vorgänge ausgeführt werden können. Mit der Funktion Pattern.compile können wir ein String-Muster in ein Pattern-Objekt kompilieren, das dann zum Ausführen einer Reihe von String-Operationen verwendet werden kann. Muster.compi

Zu den Lösungen für Angriffe auf IP-Adressen gehören die Analyse von Angriffstypen, die Einrichtung von Firewalls, die Blockierung von IP-Adressen, die Isolierung von Kommunikationsverbindungen, die Benachrichtigung relevanter Behörden, die Stärkung des Sicherheitsschutzes, das Sammeln von Beweisen und die Stärkung von Schulungen zum Sicherheitsbewusstsein. Detaillierte Einführung: 1. Um den Angriffstyp zu analysieren, müssen Sie zunächst die Art und Methode des Angriffs analysieren, um das Verhalten und den Zweck des Angreifers zu verstehen. 2. Firewall-Einstellungen: Durch Konfigurieren von Firewall-Regeln können Sie den Zugriff auf die angegriffene IP einschränken. 3. IP-Blockierung: Wenn der Angriffsverkehr sehr heftig ist und den normalen Betrieb des Servers ernsthaft beeinträchtigt, können Sie erwägen, den angegriffenen Server vorübergehend zu blockieren usw.

Laut Nachrichten vom 31. Januar hat TheBrowserCompany kürzlich eine neue Anwendung namens ArcSearch veröffentlicht, die die KI-Technologie voll ausnutzt und Benutzern dabei helfen soll, die benötigten Informationen schneller und bequemer zu erhalten. Das Kernmerkmal der ArcSearch-Anwendung ist ihre „Browseforme“-Funktion, die auf Modellen von Unternehmen wie OpenAI basiert. Wenn ein Benutzer eine Suche durchführt, kann diese Funktion automatisch mindestens sechs verwandte Webseiten lesen, diese Informationen durch KI-Technologie integrieren, zusammenfassen und sie schließlich dem Benutzer auf einer neu gestalteten Seite anzeigen. Diese Seite enthält nicht nur relevante Informationen zu den Suchbegriffen, sondern unterteilt den Inhalt auch in verschiedene Teile, um ihn für Benutzer übersichtlicher zu machen.

In den letzten Jahren ist unser Leben mit der rasanten Entwicklung der Internet-Informationstechnologie zunehmend untrennbar mit dem Internet verbunden. Die Interaktion zwischen dem Netzwerk und unserem täglichen Leben ist untrennbar mit einer großen Menge an Code-Schreiben, -Übertragung und -Verarbeitung verbunden. Und diese Codes brauchen uns, um ihre Sicherheit zu schützen, sonst werden sie von böswilligen Angreifern für verschiedene Angriffe genutzt. Einer dieser Angriffe ist der XSS-Angriff. In diesem Artikel konzentrieren wir uns auf XSS-Angriffe in PHP und geben entsprechende Abwehrmethoden an. 1. Überblick über XSS-Angriffe XSS-Angriffe, auch bekannt als Cross-Site-Scripting-Angriffe, sind in der Regel
