


Sprechen Sie darüber, wie Sie XSS-Cross-Site-Scripting-Angriffe in PHP verhindern können
PHP防止XSS跨站脚本攻击的方法:是针对非法的HTML代码包括单双引号等,使用htmlspecialchars()函数 。
在使用htmlspecialchars()函数的时候注意第二个参数, 直接用htmlspecialchars($string) 的话,第二个参数默认是ENT_COMPAT,函数默认只是转化双引号(“), 不对单引号(‘)做转义.
所以,htmlspecialchars函数更多的时候要加上第二个参数, 应该这样用: htmlspecialchars($string,ENT_QUOTES).当然,如果需要不转化任何引号,用htmlspecialchars($string,ENT_NOQUOTES).
另外, 尽量少用htmlentities, 在全部英文的时候htmlentities和htmlspecialchars没有区别,都可以达到目的.但是,中文情况下, htmlentities却会转化所有的html代码,连同里面的它无法识别的中文字符也给转化了。
htmlentities和htmlspecialchars这两个函数对 '之类的字符串支持不好,都不能转化, 所以用htmlentities和htmlspecialchars转化的字符串只能防止XSS攻击,不能防止SQL注入攻击.
所有有打印的语句如echo,print等 在打印前都要使用htmlentities() 进行过滤,这样可以防止Xss,注意中文要写出htmlentities($name,ENT_NOQUOTES,GB2312) 。
(1).网页不停地刷新 ''
(2).嵌入其它网站的链接 除了通过正常途径输入XSS攻击字符外,还可以绕过JavaScript校验,通过修改请求达到XSS攻击的目的.
<?php //php防注入和XSS攻击通用过滤 $_GET && SafeFilter($_GET); $_POST && SafeFilter($_POST); $_COOKIE && SafeFilter($_COOKIE); function SafeFilter (&$arr) { $ra=Array('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','/script/','/javascript/','/vbscript/','/expression/','/applet/' ,'/meta/','/xml/','/blink/','/link/','/style/','/embed/','/object/','/frame/','/layer/','/title/','/bgsound/' ,'/base/','/onload/','/onunload/','/onchange/','/onsubmit/','/onreset/','/onselect/','/onblur/','/onfocus/', '/onabort/','/onkeydown/','/onkeypress/','/onkeyup/','/onclick/','/ondblclick/','/onmousedown/','/onmousemove/' ,'/onmouseout/','/onmouseover/','/onmouseup/','/onunload/'); if (is_array($arr)) { foreach ($arr as $key => $value) { if (!is_array($value)) { if (!get_magic_quotes_gpc()) //不对magic_quotes_gpc转义过的字符使用addslashes(),避免双重转义。 { $value = addslashes($value); //给单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符) #加上反斜线转义 } $value = preg_replace($ra,'',$value); //删除非打印字符,粗暴式过滤xss可疑字符串 $arr[$key] = htmlentities(strip_tags($value)); //去除 HTML 和 PHP 标记并转换为 HTML 实体 } else { SafeFilter($arr[$key]); } } } } ?> $str = 'www.90boke.com<meta http-equiv="refresh" content="0;">'; SafeFilter ($str); //如果你把这个注释掉,提交之后就会无休止刷新 echo $str;
//------------------------------php防注入和XSS攻击通用过滤-----Start--------------------------------------------// function string_remove_xss($html) { preg_match_all("/\<([^\<]+)\>/is", $html, $ms); $searchs[] = '<'; $replaces[] = '<'; $searchs[] = '>'; $replaces[] = '>'; if ($ms[1]) { $allowtags = 'img|a|font|div|table|tbody|caption|tr|td|th|br|p|b|strong|i|u|em|span|ol|ul|li|blockquote'; $ms[1] = array_unique($ms[1]); foreach ($ms[1] as $value) { $searchs[] = "<".$value.">"; $value = str_replace('&', '_uch_tmp_str_', $value); $value = string_htmlspecialchars($value); $value = str_replace('_uch_tmp_str_', '&', $value); $value = str_replace(array('\\', '/*'), array('.', '/.'), $value); $skipkeys = 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','javascript','script','eval','behaviour','expression','style','class'); $skipstr = implode('|', $skipkeys); $value = preg_replace(array("/($skipstr)/i"), '.', $value); if (!preg_match("/^[\/|\s]?($allowtags)(\s+|$)/is", $value)) { $value = ''; } $replaces[] = empty($value) ? '' : "<" . str_replace('"', '"', $value) . ">"; } } $html = str_replace($searchs, $replaces, $html); return $html; } //php防注入和XSS攻击通用过滤 function string_htmlspecialchars($string, $flags = null) { if (is_array($string)) { foreach ($string as $key => $val) { $string[$key] = string_htmlspecialchars($val, $flags); } } else { if ($flags === null) { $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string); if (strpos($string, '&#') !== false) { $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', $string); } } else { if (PHP_VERSION < '5.4.0') { $string = htmlspecialchars($string, $flags); } else { if (!defined('CHARSET') || (strtolower(CHARSET) == 'utf-8')) { $charset = 'UTF-8'; } else { $charset = 'ISO-8859-1'; } $string = htmlspecialchars($string, $flags, $charset); } } } return $string; } //------------------php防注入和XSS攻击通用过滤-----End--------------------------------------------//
PHP中的设置
PHP5.2以上版本已支持HttpOnly参数的设置,同样也支持全局的HttpOnly的设置,在php.ini中
----------------------------------------------------- session.cookie_httponly = -----------------------------------------------------
设置其值为1或者TRUE,来开启全局的Cookie的HttpOnly属性,当然也支持在代码中来开启:
<?php ini_set("session.cookie_httponly", 1); // or session_set_cookie_params(0, NULL, NULL, NULL, TRUE); ?>
Cookie操作函数setcookie函数和setrawcookie函数也专门添加了第7个参数来做为HttpOnly的选项,开启方法为:
<?php setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); ?>
相关推荐:PHP教程
Das obige ist der detaillierte Inhalt vonSprechen Sie darüber, wie Sie XSS-Cross-Site-Scripting-Angriffe in PHP verhindern können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

