„Достатъчно дезинфекция“ напълно зависи от това за каква среда говорите. Санитаризацията за MySQL трябва да се счита за изцяло отделна от дезинфекция за уеб изход и трябва да ги обработвате отделно, за да избегнете много караница.
Санитиране за MySQL
mysql_real_escape_string()
ще дезинфекцира част от данни и ще направи безопасното поставяне в SQL заявка.- Всеки друг тип злонамерени данни, като HTML тагове вътре в низа, трябва да бъдат абсолютно игнорирани. Опитът да го манипулирате тук ще ви доведе до главоболие, когато се опитате да го "отмените" по-късно, след като го извадите от базата данни. Лошите „уеб данни“ не могат да навредят на вашата база данни.
Санитиране за изход
htmlspecialchars($val)
по време на изход ще предотврати изобразяването на всякакви злонамерени тагове, тъй като<
и>
знаците се преобразуват в техните представяния на обекти и не се изобразяват като разделители на маркери.- Използвайте
ENT_QUOTES
модификатор, ако извеждате нещо, което е вътре в атрибута в кавички на HTML елемент, като<input name="email" value="<?php echo htmlspecialchars($email,ENT_QUOTES); ?>" />
Това трябва да е всичко, от което се нуждаете, освен ако нямате специални изисквания. strip_tags()
всъщност не трябва да се използва за дезинфекция, тъй като може да бъде заблуден с лошо оформен HTML. Санирането е достойна цел и ако можете да запазите контекстите си отделно, ще срещнете по-малко проблеми с манипулирането на данни между тях.