Javascript 是否在保存前清理用户输入,或在从数据库检索后清理输入?

Javascript 是否在保存前清理用户输入,或在从数据库检索后清理输入?,javascript,node.js,mongodb,mongoose,xss,Javascript,Node.js,Mongodb,Mongoose,Xss,我想将用户输入保存到我的数据库中,但我不确定是否应该在保存到数据库之前或从数据库中获取用户输入并在HTML中显示后清理用户输入 像这里(保存前): var topic=htmlencode.htmlencode(req.body.topic); var topiccontent=req.body.topiccontent; var z=markdown.toHTML(topiccontent); var clean=sanitizeHtml(z{ 允许标记:['b','i','em','str

我想将用户输入保存到我的数据库中,但我不确定是否应该在保存到数据库之前或从数据库中获取用户输入并在HTML中显示后清理用户输入

像这里(保存前):

var topic=htmlencode.htmlencode(req.body.topic);
var topiccontent=req.body.topiccontent;
var z=markdown.toHTML(topiccontent);
var clean=sanitizeHtml(z{
允许标记:['b','i','em','strong','a','h1','h2','h3','h4','h5','h6','img','blockquote','code','br'],
allowedAttributes:{'a':['href','alt','title'],'img':['src','alt','title']},
允许的主机名:[]
});
var opentopic=新主题({topic:topic,topiccontent:topiccontent,writerid:req.session.id,tür:tür,begeni:0,writernick:req.session.nick})根据:

当客户端程序在MongoDB中组装查询时,它会构建一个BSON对象,而不是一个字符串。因此,传统的SQL注入攻击不是问题

因此,在将用户输入存储到数据库之前,不需要像在MySQL中那样对其进行“清理”,但是有一些注入技术与MongoDB相关,您应该对此进行一些研究

也就是说,这是有意义的,因为您希望在显示用户输入之前执行此操作,因为我相信您也理解这一点非常重要

这样考虑一下,如果在保存之前对值进行“清理”,则只需计算一次结果。但是,如果每次从数据库中获取并向用户显示结果时都这样做,那么计算结果的次数是无限的,最终会减慢用户对最终结果的访问速度

还请注意:

以下所有MongoDB操作都允许您直接在服务器上运行任意JavaScript表达式:


在这些情况下,您必须小心防止用户提交恶意JavaScript。

首先是ty@craig。因此,如果在保存前对输入进行清理,我需要更多内存。例如
**come**
=8字节;但是markdown.toHTML(
**come**
)=>结果是come=41 byteSo我必须选择速度或内存:D@ŞkranEken欢迎使用堆栈溢出顺便说一句,我希望您在这里变得更活跃。是的,但您还必须注意如何使用用户输入。我对我的答案做了一个小编辑:
这样想吧
,我希望它对你更有意义。
$where
mapReduce
group