So nutzen Sie PHP zur Abwehr von Cross-Site-Scripting-Angriffen (XSS) Angesichts der rasanten Entwicklung des Internets sind Cross-SiteScripting-Angriffe (XSS) eine der häufigsten Bedrohungen für die Netzwerksicherheit. XSS-Angriffe dienen hauptsächlich dem Zweck, an vertrauliche Benutzerinformationen zu gelangen und Benutzerkonten zu stehlen, indem sie bösartige Skripte in Webseiten einschleusen. Um die Sicherheit der Benutzerdaten zu schützen, sollten Entwickler geeignete Maßnahmen zur Abwehr von XSS-Angriffen ergreifen. In diesem Artikel werden einige häufig verwendete PHP-Technologien zur Abwehr von XSS-Angriffen vorgestellt.

Was ist das Prinzip des XSS-Angriffs? Mit der Popularität und Entwicklung des Internets rückt die Sicherheit von Webanwendungen zunehmend in den Mittelpunkt. Unter diesen ist Cross-SiteScripting (kurz XSS) eine häufige Sicherheitslücke, auf die Webentwickler achten müssen. XSS-Angriffe werden durchgeführt, indem bösartiger Skriptcode in eine Webseite eingeschleust und im Browser des Benutzers ausgeführt wird. Dadurch kann der Angreifer den Browser des Benutzers steuern und an die vertraulichen Informationen des Benutzers gelangen.

PHP-Datenfilterung: XSS- und CSRF-Angriffe verhindern Mit der Entwicklung des Internets ist die Netzwerksicherheit zu einem Schwerpunkt geworden. Bei der Website-Entwicklung ist es sehr wichtig, vom Benutzer übermittelte Daten zu filtern und zu überprüfen, insbesondere um XSS-Angriffe (Cross-Site-Scripting-Angriffe) und CSRF-Angriffe (Cross-Site-Request-Forgery-Angriffe) zu verhindern. In diesem Artikel wird erläutert, wie Sie mit PHP diese beiden häufigen Sicherheitslücken verhindern können, und es wird ein Beispielcode als Referenz bereitgestellt. Verhindern von XSS-Angriffen XSS-Angriffe beziehen sich auf böswillige Angreifer, die bösartige Skripte oder Codes einschleusen, um sie zu manipulieren

