Я передаю HTML-код, созданный пользователем, в базу данных, и я пытаюсь убедиться, что никакого вредоносного кода не передается. Одним из шагов, которые я предпринимаю, является запуск кода через класс HTML_Safe груши для удаления уязвимой разметки. Однако я заметил, что атрибут имени поданных элементов удаляется. Разумеется, когда вы смотрите на исходный код, name является одним из немногих атрибутов, внесенных по умолчанию в черный список:
http://pear.php.net/package/HTML_Safe/docs/latest/HTML_Safe/HTML_Safe.html#var$attributes
В чем опасность, позволяющая пользователям передавать значения для name ? Как значения для name могут использоваться для гнусных целей? Есть предположения? Если нет, у меня возникает соблазн изменить черный список.
В элементах формы HTML атрибут name используется как идентификатор. Поэтому, если вы разрешаете name тогда кто-то может переопределить ваши атрибуты name HTML (которые вы, возможно, использовали), с одним из своих. Первое найденное совпадающее name часто используется для обработки Javascript или на стороне сервера.
Это позволит кому-то использовать любую возможную обработку Javascript или серверной формы, которую вы можете использовать, ссылаясь на найденный первый атрибут совпадающего name .
Это не просто элементы формы, которые могут использовать name , но они были бы наименее безопасными.
Другая проблема с переопределением заключается в том, что вы используете Javascripts getElementsByName в любой из ваших функций (как указано ниже), вы можете получить функцию, которая не делает то, что вы ожидаете.
Изменить: некоторые исправления и примечание о проблеме getElementsByName (как указано ниже).