


Zusammenfassung der Sicherheitsprobleme, die bei der Verwendung schwacher PHP-Typen beachtet werden müssen
Schwach typisierte Sprachen werden auch schwach typisierte Definitionssprachen genannt. Das Gegenteil von stark typisierten Definitionen. Sprachen wie VB und PHP sind schwach typisiert. In diesem Artikel finden Sie eine detaillierte Einführung in die Sicherheitsprobleme der schwachen PHP-Typen.
Vorwort
Ich glaube, jeder weiß, dass PHP die beste Sprache der Welt ist, und die Probleme von PHP selbst können auch als solche angesehen werden Web-Sicherheit. Die Funktionen in PHP sind schwache Typen und integrierte Funktionen lockere Handhabung eingehender Parameter.
In diesem Artikel werden hauptsächlich die Probleme in PHP-Funktionen beschrieben, auf die ich auf der offensiven und defensiven Plattform gestoßen bin, sowie die Probleme, die durch die schwachen Typen von PHP verursacht werden. Es hat einen gewissen Referenzwert für jeden beim Erlernen oder Verwenden von PHP. Schauen wir uns das gemeinsam an.
Einführung in schwache PHP-Typen
Der Herausgeber hält PHP für sehr leistungsfähig, weil PHP Entwicklern viele einzigartige Funktionen bietet verwenden, einer davon ist der schwache PHP-Typ-Mechanismus.
In PHP können Sie die folgenden Vorgänge ausführen.
$param = 1; $param = array(); $param = "stringg";
Schwach typisierte Sprache unterliegt keinen Einschränkungen hinsichtlich des Datentyps von Variablen. Sie können Variablen jederzeit jedem anderen Variablentyp zuweisen, und Variablen können auch in „Beliebig“ konvertiert werden andere Art von Daten.
TypkonvertierungProbleme
Typkonvertierung ist ein unvermeidbares Problem. Wenn Sie beispielsweise GET- oder POST-Parameter in den Typ int konvertieren müssen oder wenn die beiden Variablen nicht übereinstimmen, konvertiert PHP die Variablen automatisch. Allerdings ist PHP eine schwach typisierte Sprache, was zu vielen unerwarteten Problemen bei der Typkonvertierung führt.
Vergleichsoperator
Typkonvertierung
Im Vergleich von $a==$b
$a=null;$b=flase ; //true $a='';$b=null; //true
Es gibt viele solcher Beispiele und diese Vergleiche sind alle gleichwertig.
Bei der Verwendung von Vergleichsoperatoren treten auch Typkonvertierungsprobleme auf, wie folgt:
0=='0' //true 0 == 'abcdefg' //true 0 === 'abcdefg' //false 1 == '1abcdef' //true
Wenn Variablen unterschiedlichen Typs verglichen werden, kann es zu Variablenkonvertierungsproblemen kommen Probleme nach der Umstellung.
Hash-Vergleich
Zusätzlich zu der oben genannten Methode gibt es auch Probleme beim Durchführen eines Hash-Vergleichs. Wie folgt:
"0e132456789"=="0e7124511451155" //true "0e123456abc"=="0e1dddada" //false "0e1abc"=="0" //true
Wenn beim Durchführen von Vergleichsoperationen eine Zeichenfolge wie 0ed+
angetroffen wird, wird diese Zeichenfolge in wissenschaftliche Notation analysiert. Daher sind die Werte der beiden Zahlen im obigen Beispiel beide 0 und daher gleich. Dieses Muster ist nicht gleich, wenn 0ed+
nicht erfüllt ist. Diese Frage wird bei der MD5-Kollision in der Offensiv- und Defensivplattform getestet.
HexadezimalDezimalkonvertierung
Es gibt auch ein Problem beim Vergleich hexadezimaler Restzeichenfolgen.
Beispiele sind wie folgt:
"0x1e240"=="123456" //true "0x1e240"==123456 //true "0x1e240"=="1e240" //false
Wenn einer der Strings mit 0x beginnt, analysiert PHP den String in eine Dezimalzahl und vergleicht ihn dann mit 0x1240, geparst in eine Dezimalzahl, also 123456 Der Vergleich mit 123456 von int-Typ und string-Typ ist gleich. Die Schwierigkeit bei der Benennung der Offensiv- und Defensivplattform ist auf diese Eigenschaft der Inspektion zurückzuführen.
Typkonvertierung
Übliche Konvertierungen sind hauptsächlich die Konvertierung von int in string und von string in int.
int zu string:
$var = 5; 方式1:$item = (string)$var; 方式2:$item = strval($var);
string zu int: intval()
Funktion.
Für diese Funktion können Sie sich zunächst 2 Beispiele ansehen.
var_dump(intval('2')) //2 var_dump(intval('3abcd')) //3 var_dump(intval('abcd')) //0
Erklärungintval()
Bei der Konvertierung wird die Konvertierung vom Anfang der Zeichenfolge durchgeführt, bis ein nicht numerisches Zeichen angetroffen wird. Auch wenn eine Zeichenfolge erscheint, die nicht konvertiert werden kann, meldet intval()
keinen Fehler, sondern gibt 0 zurück. Die Eigenschaften von
intval()
werden in der Frage von MYSQL in der Offensiv- und Defensivplattform getestet.
Gleichzeitig sollten Programmierer beim Programmieren nicht den folgenden Code verwenden:
if(intval($a)>1000) { mysql_query("select * from news where id=".$a) }
Zu diesem Zeitpunkt kann der Wert von $a 1002 Union sein…..
Die Lockerheit der Parameter der integrierten Funktionen
Die Lockerheit der integrierten Funktionen bedeutet, dass beim Aufrufen von a Funktion: Der Funktion wird ein Parametertyp übergeben, den die Funktion nicht akzeptieren kann. Die Erklärung ist etwas verwirrend, deshalb wollen wir das Problem direkt anhand praktischer Beispiele veranschaulichen. Im Folgenden konzentrieren wir uns auf einige solcher Funktionen.
md5()
$array1[] = array( "foo" => "bar", "bar" => "foo", ); $array2 = array("foo", "bar", "hello", "world"); var_dump(md5($array1)==var_dump($array2)); //true
Die Beschreibung der md5()-Funktion im PHP-Handbuch lautet string md5 ( string $str [, bool $raw_output = false ] )
, und der Wert in md5()
muss sein vom Typ String-Parameter sein. Wenn Sie jedoch ein Array übergeben, meldet md5()
keinen Fehler und Knowledge kann den MD5-Wert des Arrays nicht korrekt berechnen. Dies führt dazu, dass die MD5-Werte zweier Arrays gleich sind. Dieses md5()
Feature wird auch im Bypass wieder in der Offensiv- und Defensivplattform berücksichtigt.
strcmp()
strcmp()
函数在PHP官方手册中的描述是int strcmp ( string $str1 , string $str2 )
,需要给strcmp()
传递2个string类型的参数。如果str1小于str2,返回-1,相等返回0,否则返回1。strcmp函数比较字符串的本质是将两个变量转换为ascii,然后进行减法运算,然后根据运算结果来决定返回值。
如果传入给出strcmp()
的参数是数字呢?
$array=[1,2,3]; var_dump(strcmp($array,'123')); //null,在某种意义上null也就是相当于false。
strcmp这种特性在攻防平台中的pass check有考到。
switch()
如果switch是数字类型的case的判断时,switch会将其中的参数转换为int类型。如下:
$i ="2abc"; switch ($i) { case 0: case 1: case 2: echo "i is less than 3 but not negative"; break; case 3: echo "i is 3"; }
这个时候程序输出的是i is less than 3 but not negative
,是由于switch()
函数将$i进行了类型转换,转换结果为2。
in_array()
在PHP手册中,in_array()
函数的解释是bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
,如果strict参数没有提供,那么in_array就会使用松散比较来判断$needle
是否在$haystack
中。当strince的值为true时,in_array()
会比较needls的类型和haystack中的类型是否相同。
$array=[0,1,2,'3']; var_dump(in_array('abc', $array)); //true var_dump(in_array('1bc', $array)); //true
可以看到上面的情况返回的都是true,因为'abc'会转换为0,'1bc'转换为1。
<a href="http://www.php.cn/wiki/1007.html" target="_blank">array_search</a>()
与in_array()
也是一样的问题。
Das obige ist der detaillierte Inhalt vonZusammenfassung der Sicherheitsprobleme, die bei der Verwendung schwacher PHP-Typen beachtet werden müssen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Verwenden Sie in PHP das Klonschlüsselwort, um eine Kopie des Objekts zu erstellen und das Klonierungsverhalten über die \ _ \ _ Clone Magic -Methode anzupassen. 1. Verwenden Sie das Klonschlüsselwort, um eine flache Kopie zu erstellen und die Eigenschaften des Objekts, nicht die Eigenschaften des Objekts zu klonen. 2. Die \ _ \ _ Klonmethode kann verschachtelte Objekte tief kopieren, um flache Kopierprobleme zu vermeiden. 3. achten Sie darauf, dass kreisförmige Referenzen und Leistungsprobleme beim Klonen vermieden werden, und optimieren Sie die Klonierungsvorgänge, um die Effizienz zu verbessern.

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.

