Javascript 将数据推送到模板中时使链接可点击
我从用户那里获取输入,然后为提到的用户添加链接,然后在模板中传递相同的内容Javascript 将数据推送到模板中时使链接可点击,javascript,html,go,Javascript,Html,Go,我从用户那里获取输入,然后为提到的用户添加链接,然后在模板中传递相同的内容 Hello, {{.}}! 输入:hello@ds 添加链接后的字符串- "@<a class="tweet-url username" href="/user/ds" data-screen-name="ds" rel="nofollow">ds</a>" “@” 在.Msg中传递上述字符串(使用golang模板): {.Msg} 预期结果是:Hello@ds(在@ds上有可点击的链接
Hello, {{.}}!
输入:hello@ds添加链接后的字符串-
"@<a class="tweet-url username" href="/user/ds" data-screen-name="ds" rel="nofollow">ds</a>"
“@”
在.Msg中传递上述字符串(使用golang模板):
{.Msg}
预期结果是:Hello@ds(在@ds上有可点击的链接)
但是,以文本格式获取所有内容(与输入相同)
@
我错过了什么
有更好的解决办法。首先,我对输入进行htmlEscape处理,然后将其存储在数据库中,然后在演示添加链接的同时使用document.write(string)函数。有了这个,我不必更改模板,也不必担心XSS附加。此外,我还在数据库中避免使用XSS脚本 尝试在
template.HTML
中包装字符串(Msg
),以禁用HTML/template执行的转义
示例来自:
模板
Hello, {{.}}!
可以通过调用
tmpl.Execute(out, template.HTML(`<b>World</b>`))
如果{{{}}的话,就会产生这样的结果
是一个普通的字符串
请注意,您应该非常小心地执行此操作。。。确保您信任在template.HTML
中包装的字符串。这是一种容易让自己受到XSS攻击的方法。尝试在template.HTML
中包装字符串(Msg
),以禁用HTML/template所做的转义
示例来自:
模板
Hello, {{.}}!
可以通过调用
tmpl.Execute(out, template.HTML(`<b>World</b>`))
如果{{{}}的话,就会产生这样的结果
是一个普通的字符串
请注意,您应该非常小心地执行此操作。。。确保您信任在
template.HTML
中包装的字符串。这是向XSS攻击敞开心扉的简单方法。谢谢。然而,如何在实现相同目标的同时避免XSS攻击。twitter、facebook和其他网站都做些什么?他们还可以点击推特和评论的一部分。谢谢。然而,如何在实现相同目标的同时避免XSS攻击。twitter、facebook和其他网站都做些什么?他们还可以点击部分推文和评论。
Hello, <b>World<b>!