Heim  >  Artikel  >  Backend-Entwicklung  >  Studiennotizen zu PHP-Funktionen

Studiennotizen zu PHP-Funktionen

不言
不言Original
2018-04-17 15:57:091843Durchsuche

Der Inhalt dieses Artikels sind Studiennotizen zu PHP-Funktionen, die einen bestimmten Referenzwert haben. Jetzt können Freunde in Not darauf verweisen.

tr>
$_SERVER["PHP_SELF"] Eine superglobale Variable. Gibt den Dateinamen des aktuell ausgeführten Skripts zurück.
htmlspacialchars(var) Konvertieren Sie bestimmte Zeichen in HTML-Entitäten. Verhindert, dass Angreifer Code ausnutzen, indem sie HTML- oder JavaScript-Code in Formulare einfügen (Cross-Site-Scripting-Angriffe).
$_SERVER["PHP_SELF"] 一种超全局变量。返回当前执行脚本的文件名。
htmlspacialchars(var) 把特定字符转换为HTML实体。可防止攻击者通过在表单中注入HTML或JavaScript代码(跨站点脚本攻击)对代码进行利用。

应用:$_SERVER["PHP_SELF"]变量能够被黑客利用。如果你的页面使用了PHP_SELF,用户能够输入下划线然后执行跨站点脚本(XSS)。 

提示:跨站点脚本(Cross-site scripting,XSS)是一种计算机安全漏洞类型,常见于web应用程序。XSS能够使攻击者向其他用户浏览的网页中输入客户端脚本。

例:test.php页面中有表单:

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

如果地址栏中是正常URL:hhtp://www.example.com/test.php,上面代码会转换为:

<form method="post" action="test.php">

一旦输入:http://www.example.com/test.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E,上面代码会转换成:

<form method="post" action="test.php"/><script>alert(&#39;hacked&#39;);</script>

使用htmlspecialchars()函数避免上述情况,表单代码:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

这时输入http://www.example.com/test.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E,上面代码会转换成:

<form method="post" action="test.php/"><script>alert(&#39;hacked&#39;)</script>"
无法利用,没有伤害。
trim(var) 取出多余的空格、制表符、换行
stripslashes(var) 删除反斜杠()
$_SERVER["REQUEST_METHOD"]  
empty(var) 判断变量是否已经赋予数据且不为空。‘’、null、false、00、0、'0'、未定义、array()、var $var都返回true。
isset(var[,var[,...]]) 检测变量是否已经声明。未定义变量返回true。unset一个变量后,变量被取消了。
is_null(var) 检查值、变量、表达式是否为null。未定义变量传入也会返回true,但是会报错!
defined(var) 检测常量是否已经声明。

1、empty、isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null只是直接检查变量值,是否为null。

2、empty、isset输入参数必须是一个变量,而is_null输入参数只要是能够有返回值就可以(常量,变量,表达式等)。在php手册里,对于他们解析是:empty,isset是一个语言结构而非函数,因此它无法被变量函数调用。

preg_match(正则表达式,变量) 检索字符串的模式,如果模式存在则返回true,否则返回false。
   
   
   
   
   
   
   
   
   
   
   
   
Anwendung: Die Variable $_SERVER["PHP_SELF"] kann ausgenutzt werden von Hacker. Wenn Ihre Seite PHP_SELF verwendet, können Benutzer einen Unterstrich eingeben und Cross-Site-Scripting (XSS) ausführen.

Tipps: Cross-Site-Scripting (XSS) ist eine Art von Computersicherheitslücke, die in Webanwendungen häufig auftritt. XSS ermöglicht es Angreifern, clientseitige Skripte in Webseiten einzugeben, die von anderen Benutzern durchsucht werden.

Beispiel: Auf der Seite test.php gibt es ein Formular:

Wenn die Adressleiste eine normale URL ist: hhtp://www.example.com/test.php , der obige Code wird konvertiert in:

Nach der Eingabe: http://www.example.com/test.php/%22%3E%3Cscript%3Ealert('hacked')%3C/ script%3E, oben Der Code wird konvertiert in:

Verwenden Sie die Funktion htmlspecialchars(), um die obige Situation zu vermeiden:


Zu diesem Zeitpunkt: Geben Sie http://www.example.com/test.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E ein. Der obige Code wird konvertiert in:

Kann nicht ausgebeutet werden, kein Schaden.
trim(var) Überschüssige Leerzeichen, Tabulatoren und Zeilenumbrüche entfernen
stripslashes (var) Backslash() entfernen
$_SERVER["REQUEST_METHOD"]
empty(var) Bestimmen Sie, ob die VariableDaten wurden zugewiesen und sind nicht leer. „“, null, false, 00, 0, „0“, undefiniert, array() und var $var geben alle „true“ zurück.
isset(var[,var[,...]]) Überprüfen Sie, ob die Variable deklariert wurde. Gibt für undefinierte Variablen „true“ zurück. Nach dem Deaktivieren einer Variablen wird die Variable gelöscht.
is_null(var) Überprüfen Sie den Wert , Ob Variablen und Ausdrücke null sind. Die Übergabe undefinierter Variablen gibt ebenfalls true zurück, es wird jedoch ein Fehler gemeldet!
definiert(var) Überprüfen Sie, ob die Konstante Bereits deklariert.

1 Empty und isset prüft zunächst, ob die Variable vorhanden ist existiert, und ermitteln Sie dann den Variablenwert. Und is_null prüft einfach direkt den Variablenwert, um zu sehen, ob er null ist.

2. Die Eingabeparameter empty und isset müssen eine Variable sein, während der Eingabeparameter is_null einen Rückgabewert (Konstante, Variable, Ausdruck usw.) haben kann. Im PHP-Handbuch lautet ihre Analyse: leer, isset ist eine Sprachstruktur und keine Funktion und kann daher nicht von Variablenfunktionen aufgerufen werden.
preg_match(regulärer Ausdruck, Variable) Rufen Sie das Muster der Zeichenfolge ab, geben Sie „true“ zurück, wenn das Muster vorhanden ist, andernfalls geben Sie „false“ zurück.
td>
Verwandte Empfehlungen: 10 wenig bekannte, aber sehr nützliche PHP-Funktionen PHP-Funktion definiert keine Parametermethode

Das obige ist der detaillierte Inhalt vonStudiennotizen zu PHP-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn