1. Code
  2. PHP

Mit PHP sauber werden

Scroll to top
12 min read

German (Deutsch) translation by Valentina (you can also view the original English article)

Datensicherheit ist wichtig und wird von Designern, Entwicklern und Kunden gleichermaßen unterbewertet. Seit PHP 5.2.0 wurde die Bereinigung und Validierung von Daten durch die Einführung der Datenfilterung erheblich vereinfacht. Heute werden wir uns diese Filter genauer ansehen, wie sie verwendet werden, und einige benutzerdefinierte Funktionen erstellen.

Tutorial Details

  • Programm: PHP
  • Version: 5.2.0+
  • Schwierigkeit: Anfänger
  • Geschätzte Fertigstellungszeit:20 Minuten

Einführung

Ich hatte immer das Gefühl, dass es einfach ist, Code in PHP zu schreiben, und noch einfacher, schlechten Code in PHP zu schreiben. Die Verbreitung von PHP im Web wurde durch die Verwendung in beliebten Open-Source-Softwarepaketen wie WordPress, Drupal und Magento sowie in wichtigen Webanwendungen wie Facebook erheblich unterstützt. Da PHP in so vielen verschiedenen Fällen verwendet wird (dynamische Websites, ausführliche Webanwendungen, Blogging-Plattformen, Content-Management-Systeme und E-Commerce sind nur eine Teilmenge der vielen Anwendungen von PHP), bestehen die Möglichkeiten für schmutzige Daten und unsichere Systeme zahlreich. In diesem Tutorial werden einige Methoden zum Reinigen mit PHP erläutert: Datenbereinigung und -validierung, wobei der Schwerpunkt auf verschiedenen Formen der Dateneingabe und der Verwendung von PHP-Filtern und benutzerdefinierten Funktionen liegt.

Sanitization and Validation of FormsSanitization and Validation of FormsSanitization and Validation of Forms

Warum desinfizieren und validieren?

In diesem Tutorial konzentrieren wir uns wirklich auf Dateneingaben, die Benutzer oder externe Quellen bereitstellen können. Dies bedeutet, dass wir die empfangenen Daten nicht kontrollieren. Wir können nur kontrollieren, was damit gemacht wird, nachdem wir es erhalten haben. Es gibt alle Arten von Bedrohungen im Zusammenhang mit der Datensicherheit durch Benutzereingaben und Daten von Drittanbietern.

Einige unpopuläre Bedrohungen für die Datensicherheit:

  • Cross-Site Scripting(XSS): Eine Form der Code-Injection, bei der ein Skript von einer völlig anderen Website auf eine Website injiziert wird. Dies ist bei weitem die häufigste Sicherheitslücke im Internet. Zwei aktuelle, sehr bekannte Beispiele für diese Technik sind die Twitter-Würmer Stalk Daily und Mikeyy von Anfang dieses Jahres, die schlecht bereinigte Eingaben verwendeten, um Javascript über eine "infizierte" Twitter-Weboberfläche zu starten.
  • SQL-Injection: Dies ist die zweithäufigste Sicherheitslücke im Internet. Dies ist eine andere Form der Code-Injection, bei der ein Skript verwendet wird, um an einem der zahlreichen ausbeuterischen Verhaltensweisen teilzunehmen, einschließlich (aber nicht beschränkt auf) Offenlegen und/oder Erhalten von nicht autorisiertem Zugriff auf Daten und Ändern Daten innerhalb einer Datenbank oder einfach das Einfügen von Code, der innerhalb einer Website gerendert oder ausgeführt werden soll, wodurch die Website beschädigt oder verändert wird.
  • Cross-Site Request Forgery (CSRF/XSRF): CSRF (ausgesprochen "Sea-Surf") ist ein weniger verbreiteter Exploit, der sich mehr auf Datenquellen wie Browser- und Sitzungscookies als auf schlecht bereinigte und validierte Dateneingaben stützt eine Website ohne die Erlaubnis des Benutzers. Eine beliebte CSRF-Methode ist die Verwendung eines falsch geformten Bilddaten-URI oder eines src-Werts, um ein Skript auszuführen, anstatt ein Bild anzuzeigen.
  • Improper Data: Nicht wirklich eine "Sicherheitslücke" an sich, falsche Daten können für einen Websitebesitzer oder Datenbankadministrator eine Vielzahl von Problemen verursachen. Falsche Daten können häufig schlecht codierte Websites beschädigen oder zum Absturz automatisierter Systeme führen. Ein Beispiel hierfür war die Möglichkeit, ganze MySpace-Profilseiten durch Posten mit allen Arten von HTML/CSS-Hackery zu ändern (Hinweis: Dies funktioniert möglicherweise immer noch; ich habe MySpace schon lange nicht mehr verwendet).
Exploits of a MomExploits of a MomExploits of a Mom
Bildquelle: XKCD

Für unsere Zwecke konzentrieren wir uns nur auf serverseitige Methoden zur Verbesserung der Datensicherheit mit PHP. Lassen Sie uns also sehen, wie die Begriffe "Desinfektion" und "Validierung" in Bezug auf PHP definiert sind. Laut PHP-Handbuch:

Die Validierung wird verwendet, um zu validieren oder zu überprüfen, ob die Daten bestimmte Qualifikationen erfüllen. Wenn Sie beispielsweise FILTER_VALIDATE_EMAIL übergeben, wird festgestellt, ob die Daten eine gültige E-Mail-Adresse sind, die Daten selbst werden jedoch nicht geändert.

Durch die Bereinigung werden die Daten bereinigt, sodass sie möglicherweise durch Entfernen unerwünschter Zeichen geändert werden. Wenn Sie beispielsweise FILTER_SANITIZE_EMAIL übergeben, werden Zeichen entfernt, die für eine E-Mail-Adresse ungeeignet sind. Das heißt, es validiert die Daten nicht.

Wenn Ihre Website der Nachtclub ist, in den jeder eintreten möchte, überprüft die Validierung im Wesentlichen die Gästeliste und die Ausweise an der Tür, während die Desinfektion als Türsteher fungiert, der unerwünschte Ereignisse ausstößt, die vorbeiziehen. Schauen wir uns vor diesem Hintergrund die PHP-Filtererweiterung an.

Welche Filter habe ich?

Nicht alle PHP-Installationen sind gleich. Während PHP 5.2.0 die Einführung von Filtern war, haben nicht alle Installationen den gleichen Satz von Filtern in ihrer Filtererweiterung. Die meisten Installationen enthalten alle Filter, die wir behandeln werden. Um Ihnen jedoch etwas über die Filtererweiterung beizubringen, werden wir herausfinden, was sich auf Ihrem Server befindet. In den Quell-Download habe ich eine Datei namens getfilters.php aufgenommen, die nach der Installation und Ausführung auf Ihrem Server alle Ihre Filter anzeigt (sowohl Datenfilter, die über die Funktion filter_var verfügbar sind, als auch Stream-Filter, die über stream_filter_append verfügbar sind).

1
2
 echo "<h1>Data Filters</h1>\n<table>\n<tr>\n";
3
 echo "<td><strong>Filter ID</strong></td>\n";
4
 echo "<td><strong>Filter Name</strong></td>\n</tr>";
5
 foreach(filter_list() as $id =>$filter) {
6
	 echo "<tr><td>$filter</td><td>".filter_id($filter)."</td></tr>\n";
7
 }
8
 echo "</table>\n";

Zuerst erhalten wir das Array mit der Liste aller verfügbaren Filter mit filter_list, dann durchlaufen wir das Array und geben den Filternamen aus, ermitteln die zugewiesene ID des Filters und geben diese ID ebenfalls wieder.

Wie verwende ich einen Filter?

PHP-Filter zur Validierung und Bereinigung werden aktiviert, indem mindestens zwei Werte an die PHP-Filtererweiterungsfunktion filter_var übergeben werden. Verwenden wir als Beispiel den Desinfektionsfilter für eine Ganzzahl wie folgt:

1
2
$value = '123abc456def';
3
echo filter_var($value, FILTER_SANITIZE_NUMBER_INT);

Im Beispiel haben wir eine Variable $value, die mit dem Filter FILTER_SANITIZE_NUMBER_INT durch die Filtererweiterungsfunktion filter_var übergeben wird. Dies führt zu folgender Ausgabe:

1
2
123456

Der Bereinigungsfilter für eine Ganzzahl entfernt alle nicht ganzzahligen Zeichen aus der Ausgabe und erzeugt eine saubere Ganzzahl. Innerhalb des Download-Quellcodes können Sie verschiedene Eingaben ausprobieren und es werden eine Reihe allgemeiner Filter auf Ihren Eingabewert angewendet. Ich habe eine Reihe verschiedener Beispielzeichenfolgen eingefügt, die Sie ebenfalls testen können.

Was machen die verschiedenen Filter?

Die folgende Liste ist nicht vollständig, enthält jedoch die meisten Filter, die standardmäßig mit Installationen ab 5.2.0 geliefert werden. Benutzerdefinierte Filter und solche, die aus benutzerdefinierten Erweiterungen hinzugefügt wurden, sind hier nicht enthalten.

FILTER_VALIDATE_BOOLEAN: Überprüft, ob die an den Filter übergebenen Daten ein boolescher Wert von TRUE oder FALSE sind. Wenn der Wert kein boolescher Wert ist, wird FALSE zurückgegeben. Das folgende Skript würde "TRUE" für die Beispieldaten $value01 wiedergeben, aber "FALSE" für die Beispieldaten $value02 wiedergeben:

1
2
$value01 = TRUE;
3
if(filter_var($value01,FILTER_VALIDATE_BOOLEAN)) {
4
 echo 'TRUE';
5
} else {
6
 echo 'FALSE';
7
}
8
echo '<br /><br />'
9
$value02 = TRUE;
10
if(filter_var($value02,FILTER_VALIDATE_BOOLEAN)) {
11
 echo 'TRUE';
12
} else {
13
 echo 'FALSE';
14
}

FILTER_VALIDATE_EMAIL: Überprüft, ob die an den Filter übergebenen Daten eine potenziell gültige E-Mail-Adresse sind. Es wird nicht geprüft, ob die E-Mail-Adresse tatsächlich vorhanden ist, sondern nur, ob das Format der E-Mail-Adresse gültig ist. Das folgende Skript würde "TRUE" für die Beispieldaten $value01 wiedergeben, aber "FALSE" für die Beispieldaten $value02 wiedergeben (da dem zweiten der erforderliche @ domain.tld-Teil der E-Mail-Adresse fehlt):

1
2
$value01 = 'test@example.com';
3
if(filter_var($value01,FILTER_VALIDATE_EMAIL)) {
4
 echo 'TRUE';
5
} else {
6
 echo 'FALSE';
7
}
8
echo '<br /><br />'
9
$value02 = 'nettuts';
10
if(filter_var($value02,FILTER_VALIDATE_EMAIL)) {
11
 echo 'TRUE';
12
} else {
13
 echo 'FALSE';
14
}

FILTER_VALIDATE_FLOAT: Überprüft, ob die an den Filter übergebenen Daten ein gültiger Gleitkommawert sind. Das folgende Skript würde "TRUE" für die Beispieldaten $value01 wiedergeben, aber "FALSE" für die Beispieldaten $value02 wiedergeben (da Komma-Trennzeichen in Gleitkommawerten nicht zulässig sind):

1
2
$value01 = '1.234';
3
if(filter_var($value01,FILTER_VALIDATE_FLOAT)) {
4
 echo 'TRUE';
5
} else {
6
 echo 'FALSE';
7
}
8
echo '<br /><br />'
9
$value02 = '1,234';
10
if(filter_var($value02,FILTER_VALIDATE_FLOAT)) {
11
 echo 'TRUE';
12
} else {
13
 echo 'FALSE';
14
}

FILTER_VALIDATE_INT: Überprüft, ob die an den Filter übergebenen Daten ein gültiger ganzzahliger Wert sind. Das folgende Skript würde "TRUE" für die Beispieldaten $value01 wiedergeben, aber "FALSE" für die Beispieldaten $value02 wiedergeben (da Brüche/Dezimalzahlen keine ganzen Zahlen sind):

1
2
$value01 = '123456';
3
if(filter_var($value01,FILTER_VALIDATE_INT)) {
4
 echo 'TRUE';
5
} else {
6
 echo 'FALSE';
7
}
8
echo '<br /><br />'
9
$value02 = '123.456';
10
if(filter_var($value02,FILTER_VALIDATE_INT)) {
11
 echo 'TRUE';
12
} else {
13
 echo 'FALSE';
14
}

FILTER_VALIDATE_IP: Überprüft, ob die an den Filter übergebenen Daten eine potenziell gültige IP-Adresse sind. Es wird nicht geprüft, ob sich die IP-Adresse auflösen würde, sondern nur, ob sie der erforderlichen Datenstruktur für IP-Adressen entspricht. Das folgende Skript würde "TRUE" für die Beispieldaten $value01 wiedergeben, aber "FALSE" für die Beispieldaten $value02 wiedergeben:

1
2
$value01 = '192.168.0.1';
3
if(filter_var($value01,FILTER_VALIDATE_IP)) {
4
 echo 'TRUE';
5
} else {
6
 echo 'FALSE';
7
}
8
echo '<br /><br />'
9
$value02 = '1.2.3.4.5.6.7.8.9';
10
if(filter_var($value02,FILTER_VALIDATE_IP)) {
11
 echo 'TRUE';
12
} else {
13
 echo 'FALSE';
14
}

FILTER_VALIDATE_URL: Überprüft, ob die an den Filter übergebenen Daten eine potenziell gültige URL sind. Es wird nicht geprüft, ob sich die URL auflösen würde, sondern nur, ob sie der erforderlichen Datenstruktur für URLs entspricht. Das folgende Skript würde "TRUE" für die Beispieldaten $value01 wiedergeben, aber "FALSE" für die Beispieldaten $value02 wiedergeben:

1
2
$value01 = 'http://net.tutsplus.com';
3
if(filter_var($value01,FILTER_VALIDATE_URL)) {
4
 echo 'TRUE';
5
} else {
6
 echo 'FALSE';
7
}
8
echo '<br /><br />'
9
$value02 = 'nettuts';
10
if(filter_var($value02,FILTER_VALIDATE_URL)) {
11
 echo 'TRUE';
12
} else {
13
 echo 'FALSE';
14
}

FILTER_SANITIZE_STRING: Standardmäßig entfernt dieser Filter alle Daten aus einer Zeichenfolge, die in dieser Zeichenfolge ungültig oder nicht zulässig ist. Dadurch werden beispielsweise alle HTML-Tags wie <script> oder <strong> aus einer Eingabezeichenfolge entfernt:

1
2
$value = '<script>alert('TROUBLE HERE');</script>';
3
echo filter_var($value, FILTER_SANITIZE_STRING);

Dieses Skript würde die Tags entfernen und Folgendes zurückgeben:

1
2
alert('TROUBLE HERE');

FILTER_SANITIZE_ENCODED: Viele Programmierer verwenden die urlencode()-Funktion von PHP, um ihre URL-Codierung zu handhaben. Dieser Filter macht im Wesentlichen das Gleiche. Dies codiert beispielsweise alle Leerzeichen und/oder Sonderzeichen aus einer Eingabezeichenfolge:

1
2
$value = '<script>alert('TROUBLE HERE');</script>';
3
echo filter_var($value, FILTER_SANITIZE_ENCODED);

Dieses Skript codiert die Interpunktion, Leerzeichen und Klammern und gibt dann Folgendes zurück:

1
2
%3Cscript%3Ealert%28%27TROUBLE%20HERE%27%29%3B%3C%2Fscript%3E

FILTER_SANITIZE_SPECIAL_CHARS: Dieser Filter codiert standardmäßig HTML-Sonderzeichen wie Anführungszeichen, kaufmännisches Und und Klammern (zusätzlich zu Zeichen mit einem ASCII-Wert von weniger als 32). Während die Demoseite ohne Anzeige der Quelle nicht reichlich klar macht (da die HTML-codierten Sonderzeichen interpretiert und gerendert werden), wird die Codierung bei der Arbeit angezeigt, wenn Sie sich den Quellcode ansehen:

1
2
$value = '<script>alert('TROUBLE HERE');</script>';
3
echo filter_var($value, FILTER_SANITIZE_SPECIAL_CHARS);

Es konvertiert die Sonderzeichen in ihre HTML-codierten Selbste:

1
2
&#60;script&#62;alert(&#39;TROUBLE HERE&#39;);&#60;/script&#62;

FILTER_SANITIZE_EMAIL: Dieser Filter macht genau das, was man denken würde. Es werden alle Zeichen entfernt, die in E-Mail-Adressen ungültig sind (wie Klammern, Klammern, Doppelpunkte usw.). Angenommen, Sie haben versehentlich Klammern um einen Buchstaben Ihrer E-Mail-Adresse eingefügt (fragen Sie nicht wie, verwenden Sie Ihre Vorstellungskraft):

1
2
$value = 't(e)st@example.com';
3
echo filter_var($value, FILTER_SANITIZE_EMAIL);