Zu den wichtigsten Spielern in HTTP-Cache-Headern gehören Cache-Control, ETAG und Last-modifiziert. 1.Cache-Control wird verwendet, um die Richtlinien zu kontrollieren. Beispiel: Cache-Control: max-ay = 3600, öffentlich. 2. ETAG überprüft Ressourcenänderungen durch eindeutige Identifikatoren, Beispiel: ETAG: "686897696A7C876B7E". 3. Last-modifiziert gibt die letzte Änderungszeit der Ressource an, Beispiel: Last-Modified: Mi, 21okt201507: 28: 00GMT.

In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

PHP ist eine serverseitige Skriptsprache, die für dynamische Webentwicklung und serverseitige Anwendungen verwendet wird. 1.PHP ist eine interpretierte Sprache, die keine Zusammenstellung erfordert und für die schnelle Entwicklung geeignet ist. 2. PHP -Code ist in HTML eingebettet, wodurch es einfach ist, Webseiten zu entwickeln. 3. PHP verarbeitet die serverseitige Logik, generiert die HTML-Ausgabe und unterstützt Benutzerinteraktion und Datenverarbeitung. 4. PHP kann mit der Datenbank interagieren, die Einreichung von Prozessformularen und serverseitige Aufgaben ausführen.

PHP hat das Netzwerk in den letzten Jahrzehnten geprägt und wird weiterhin eine wichtige Rolle bei der Webentwicklung spielen. 1) PHP stammt aus dem Jahr 1994 und ist aufgrund seiner Benutzerfreundlichkeit und der nahtlosen Integration in MySQL die erste Wahl für Entwickler. 2) Zu den Kernfunktionen gehört das Generieren dynamischer Inhalte und die Integration in die Datenbank, sodass die Website in Echtzeit aktualisiert und auf personalisierte Weise angezeigt wird. 3) Die breite Anwendung und das Ökosystem von PHP hat seine langfristigen Auswirkungen angetrieben, steht jedoch auch mit Versionsaktualisierungen und Sicherheitsherausforderungen gegenüber. 4) Leistungsverbesserungen in den letzten Jahren, wie die Veröffentlichung von PHP7, ermöglichen es ihm, mit modernen Sprachen zu konkurrieren. 5) In Zukunft muss PHP sich mit neuen Herausforderungen wie Containerisierung und Microservices befassen, aber seine Flexibilität und die aktive Community machen es anpassungsfähig.

Zu den Kernvorteilen von PHP gehören einfacher Lernen, starke Unterstützung für Webentwicklung, reiche Bibliotheken und Rahmenbedingungen, hohe Leistung und Skalierbarkeit, plattformübergreifende Kompatibilität und Kosteneffizienz. 1) leicht zu erlernen und zu bedienen, geeignet für Anfänger; 2) gute Integration in Webserver und unterstützt mehrere Datenbanken. 3) leistungsstarke Frameworks wie Laravel; 4) hohe Leistung kann durch Optimierung erzielt werden; 5) mehrere Betriebssysteme unterstützen; 6) Open Source, um die Entwicklungskosten zu senken.


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

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung