dmnBrest
@dmnBrest
Salesforce for money. Python, Go, Ruby for soul.

Html sanitizer в Go?

Использую html/template для генерации страницы. Наслышан про его автоматический escaping. Это супер.
Но что мне делать если мне не надо "эскейпить" все подряд.
У меня есть статьи в базе в виде html, создаются и редактируются в CKEditor.
Мне не нужно полностью убирать все html теги. Большую часть можно и нужно оставить чтобы сохранить форматирование. А вот всякую небезопасную "ерунду" типа javascript надо убрать.
В Rails c этим прекрасно cправлялся sanitize (вот так <%= sanitize @article.body %>).
Гуглил это вопрос для Go - вообще тишина. Только одна ссылка на библиотеку https://github.com/kennygrant/sanitize
Кто сталкивался с подобной задачей, поделитесь рецептом.
Что можете сказать про библиотеку github.com/kennygrant/sanitize

PS. Еще как-то странно, но еле нашел информацию как в html/template отключить escaping. Неужели это такая редкая задача что про нее нигде не написано?
Да и решение какое-то кастыльное
template.FuncMap {
"unescaped": func(x string) template.HTML { return template.HTML(x)},
}
а в шаблоне
{{ .BodyHtml | unescaped }}
  • Вопрос задан
  • 2616 просмотров
Решения вопроса 1
dmnBrest
@dmnBrest Автор вопроса
Salesforce for money. Python, Go, Ruby for soul.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Используйте найденную библиотеку, если вдруг она работает немного не так, как нужно - всегда можно её подредактировать.
Ответ написан
Комментировать
@SilentFl
Весьма странная проблема, хотя понимаю причины ее появления. По задумке авторов вы либо делаете escaping везде, либо явно указываете что делать этого не надо и вы тексту доверяете. Если вы не согласны с такой позицией - используйте сторонние библиотеки.
Я бы думал в сторону CKEditor (раз так надо) + BBCode plugin, с последующей заменой только нужных bb-кодов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 12:20
10000 руб./за проект
22 нояб. 2024, в 11:53
3000 руб./за проект
22 нояб. 2024, в 11:51
20000 руб./за проект