Diese Klammern werden entfernt und Sie erhalten Ihre schöne E-Mail-Adresse zurück:

1
2
test@example.com

Dies ist ein großartiger Filter, der in E-Mail-Formularen zusammen mit FILTER_VALIDATE_EMAIL verwendet werden kann, um Benutzerfehler zu reduzieren oder XSS-bezogene Angriffe zu verhindern (da einige frühere XSS-Angriffe die direkte Rückgabe der Originaldaten in einem nicht bereinigten E-Mail-Feld beinhalteten zum Browser).

FILTER_SANITIZE_URL: Ähnlich wie der Filter zum Bereinigen von E-Mail-Adressen macht dieser Filter genau das, was man denken würde. Es entfernt alle Zeichen, die in einer URL ungültig sind (wie bestimmte UTF-8-Zeichen usw.). Angenommen, Sie haben versehentlich ein "®" in die URL Ihrer Website eingefügt (fragen Sie erneut nicht, wie, tun Sie so, als hätte ein Velociraptor dies getan):

1
2
$value = 'http://net.tuts®plus.com';
3
echo filter_var($value, FILTER_SANITIZE_URL);

Es entfernt das unerwünschte "®" und Sie erhalten Ihre hübsche URL zurück:

1
2
http://net.tutsplus.com

FILTER_SANITIZE_NUMBER_INT: Dieser Filter ähnelt dem Filter FILTER_VALIDATE_INT, überprüft jedoch nicht einfach, ob es sich um eine Ganzzahl handelt oder nicht, sondern entfernt tatsächlich alles, was keine Ganzzahl ist, aus dem Wert! Praktisch für lästige Spambots und Trickster in einigen Eingabeformen:

1
2
$value01 = '123abc456def';
3
echo filter_var($value01, FILTER_SANITIZE_NUMBER_INT);
4
echo '<br />';
5
$value02 = '1.2.3.4.5.6.7.8.9';
6
echo filter_var($value02, FILTER_SANITIZE_NUMBER_INT);

Diese dummen Buchstaben und Dezimalstellen werden sofort weggeworfen:

1
2
123456
3
123456789

FILTER_SANITIZE_NUMBER_FLOAT: Dieser Filter ähnelt dem Filter FILTER_VALIDATE_INT, überprüft jedoch nicht einfach, ob es sich um eine Ganzzahl handelt oder nicht, sondern entfernt tatsächlich alles, was keine Ganzzahl ist, aus dem Wert! Praktisch für lästige Spambots und Trickster in einigen Eingabeformen:

1
2
$value01 = '123abc456def';
3
echo filter_var($value01, FILTER_SANITIZE_NUMBER_FLOAT);
4
echo '<br />';
5
$value02 = '1.2.3.4.5.6.7.8.9';
6
echo filter_var($value02, FILTER_SANITIZE_NUMBER_FLOAT);

Wieder werden all diese dummen Buchstaben und Dezimalstellen sofort weggeworfen:

1
2
123456
3
123456789

Aber was ist, wenn Sie eine Dezimalstelle wie im nächsten Beispiel beibehalten möchten:

1
2
$value = '1.23';
3
echo filter_var($value, FILTER_SANITIZE_NUMBER_FLOAT);

Es würde es immer noch entfernen und zurückkehren:

1
2
123

Einer der Hauptgründe, warum FILTER_SANITIZE_NUMBER_FLOAT und FILTER_SANITIZE_INT separate Filter sind, besteht darin, dies über ein spezielles Flag "FILTER_FLAG_ALLOW_FRACTION" zu ermöglichen, das als dritter an filter_var übergebener Wert hinzugefügt wird:

1
2
$value = '1.23';
3
echo filter_var($value, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);

Es würde die Dezimalstelle behalten und zurückkehren:

1
2
1.23

Optionen, Flags und Array-Steuerelemente, OH MY!

Das Flag in diesem letzten Beispiel ist nur eine von vielen weiteren Optionen, Flags und Array-Steuerelementen, mit denen Sie genauer steuern können, welche Datentypen bereinigt werden, wie Trennzeichen definiert werden, wie Arrays von den Filtern verarbeitet werden und vieles mehr. Weitere Informationen zu diesen Flags und anderen filterbezogenen Funktionen finden Sie im Abschnitt Filtererweiterung des PHP-Handbuchs.

Andere Methoden zum Santisieren von Daten mit PHP

