【问题标题】:In Meteor, how do I mark up some user-entered text before displaying it?在 Meteor 中,如何在显示之前标记一些用户输入的文本?
【发布时间】:2014-10-07 20:20:41
【问题描述】:

我有一个带有模板的 Meteor 0.8.3 应用程序:

<template name="example">
    Description: {{desc}}
</template>

和javascript:

Template.example.desc = function(){
    return Session.get("desc");
}

用户在哪里设置了 Session 的desc

我想在显示之前稍微标记一下文本,例如。用&lt;br&gt;替换回车,并添加一些分词(html代码&amp;#8203;)。

我相信我可以通过模板中的 Template.example.desc 和三重括号 {{{desc}}} 中的一些正则表达式替换来做到这一点 - 但是,这为用户将自己的 html 输入到字符串中打开了大门,这是不安全的。所以我想让 Meteor 先让字符串安全,然后才应用我的标记。

我该怎么做?谢谢!

【问题讨论】:

  • 嗨@Racing Tadpole,我是在你的博客上向你询问排行榜 - 角度意见的人。是的,最后我用 Meteor 构建了整个东西 :) 世界很小。

标签: meteor markup meteor-blaze html-escape


【解决方案1】:

{{{desc}}} 是要走的路。 我不认为这是一个安全错误,因为您只能更改自己的会话“desc”。 如果您谈论的是保存在数据库中并向所有用户显示的变量,那么在发送回客户端之前,服务器端检查或使用您的标记包装变量会更合适。

【讨论】:

  • 是的,小世界!感谢您的回答。是的,事实上我说的是数据库中的一个变量——你能详细说明你将如何进行检查吗?为什么建议将其作为服务器端检查?我现在认为像stackoverflow.com/questions/1219860/… 这样的客户端html 转义函数可以在Template.example.desc 中工作...
  • 我马上就要睡觉了,所以我明天会写一些代码。但首先,我需要清楚地了解您将要实现的目标。您是将 RAW 字符串存储在数据库中,只是想用模板上的标记包装它,还是要将标记字符串存储在数据库中?
  • 嗨 Anzel,是的,我在数据库中有原始字符串。我现在已经实现了一个解决方案,其中 html 在客户端上显式转义(例如,使用上面提到的 stackoverflow 解决方案),然后我标记它,然后用三重大括号显示它。我刚刚将其作为单独的博客文章与我的实际用例(防止表列过宽)写在这里:racingtadpole.com/blog/tables-without-layout-fixed。感谢您为我指明正确的方向!
  • 嗨@RacingTadpole,我看到了你的文章。很高兴你解决了它 :) 作为参考,你可以查看 Spacebars.SafeString 以进行转义,并考虑使用模板助手,这样你就可以重用 myMarkUp
  • 啊,Spacebars.SafeString 看起来就像我所追求的一样 - 有这方面的任何文档吗?
猜你喜欢
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
  • 2013-12-16
相关资源
最近更新 更多