Это полностью зависит от того, что вы хотите сделать.
В общем случае ответ - «нет», и вам следует избегать данных только по их прямому назначению.Случайное экранирование данных без цели не помогает, а просто вызывает дальнейшую путаницу, поскольку вам необходимо отслеживать, что было экранировано и как.
Короче говоря, храните ваши данные в необработанном виде и избегайте их специально дляего целевое использование , когда вы используете его:
- для вывода HTML, используйте
htmlentities()
. - для имен команд оболочки, используйте
escapeshellcmd()
. - для аргументов оболочки используйте
escapeshellarg()
. - для построения строки GET URL, используйте
urlencode()
для значений параметров. - для запросов к базе данных, используйте соответствующий escape-код базы данныхмеханизм (или подготовленные заявления).
Это рассуждение применяется рекурсивно.Так что, если вы хотите написать ссылку на GET URL для вывода HTML, это будет примерно так:
echo "<a href=" . htmlentities("$url?q=" . urlencode($var)) . ">click</a>";
Было бы ужасно, если бы в этот момент вам пришлось бы помнить, если$var
уже ранее сбежал, и как.