Я использую веб-приложение для приема запросов, которые добавят элементы в мой экземпляр mongoDB.
Это удивительно, потому что это обеспечивает совместимость с другими службами.
У меня сейчас два вопроса:
Я выполняю проверку всех элементов запроса. к сожалению, независимо от того, как я их проверяю, они, кажется, всегда передаются в виде строк, есть ли способ принять тип int или около того.
Помимо использования check для проверки структуры запроса json, что еще я могу использовать, чтобы избежать любых межсайтовых инъекций? (XSS)
Это очень важно для меня, так как элементы в этом запросе перейдут в мою базу данных
Как уже упоминалось выше, я использую проверку и выбрасываю ошибку, когда структура не идеальна, я понимаю, что только потому, что структура правильная, это не означает, что контент не может быть использован для атаки XSS
для запроса, такого как следующий
http://localhost:3000/request?token=1234567890&id=id123&timeStamp=234234&item=uy3242&anotherItem=111222
WebApp.connectHandlers.use('/request', (req, res, next) => {
//check validity of the query
try{
var matchTest = check(req.query, {
token : String,
id : String,
timeStamp : String,
item : String,
anotherItem : String
});
}catch (err){
res.writeHead(406);
res.end(`request failed check`);
}
//check validity of the token
try{
//is it a good idea to use req.query.token? or should I stringify it first?
validateToken(req.query.token);
}
catch(err) {
res.writeHead(401);
res.end(`Invalid Token`);
}
//finally save information needed to DB
myCollectionName.insert(req.query);
res.writeHead(200);
res.end(`request Passed!`);
});
То, чего я пытаюсь добиться, - это надежный способ избежать xss и, возможно, также иметь возможность выполнять проверки для проверки (например, токена) на самом деле целого числа, в котором нет букв и т. Д.