Jetzt werden wir einige wichtige ergänzende Methoden zur Bereinigung von Daten mit PHP durchgehen, um zu verhindern, dass "schmutzige Daten" Ihre Systeme zerstören. Diese sind besonders nützlich für Anwendungen, auf denen noch PHP 4 ausgeführt wird, da sie alle verfügbar waren, als es veröffentlicht wurde.

htmlspecialchars: Diese PHP-Funktion konvertiert 5 Sonderzeichen in ihre entsprechenden HTML-Entitäten:

  • '&' (kaufmännisches Und) wird zu '&amp;'
  • '"' (doppeltes Anführungszeichen) wird zu '&quot;' wenn ENT_NOQUOTES nicht gesetzt ist.
  • '''(einfaches Anführungszeichen) wird zu '&#039;' nur wenn ENT_QUOTES gesetzt ist.
  • '<' (kleiner als) wird zu '&lt;'
  • '>' (größer als) wird zu '&gt;'

Es wird wie jede andere PHP-String-Funktion verwendet:

1
2
echo htmlspecialchars('$string');

htmlentities: Wie htmlspecialchars konvertiert diese PHP-Funktion Zeichen in ihre entsprechenden HTML-Entitäten. Der große Unterschied besteht darin, dass ALLE Zeichen, die konvertiert werden können, konvertiert werden. Dies ist eine nützliche Methode, um E-Mail-Adressen von einigen Bots zu verschleiern, die E-Mail-Adressen sammeln, da nicht diese zum Lesen von HTML-Inhalten programmiert sind.

Es wird wie jede andere PHP-String-Funktion verwendet:

1
2
echo htmlentities('$string');

mysql_real_escape_string: Diese MySQL-Funktion schützt vor SQL-Injection-Angriffen. Es wird als bewährte Methode (oder sogar als obligatorische Methode) angesehen, alle Daten, die über diese Funktion an eine MySQL-Abfrage gesendet werden, zu übergeben. Es entgeht allen Sonderzeichen, die problematisch sein könnten und dazu führen würden, dass kleine Bobby Tables eine weitere Schülerdatenbank zerstören.

1
2
$query = 'SELECT * FROM table WHERE value='.mysql_real_escape_string('$string').' LIMIT 1,1';
3
$runQuery = mysql_query($query);

Benutzerdefinierte Funktionen

Für viele Menschen sind diese eingebauten Filter und Funktionen einfach nicht gut genug. Die Datenvalidierung einiger Daten wie Telefonnummern, Postleitzahlen oder sogar E-Mails erfordert häufig eine strengere Validierung und Maskierung. Zu diesem Zweck erstellen viele Benutzer benutzerdefinierte Funktionen zur Validierung, und ihre Daten sind echt. Ein Beispiel hierfür kann so einfach sein wie die Verwendung einer MySQL-Abfrage zum Nachschlagen der Daten in einer Datenbank mit bekannten Werten wie folgt:

1
2
function checkZipCode($value) {
3
	$zipcheck = 'SELECT COUNT(*) FROM `database`.`zipcodes` WHERE value="'.filter_var(mysql_real_escape_string($value),FILTER_SANITIZE_NUMBER_INT).'"';
4
	$count = mysql_query($zipcheck);
5
	if($count==1) {
6
		return TRUE;
7
	} else {
8
		return FALSE;
9
	}
10
}

Andere benutzerdefinierte Funktionen können erstellt werden, die nicht auf Datenbanken mit bekannten Werten basieren. Sie können erstellt werden, indem magische Anführungszeichen überprüft, Schrägstriche entfernt und zum Einfügen in eine Datenbank maskiert werden:

1
2
function cleanString($string) {
3
	$detagged = strip_tags($string);
4
	if(get_magic_quotes_gpc()) {
5
		$stripped = stripslashes($detagged);
6
		$escaped = mysql_real_escape_string($stripped);
7
	} else {
8
		$escaped = mysql_real_escape_string($detagged);
9
	}
10
	return $escaped;
11
}

Die Möglichkeiten sind endlos, insbesondere wenn Sie reguläre Ausdrücke integrieren. In den meisten Fällen sollte jedoch die PHP-Filtererweiterung ausreichen.

  • Folgen Sie uns auf Twitter oder abonnieren Sie den Nettuts+ RSS-Feed, um weitere tägliche Tipps und Artikel zur Webentwicklung zu erhalten.