Я предлагаю вам не очищать входные данные на этом этапе, так как это может привести к интересным проблемам.Я научился этому нелегко.
Что бы вы продезинфицировали?Внедрение кода (script / html)?Впрыска?Что-то другое?Санитарная обработка связана с тем, что вы делаете.Таким образом, если вы настраиваете код, который записывает то, что было в HTTPRequest для каждого запроса в базу данных, имеет смысл работать против внедрения, но удаление вредоносного кода или его изменение не сохранят данные, как они были предоставлены,и вы получите противоречивые данные.
Ваш код должен смотреть на контекст того, что делается с этими входами, а не переназначать необработанные входные данные.
Если он входит в базу данных, убедитесь, что он не разрешитдля инъекционных атак.Если он внедряет данные на страницу, убедитесь, что они экранированы таким образом, что вы не можете включать скрипты или изменять HTML-код.Если это электронная почта, убедитесь, что вы не можете вставить новую строку в поле электронной почты и отправлять SMTP на несколько адресов.
Это все из-за контекста, потому что для всех эксплойтов нет ловушки.Поэтому сохраняйте исходные данные необработанными, но фильтруйте их на основе того, что вы собираетесь делать в этой части кода.
Как я научился этому нелегко?Еще когда я изучал PHP и веб-безопасность, я создал скрипт, который исследовал все заголовки HTTP, куки, переменные запроса, ip, адрес страницы и другие.Затем он отфильтровал их через различные предварительно определенные фильтры на основе того, что я хотел, и передал их в требуемую функцию / объект.Например, age был числом, поэтому я обязательно присвоил его моему объекту после заполнения с помощью функции sanitize-age.Это было хорошо для некоторых случаев, но когда у вас есть несколько контекстов, в которых эти данные могут быть использованы, экранирование против SQL просто не обрезает их, а экранирование HTML-сущностей сохраняет данные таким способом, который изначально не был представлен, если бы я 'Я помещаю это в базу данных.Теперь, если этот столбец необходимо отфильтровать по XSS, тогда обновите эту конкретную часть базы данных, но не необработанные данные.
Это просто мое мнение, я неесть ресурсы, указывающие, что это лучшая практика.