douci4026 2016-03-30 04:48
浏览 40

在Go中使用html / template允许用户输入一些html标记

I am using Go html/template package for rendering user inputs received from HTML form. As the package html/template is preventing script injection from user inputs, all the html tags will be converted into their &...; formats.

However, I am planning to use WYSIWYG input field which allows users to input some styling tags such as the < strong > tag. I am using template function solution.

funcs := template.FuncMap{
    "marktag": func(text string) template.HTML {
        output := strings.Replace(template.HTMLEscapeString(text), "&lt;strong&gt;", "<strong>", -1)
        output = strings.Replace(output, "&lt;/strong&gt;", "</strong>", -1)
        return template.HTML(output)
    },
}

Which works OK. However, I have to call strings.Replace(..) function many times if I need to convert the other tags too such as

<ul><li></li></ul>
<emphasize></emphasize>
<code></code>

and so on

Furhermore, I found it hard to deal with the css style like

<p style="color: #343434"></p>

Now I have to check for

<p

as well. Is there any ideal solution to this problem?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
    • ¥20 Java-Oj-桌布的计算
    • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
    • ¥20 有人知道这种图怎么画吗?
    • ¥15 pyqt6如何引用qrc文件加载里面的的资源
    • ¥15 安卓JNI项目使用lua上的问题
    • ¥20 RL+GNN解决人员排班问题时梯度消失
    • ¥60 要数控稳压电源测试数据
    • ¥15 能帮我写下这个编程吗
    • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路