Каково “достаточно санитизации” для URL [дубликат]

8
задан aslum 12 January 2010 в 02:22
поделиться

3 ответа

"Достаточная дезинфекция" полностью зависит от того, о какой среде идет речь. Дезинфекция для MySQL должна рассматриваться как полностью отдельная от дезинфекции для веб-вывода, и вы должны обрабатывать их отдельно, чтобы избежать много хлопот.

Санитарная обработка для MySQL

  • mysql_real_escape_string() дезинфицирует часть данных и сделает безопасным размещение внутри SQL-запроса.
  • Любые другие типы вредоносных данных, такие как HTML-теги внутри строки, должны быть абсолютно проигнорированы. Попытка манипулировать ими здесь приведет вас к головной боли, так как вы попытаетесь "расманипулировать" их позже, после того, как они будут извлечены из базы данных. Плохие "веб-данные" не могут навредить вашей БД.

Дезинфекция для вывода

  • htmlspecialchars($val) во время вывода предотвратит отрисовку вредоносных тегов, так как < и > символы преобразуются в их представления сущностей, а не выводятся в качестве разделителей тегов.
  • Используйте модификатор ENT_QUOTES, если вы выводите что-то, что находится внутри атрибута HTML элемента с кавычками, например

Это должно быть все, что вам нужно, если только у вас нет специальных требований. strip_tags() на самом деле не должен использоваться для обеззараживания, так как его можно обмануть плохо сформированным HTML. Дезинфекция - достойная цель, и если вы сможете держать свои контексты отдельно друг от друга, то столкнетесь с меньшим количеством проблем с манипуляциями данными между ними.

16
ответ дан 5 December 2019 в 10:03
поделиться

Файл bash NEWS, repro 'd here с некоторым резюме, имеет хорошую информацию. Новые функции включают:

  • ассоциативные массивы : имя членов в массиве с помощью массив [имя] и доступ с помощью $ {массив [имя]}
  • Специальный * * glob образца: match all files and «zero or more» directory
  • Co-processes : используйте ключевое слово coproc , чтобы создать другой процесс, затем перенаправьте его операции ввода-вывода в существующую оболочку (или другой процесс, если вы хотите)
  • Расширения, изменяющие регистр : совпадения имен без учета регистра символов
-121--4501651-

Может быть проверен алгоритм судного дня . Это даст вам определенные «обреченности» дни как 31 января - судный день, для 2008 года, это была суббота. Вы можете работать с задними словами оттуда

-121--4780408-

Я первоначально поддержал ответ Фрэнка, но подумал о проблеме: htmlentities () сломает законные url:

http://www.mywebsite.com/profile?id=jojo&w=60&h=60

Возможно, достаточно снять угловые скобки + mysql_real_escape?

0
ответ дан 5 December 2019 в 10:03
поделиться

, вероятно, безопаснее и лучше вызывать HTMLEntities () на строке вместо подсчета на strip_tags ().

Strip_tags () не удалит HTML Special Chars, как '"&

, например, если ваш код:

<img src="<?= strip_tags($myVar) ?>">

и

$myVar = '">something goes here<';

, то вы заканчиваете:

<img src="">something goes here<">

, что довольно очевидно корень отверстия XSS; фактический эксплойт остается в качестве упражнения для читателя.

1
ответ дан 5 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: