【问题标题】:HTML doesn't recognize tags in strings saved on MongoDBHTML 无法识别保存在 MongoDB 上的字符串中的标签
【发布时间】:2017-03-29 19:14:01
【问题描述】:

我正在尝试显示一些从 textarea 标签中获取的数据并将其保存在 mongodb 中。 当我尝试使用<br/> 标签显示它时,html 只是这样显示它并且不显示新行:

Review about the short animation film 'PUAL':<br /><br /> "First, Congratulations! A very well <br /><br /> thought out piece. The sound design

模板代码如下:

<div>
  <p> <%= person.quoteEng%></p>
</div>

控制器代码如下:

router.get("/", function(req, res){
  // Get all projects from DB 
  Person.find({})(function(err, allperson){
   if(err){
     console.log(err);
   } else {     
     res.render("feedback/index",{persons: allperson});
   }
});

从表单中获取文本的代码是一个非常简单的控制器:

router.post("/",middleware.isLoggedIn, function(req,res){
  var quoteEng = req.body.quoteEng;
  var NewPerson = { quoteEng: quoteEng}
  Person.create(NewPerson, function(err, newlyPerson){
    if(err){
      console.log(err);
    }else{
      console.log(newlyPerson);
      res.redirect("feedback/0");
    }
  });
});

我用nl2br把/n改成了

请帮帮我。 谢谢

【问题讨论】:

  • &lt;%= person.quoteEng%&gt; 不是 HTML。它是某种模板语言。您使用哪种模板语言?
  • 你的意思是: var personSchema = new mongoose.Schema({ quoteEng: String, }); ?
  • 我对此表示怀疑。 res.render 通过一些模板引擎传递模板字符串。大概您将它设置为中间件或某处的快速配置。
  • 我用快递,猫鼬是这个意思吗?
  • 中间件只是检查管理员是否登录的功能

标签: javascript html node.js mongodb


【解决方案1】:

您正在使用 EJS 模板语言。 Look at the documentation:

&lt;%= %&gt; 转义输出(转义功能可配置)

您使用的是&lt;%= %&gt;,因此输入被视为纯文本并转换为 HTML。

&lt;%- %&gt; 的未转义原始输出

改为使用它。注意不要让自己暴露在XSS attacks

【讨论】:

  • 非常感谢你!它解决了我的问题 我能否获得有关此安全风险的更多信息,例如,如果攻击者可以获得填写表格的用户的用户名和密码?以及如何保护我的网站不受此影响?
  • “我能否获得有关此安全风险的更多信息”——这就是链接的用途。
  • “攻击者可以获取我的用户名和密码”——如果网站易受攻击,那很有可能。
猜你喜欢
  • 1970-01-01
  • 2014-09-23
  • 2020-02-23
  • 2022-01-23
  • 1970-01-01
  • 2016-01-10
  • 2020-09-06
  • 1970-01-01
  • 2015-12-26
相关资源
最近更新 更多