Bei der Verarbeitung von Benutzereingaben in PHP ist sicherzustellen, dass der Eingangsinhalt sowohl sicher als auch im Einklang mit dem erwarteten Format ein wichtiger Zusammenhang in der Entwicklung ist. Insbesondere bei der Verarbeitung und Verhinderung potenzieller XSS-Angriffe mit mehreren Byte-String kann die Kombination von mb_eregi_replace () und filter_var () eine flexible und robuste Lösung liefern.
In diesem Artikel wird gezeigt, wie die von den Benutzern über diese beiden Funktionen übermittelten Daten effektiv reinigen und ersetzt werden können, um die Eingabe schlechter Inhalte zu verhindern und gültige Daten aufzubewahren.
MB_Eregi_Replace () ist eine Multi-Byte-Version von eregi_replace () , die Fall-unempfindliche reguläre Ersatzvorgänge ausführt. Es unterstützt die UTF-8-Codierung und ist ideal, um Strings mit chinesischen oder anderen Multibyte-Charakteren zu behandeln.
mb_eregi_replace(string $pattern, string $replacement, string $string, ?string $options = null): string
filter_var () ist eine der von PHP bereitgestellten Filterfunktionen zum Überprüfen und Reinigen von Variablen. Es kann verwendet werden, um E -Mails, URL, IP und andere Formate zu überprüfen und potenziell schädliche Code -Snippets zu entfernen.
filter_var(mixed $value, int $filter = FILTER_DEFAULT, array|int $options = 0): mixed
Angenommen, wir möchten einen von Benutzer eingereichten Kommentarinhalt verarbeiten. Wir müssen die folgenden Schritte ausführen:
Ersetzen Sie schlechte Worte (wie "Müll", "Betrüger" usw.);
Überprüfen und behalten Sie die gültige URL -Adresse darin;
Stellen Sie sicher, dass die Ergebnisse sauber, sicher und benutzerfreundlich sind.
Wir werden die Reinigungslogik mit diesem Ziel implementieren.
Hier ist ein vollständiges Beispiel, das zeigt, wie man mb_eregi_replace () und filter_var () in Kombination verwendet:
<?php
// Ursprüngliche Benutzereingabe
$input = "Sie haben den Benutzer aus,Gehen Sie schnellm66.net/spamBericht!außerdemm66.net/Schauen Sie sich die Betrügerseite an。";
// Wortschatz zu blockieren(Unterstützung Chinesisch)
$badWords = ['Müll', 'Betrug'];
// Ersetzen Sie sensible Wörter durch Sternchen
foreach ($badWords as $word) {
$pattern = preg_quote($word, '/');
$input = mb_eregi_replace($pattern, str_repeat('*', mb_strlen($word)), $input);
}
// ExtraktURLUnd überprüfen,Ersetzen Sie durch eine sichere Verbindung
$input = preg_replace_callback('/(https?:\/\/)?(m66\.net\/[^\s]+)/i', function ($matches) {
$url = 'http://' . $matches[2]; // Hinzufügen zuhttpPräfix zur Überprüfung
if (filter_var($url, FILTER_VALIDATE_URL)) {
return '<a href="' . htmlspecialchars($url) . '" target="_blank">' . htmlspecialchars($url) . '</a>';
}
return '';
}, $input);
// Ausgangsergebnis
echo $input;
?>
Angenommen, die Benutzereingabe lautet:
Du**Benutzer,Gehen Sie schnell<a href="http://m66.net/spam" target="_blank">http://m66.net/spam</a>Bericht!außerdem<a href="http://m66.net/****" target="_blank">http://m66.net/****</a>Schauen Sie sich auch die Seite an。
Verwandte Tags:
filter_var