2012-04-09 3 views
0

Ich verstehe, dass die Verwendung einer Whitelist nur alles innerhalb dieser Liste verwendet und mit einer Blacklist alles verwendet, außer was in der Liste ist.Understanding Blacklists und Whitelists mit PHP

Aber was passiert danach? Nehmen wir an, Sie verwenden eine Whitelist - können Sie die Eingabe einer Eingabe verhindern, wenn der Wert der Eingabe etwas enthält, das nicht in der Whitelist enthalten ist?

Ich weiß, dass so etwas wie dies alles würde reduzieren, die kein Zeichen oder eine Ziffer mit Leerzeichen ist:

preg_replace("/[^a-zA-Z0-9_]/", "", $stringToFilter); 

Aber was ist, wenn ich den Wert in der Datenbank mit Leerzeichen gespeichert will nicht. Gibt es eine Möglichkeit, dies zu tun, so dass stattdessen eine Fehlermeldung auftritt? verwenden, wenn Aussagen zum Beispiel ...

+2

Ich bekomme Ihre Frage nicht. – Alp

+0

Können Sie Ihre Frage etwas genauer erklären? –

+2

Erstaunlicher Übergang von Whitelist zu Whitespace ... –

Antwort

3

Ich verstehe, dass eine weiße Liste mit es verwendet nur alles in diese Liste und mit einer schwarzen Liste verwendet es alles, aber was in der Liste ist.

  • Weiße Liste: Gegenstände, die
  • schwarze Liste zugelassen sind: Elemente, die NICHT
  • genehmigt

preg_replace

Sie sollten preg_match oder filter_var mit der unter Verwendung von Flagge FILTER_VALIDATE_REGEXP statt ... mehr dazu unten.

Aber was, wenn ich nicht wollte, dass der Wert in der Datenbank mit Leerzeichen gespeichert wird. Gibt es eine Möglichkeit, dies zu tun, so dass stattdessen eine Fehlermeldung auftritt? if-Anweisungen mit zum Beispiel ...

Sie sprechen über die Validierung, so dass Sie bei der Suche würde: php.net/filter.filters.validate:

// false  
var_dump(!filter_var('string with spaces', FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/[\s]+/i')))); 

// true 
var_dump(!filter_var('string_with_no_spaces', FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/[\s]+/i')))); 

Wickeln Sie die oben in einer if-Anweisung, und Sie sind fertig.