Javascript 我想使用markdown来安全地保存数据(对于xss),而不是json.stringify()方法

Javascript 我想使用markdown来安全地保存数据(对于xss),而不是json.stringify()方法,javascript,json,node.js,markdown,Javascript,Json,Node.js,Markdown,我想使用markdown来安全地保存数据,而不是使用json.stringfy()方法 app.get('/comment',函数(req.res){ var usercomment=req.body.comment;//来自注释文本区域(用户注释) const x=markdown.toHTML(usercomment); var comments=新注释({user:req.session.nick,comment:x}); comments.save(); console.log(x)

我想使用markdown来安全地保存数据,而不是使用json.stringfy()方法

app.get('/comment',函数(req.res){
var usercomment=req.body.comment;//来自注释文本区域(用户注释)
const x=markdown.toHTML(usercomment);
var comments=新注释({user:req.session.nick,comment:x});
comments.save();
console.log(x)
}
JSON和Markdown不会给您带来安全性 你提到的这两件事都不会神奇地给你带来安全感。 要处理危险的用户输入,您需要修改输入

在NPM上快速搜索会给我一个答案,这似乎对这个目的很有好处

const sanitizeHtml = require('sanitize-html');
app.post('/comment', function(req, res){
    let usercomment = req.body.comment;
    let safe_comment = sanitizeHtml(usercomment);
    let comments = new comment({
        user: req.session.nick,
        comment:safe_comment,
    });
    comments.save();
    res.send('saved');
}
如果你不想让你的用户使用任何HTML,你可以避开用户的评论,这样他们的输入就不会像HTML一样了


usercomment
中有什么内容?另外,这两个代码段都没有转换成markdown-请澄清我们在这里讨论的是什么类型的“安全性”。如果您关心的是安全性,那么您应该看看转义函数。还可以看看这个问题:@pointy应该说-什么类型的“安全性”?json.stringify()-向web服务器发送数据时,数据必须是字符串。在本网站中,大多数用户只看问题-如何提问?-。如果问题不清楚,请按“是”投票。我理解这一点。但现在我的问题非常清楚。因此,您必须回答我的问题(针对负面投票人)或者你只看-怎么问?-。@ŞükranEken Markdown不会像那样自动转义HTML。然而,像GitHub这样的网站已经实现了他们自己的HTML消毒剂(参见示例)它在标记转换为HTML后运行。这些消毒器将转义
标记等。如果您正在运行自己的网站,将标记转换为HTML,那么为了安全,您还需要实现一个消毒器,如此答案所示。有关使标记“安全”的更多信息,我建议阅读。
const htmlencode = require('htmlencode');
app.post('/comment', function(req, res){
    let usercomment = req.body.comment;
    let safe_comment = htmlencode.htmlEncode(usercomment);
    let comments = new comment({
        user: req.session.nick,
        comment:safe_comment,
    });
    comments.save();
    res.send('saved');
}