Очистка HTML от textarea - PullRequest
       7

Очистка HTML от textarea

1 голос
/ 29 июля 2010

У меня есть страница с двумя текстовыми областями, где зарегистрированные пользователи могут заполнить их HTML-кодами. Первый из них имеет TinyMCE (поэтому HTML очищен), а другой - нет, так как я ожидаю, что код будет вставлен как код для встраивания с других сайтов (в основном это сайты, предоставляющие карты, например, Google Maps, MapMyRace.com и т. Д.) , Но проблема в том, что эти другие сайты могут предоставлять другие теги, а не только <embed> или <iframe>. Так что я не могу удалить теги, потому что тогда я могу удалить теги, которые я не знал, другие сайты, предоставленные. Я сохраню HTML-код этих двух текстовых областей в моей базе данных, чтобы их можно было извлечь и отобразить как части некоторых других страниц.

Есть ли у вас какие-либо предложения, чтобы сделать эту настройку более безопасной? Или мне вообще следует запретить свободный ввод HTML во 2-ю текстовую область? (Или ... я позволил пользователям поставить галочку напротив надписи "Я принимаю полную ответственность за поведение кода, который я вставляю" .. LOL)

Ваше мнение высоко ценится:)

Спасибо

Ответы [ 2 ]

1 голос
/ 29 июля 2010

Краткий ответ: свободный HTML небезопасен и его следует избегать. Ничто не блокирует вашего пользователя от создания iframe, который перенаправляет пользователя на какую-либо вредоносную страницу, размещает рекламу на вашей странице или портит ваш сайт.

Мой любимый подход к этой проблеме - разрешить пользователю вставлять ссылку (без кода iframe «вставлять на страницу») в текстовое поле. Затем я использую регулярное выражение для определения вставленной ссылки (это youtube, Bing maps, ...) и создаю HTML-код из вставленной ссылки, что не слишком сложно для большинства поставщиков iframe. Это гораздо больше работы для вас, и оно ограничивает API, которые вы можете разместить на своей странице, но это безопасно.

1 голос
/ 29 июля 2010

Разрешение вашим пользователям использовать произвольный HTML опасно.Вы можете захотеть иметь черный и белый списки тегов, которые вы запрещаете и разрешаете (соответственно).

...