Hallo,
Door schade en schande heb ik in het verleden geleerd dat je de input van je tekstvelden en textarea's goed moet checken alvorens deze terug te posten bij een foutmelding, te mailen of op te slaan in de database.
Ik moet eigenlijk bekennen dat ik daardoor een beetje paranoia ben geworden. Ik gooi er een hele zooi checks overheen.
Ik dacht dat je met htmlentities helemaal op save speelde, soms lastig dat speciale letters zoals é in hun nummercode worden weergegeven, maar je weet dan tenminste zeker dat het allemaal in de database beland.
Deze checks doe ik voornamelijk voor het strippen van html, js, php, whitespace maar natuurlijk ook voor de beruchte ' (quote) en " (dubbelquote).
Wat schertst mijn verbazing nu ! Ik vul toevallig een ander (beetje quote achtig) teken in: ’ (& #8217;) en de hele bende loopt vast. Het lukt me niet om deze eruit te filteren als ik een nieuwe replace toevoeg in de functie strip_quotes en htmlentities pakt 'm dus blijkbaar ook niet. Maar alles loopt er wel op vast ! Wat moet ik hieraan doen.
Kent iemand dit probleem ? Of beter nog een oplossing ?
vriendelijke groet
Door schade en schande heb ik in het verleden geleerd dat je de input van je tekstvelden en textarea's goed moet checken alvorens deze terug te posten bij een foutmelding, te mailen of op te slaan in de database.
Ik moet eigenlijk bekennen dat ik daardoor een beetje paranoia ben geworden. Ik gooi er een hele zooi checks overheen.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| function strip_quotes($value) { $value = eregi_replace("\"","“",$value); $value = eregi_replace("'","‘",$value); $value = eregi_replace(" +", " ",$value); return $value; } $search = array ("'<script[^>]*?>.*?</script>'si", // Strip out javascript "'<[\/\!]*?[^<>]*?>'si", // Strip out HTML tags "'([\r\n])[\s]+'", // Strip out white space "'&(quot|#34);'i", // Replace HTML entities "'&(amp|#38);'i", "'&(lt|#60);'i", "'&(gt|#62);'i", "'&(nbsp|#160);'i", "'&(iexcl|#161);'i", "'&(cent|#162);'i", "'&(pound|#163);'i", "'&(copy|#169);'i", "'&#(\d+);'e"); // evaluate as php // $replace = array ("", "", "\\1", "\"", "&", "<", ">", " ", chr(161), chr(162), chr(163), chr(169), "chr(\\1)"); $achternaam = stripslashes($achternaam); $achternaam = strip_quotes($achternaam); $achternaam = preg_replace ($search, $replace, $achternaam); $achternaam = htmlentities ($achternaam); |
Ik dacht dat je met htmlentities helemaal op save speelde, soms lastig dat speciale letters zoals é in hun nummercode worden weergegeven, maar je weet dan tenminste zeker dat het allemaal in de database beland.
Deze checks doe ik voornamelijk voor het strippen van html, js, php, whitespace maar natuurlijk ook voor de beruchte ' (quote) en " (dubbelquote).
Wat schertst mijn verbazing nu ! Ik vul toevallig een ander (beetje quote achtig) teken in: ’ (& #8217;) en de hele bende loopt vast. Het lukt me niet om deze eruit te filteren als ik een nieuwe replace toevoeg in de functie strip_quotes en htmlentities pakt 'm dus blijkbaar ook niet. Maar alles loopt er wel op vast ! Wat moet ik hieraan doen.
Kent iemand dit probleem ? Of beter nog een oplossing ?
vriendelijke groet
[ Voor 28% gewijzigd door Verwijderd op 04-11-2004 09:24 ]