簡體   English   中英

我想使用markdown來安全地保存數據(對於xss)而不是json.stringify()方法

[英]Node js .I want to use markdown to save the data securely(for xss) instead of json.stringify() method

我想使用markdown而不是json.stringfy()方法安全地保存數據。就像這個例子:用戶評論是<script>alert('ss')</script>

 app.get('/comment',function(req.res){ var usercomment=req.body.comment;//from comment textarea(user's comment) const x=markdown.toHTML(usercomment); var comments=new comment({user:req.session.nick,comment:x}); comments.save(); console.log(x) } 

或者像這樣使用json.stringify(), 我將用戶注釋保存為json.stringify()。稍后我將使用markdown.toHTML(comment)將注釋(來自數據庫)發送到html

 app.get('/comment',function(req.res){ var usercomment=req.body.comment; const x=JSON.stringify(usercomment); var comments=new comment({user:req.session.nick,comment:x}); comments.save(); console.log(x) } 
我應該使用哪一個?

JSON和Markdown不能給您安全

您提到的任何事情都不會神奇地為您提供安全性。 要處理危險的用戶輸入,您需要清理輸入。

快速搜索NPM可以得到sanitize-html ,這似乎很適合此目的。

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。 htmlencode似乎很好用)

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');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM