Analyse der Sicherheitslücke str_replace in PHP

不言
Freigeben: 2023-04-01 16:34:01
Original
3417 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Analyse der str_replace-Ersatzschwachstelle in PHP vor. Er hat einen gewissen Referenzwert. Jetzt kann ich ihn mit allen teilen.

Definition und Verwendung > str_replace()-Funktion verwendet eine Zeichenfolge, um andere Zeichen in einer Zeichenfolge zu ersetzen.

Syntax
str_replace(find,replace,string,count)
Parameterbeschreibung
find Erforderlich. Gibt den Wert an, nach dem gesucht werden soll.
Austausch erforderlich. Gibt den Wert an, der den Wert in „find“ ersetzen soll.
Zeichenfolge erforderlich. Gibt die Zeichenfolge an, nach der gesucht werden soll.
Zählung optional. Eine Variable, die die Anzahl der Ersetzungen zählt.

Tipps und Hinweise Hinweis: Bei dieser Funktion muss die Groß-/Kleinschreibung beachtet werden. Bitte verwenden Sie str_ireplace(), um eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen.
Hinweis: Diese Funktion ist binärsicher.

Beispiel 1

<?php 
echo str_replace("world","John","Hello world!"); 
?>
Nach dem Login kopieren

Ausgabe:


Hello John!
Nach dem Login kopieren

Beispiel 2
In diesem Beispiel werden wir str_replace( ) Funktion mit Array- und Zählvariablen:

<?php 
$arr = array("blue","red","green","yellow"); 
print_r(str_replace("red","pink",$arr,$i)); 
echo "Replacements: $i"; 
?>
Nach dem Login kopieren

Ausgabe:


Array 
( 
[0] => blue 
[1] => pink 
[2] => green 
[3] => yellow 
) 
Replacements: 1
Nach dem Login kopieren

Beispiel 3

<?php 
$find = array("Hello","world"); 
$replace = array("B"); 
$arr = array("Hello","world","!"); 
print_r(str_replace($find,$replace,$arr)); 
?>
Nach dem Login kopieren

Ausgabe:


Array 
( 
[0] => B 
[1] => 
[2] => ! 
)
Nach dem Login kopieren

Sicherheitslückenbezogene Funktionen:


<?php 
$arr1 = Array(  
&#39;http://img.jb51.net/img/offer/29/24/70/20/29247020&#39;, 
&#39;http://img.jb51.net/img/offer/29/24/70/20/29247020-1&#39;, 
&#39;http://img.jb51.net/img/offer/29/24/70/20/29247020-2&#39; 
); 
$arr2 = Array( 
&#39;http://localhost/root/ups/af48056fc4.jpg&#39;, 
&#39;http://localhost/root/ups/cf33240aa3.jpg&#39;, 
&#39;http://localhost/root/ups/c30e40419b.jpg&#39; 
); 
$data = &#39; 
<img src="http://img.jb51.net/img/offer/29/24/70/20/29247020"/> 
<img src="http://img.jb51.net/img/offer/29/24/70/20/29247020-1"/> 
<img src="http://img.jb51.net/img/offer/29/24/70/20/29247020-2"/>&#39;; 
$data = str_replace($arr1,$arr2,$data); 
var_dump($data); 
?>
Nach dem Login kopieren

Das Ergebnis nach dem Ersetzen ist:

string(169) ""Die Deklaration der Funktion str_replace sieht wahrscheinlich so aus: str_replace($search, $replace, $input[,&$count]), zum Beispiel beim Ersetzen einer Zeichenfolge, $input ist die Quellzeichenfolge (genannt Datenquelle). Dies ist sehr unvernünftig, da dadurch die Datenquelle an die dritte Position gesetzt wird, während str_pos, strtok, str_repeat und andere Funktionen die Datenquelle an die erste Position bringen. str_replace ersetzt nicht die entsprechende Zeichenfolge im Array, sondern die erste im Array und führt dann die verbleibenden Zeichenfolgen mit derselben Zeichenfolge zusammen.

Lösung:


function strrplace($arr1,$arr2,$data){ 
if(is_array($arr1)) {  
foreach($arr1 as $key => $value)  {
   $data = str_replace_once($value, $arr2[$key], $data);
  } } 
return $data;
}
function str_replace_once($needle, $replace, $data) //替换第一次
{
$pos = strpos($data, $needle);
if ($pos === false) {
return $data; 
}
return substr_replace($data, $replace, $pos, strlen($needle));
}
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Lernen aller hilfreich sein. Achten Sie bitte auf PHP-Chinesisch Webseite!

Verwandte Empfehlungen:

Analyse der Funktion filter_var() und der Filterfunktion in PHP

Über PHP-Abfangzeichenfolgen Zusammenfassung von einige Methoden

Das obige ist der detaillierte Inhalt vonAnalyse der Sicherheitslücke str_replace in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!