Zusammenfassung häufiger Netzwerksicherheitsprobleme und Lösungen bei der Java-Entwicklung: Mit der Popularisierung des Internets sind Netzwerksicherheitsprobleme immer wichtiger geworden. Während der Java-Entwicklung müssen wir darüber nachdenken, wie wir die Sicherheit der Netzwerkkommunikation schützen können. In diesem Artikel werden einige häufig auftretende Netzwerksicherheitsprobleme vorgestellt und entsprechende Lösungen und Codebeispiele bereitgestellt. 1. Cross-Site-Scripting-Angriff (XSS) Beim XSS-Angriff handelt es sich um eine Angriffsmethode, die durch das Einschleusen bösartiger Skripte in Webseiten an vertrauliche Benutzerinformationen gelangt. Um XSS-Angriffe zu verhindern, können wir eine regelmäßige Eingabeprüfung nutzen

Mit der rasanten Entwicklung des Internets sind Website-Sicherheitsprobleme zu einem großen Problem in der Online-Welt geworden. Cross-Site-Scripting-Angriffe (XSS) sind eine häufige Sicherheitslücke, bei der Schwachstellen von Websites ausgenutzt werden, um bösartige Skripts in Webseiten einzuschleusen, um Benutzerinformationen zu stehlen und zu manipulieren. Als effiziente und sichere Programmiersprache bietet uns die Go-Sprache leistungsstarke Tools und Techniken zur Verhinderung von XSS-Angriffen. In diesem Artikel werden einige Best Practices und Techniken vorgestellt, die Go-Sprachentwicklern helfen sollen, XSS-Angriffe effektiv zu verhindern und zu beheben. für alle Eingänge

Mit zunehmender Verbreitung des Internets werden Sicherheitsprobleme immer deutlicher. Bei der PHP-Entwicklung sind SQL-Injection und XSS-Angriffe die beiden häufigsten Sicherheitsprobleme. In diesem Artikel wird erläutert, wie Sie beide Angriffe vermeiden können. 1. Was ist SQL-Injection? Unter SQL-Injection versteht man die Ausnutzung von Schwachstellen einer Webanwendung durch einen Angreifer, um durch die Eingabe von SQL-Anweisungen eine Ausführung des Datenbankservers zu bewirken, die über die ursprüngliche Entwurfsabsicht hinausgeht. Angreifer können diese Schwachstellen ausnutzen, um bösartige Operationen durchzuführen, wie etwa das Lesen und Schreiben von Daten, die Erlangung von Administratorrechten usw. 2. Wie man es vermeidet

Im Zeitalter des Internets sind Injektions- und Cross-Site-Scripting-Angriffe (XSS) mit der anhaltenden Beliebtheit und Weiterentwicklung von Webanwendungen zu einem Schwerpunkt der Sicherheitspräventionsarbeit geworden. Unter anderem werden XSS-Angriffe von Angreifern durchgeführt, indem sie bösartige Skripte in Webseiten einfügen. PHP ist eine weit verbreitete serverseitige Skriptsprache in der Webentwicklung. Die Verwendung von PHP zur Vermeidung von XSS-Angriffen ist für Entwickler zu einem Muss geworden. Richtige Frage. Erstens ist es entscheidend, zu verstehen, wie XSS-Angriffe implementiert werden, um XSS-Angriffe zu verhindern. XSS

ThinkPHP ist ein beliebtes PHP-Entwicklungsframework, das leistungsstarke Funktionen und benutzerfreundliche Tools bietet und es Entwicklern ermöglicht, schnell effiziente Webanwendungen zu erstellen. Während des Entwicklungsprozesses müssen wir jedoch auf die häufige Netzwerksicherheitsbedrohung XSS (Cross-Site-Scripting-Angriff) achten. Bei einem XSS-Angriff handelt es sich um eine Technik, die bösartige Skripte einschleust, um Benutzerinformationen zu stehlen oder Malware zu verbreiten. In diesem Artikel werden einige Vorsichtsmaßnahmen besprochen, die berücksichtigt werden müssen, um XSS-Angriffe während der Entwicklung von ThinkPHP zu verhindern. Zuerst brauchen wir
