"Достаточная дезинфекция" полностью зависит от того, о какой среде идет речь. Дезинфекция для MySQL должна рассматриваться как полностью отдельная от дезинфекции для веб-вывода, и вы должны обрабатывать их отдельно, чтобы избежать много хлопот.
Санитарная обработка для MySQL
mysql_real_escape_string()
дезинфицирует часть данных и сделает безопасным размещение внутри SQL-запроса. Дезинфекция для вывода
htmlspecialchars($val)
во время вывода предотвратит отрисовку вредоносных тегов, так как <
и >
символы преобразуются в их представления сущностей, а не выводятся в качестве разделителей тегов. ENT_QUOTES
, если вы выводите что-то, что находится внутри атрибута HTML элемента с кавычками, например
Это должно быть все, что вам нужно, если только у вас нет специальных требований. strip_tags()
на самом деле не должен использоваться для обеззараживания, так как его можно обмануть плохо сформированным HTML. Дезинфекция - достойная цель, и если вы сможете держать свои контексты отдельно друг от друга, то столкнетесь с меньшим количеством проблем с манипуляциями данными между ними.
Файл bash NEWS, repro 'd here с некоторым резюме, имеет хорошую информацию. Новые функции включают:
массив [имя]
и доступ с помощью $ {массив [имя]}
* *
glob образца: match all files and «zero or more» directory coproc
, чтобы создать другой процесс, затем перенаправьте его операции ввода-вывода в существующую оболочку (или другой процесс, если вы хотите) Может быть проверен алгоритм судного дня . Это даст вам определенные «обреченности» дни как 31 января - судный день, для 2008 года, это была суббота. Вы можете работать с задними словами оттуда
-121--4780408-Я первоначально поддержал ответ Фрэнка, но подумал о проблеме: htmlentities () сломает законные url:
http://www.mywebsite.com/profile?id=jojo&w=60&h=60
Возможно, достаточно снять угловые скобки + mysql_real_escape?
, вероятно, безопаснее и лучше вызывать HTMLEntities () на строке вместо подсчета на strip_tags ().
Strip_tags () не удалит HTML Special Chars, как '"&
, например, если ваш код:
<img src="<?= strip_tags($myVar) ?>">
и
$myVar = '">something goes here<';
, то вы заканчиваете:
<img src="">something goes here<">
, что довольно очевидно корень отверстия XSS; фактический эксплойт остается в качестве упражнения для читателя.