#javascript #express #mongoose #xmlhttprequest
Вопрос:
Мы можем создавать сложные запросы с помощью Мангуста с такими опциями, как $lte
, $gt
, $ne
и так далее… но мне интересно, где/как мы должны создавать эти запросы?
Если у меня есть форма на моем интерфейсе, которая позволяет вводить диапазон дат, я мог бы отправить текст запроса, который выглядит следующим образом:
{
date: {
$gt: "01/01/2021",
$lte: "31/01/2021"
}
}
Но является ли это хорошей практикой? Если нет, то в каком формате я должен отправить это и как я могу преобразовать его в запрос Мангуста?
Комментарии:
1. Вы не хотите раскрывать детали внутренней реализации во внешнем интерфейсе. С точки зрения безопасности вы показываете, что используете Mongo в качестве уровня сохраняемости, который потенциально может позволить атаке попытаться использовать. Во — вторых, вы не хотите отделять свой уровень пользовательского интерфейса от реализации BE, что означает, что произойдет, если вы замените Mongo на другую базу данных NoSQL-вам придется обновить код пользовательского интерфейса, чтобы теперь он соответствовал этой структуре запроса.
Ответ №1:
предполагая, что вы отправляете это в теле запроса, то это не так, как вы должны это делать, это может выявить недостаток безопасности в том, что ваши злоумышленники могут сами писать запросы и извлекать конфиденциальную информацию, видя, что ваш сервер выполнит ЛЮБОЙ запрос, который потенциально может быть использован для раскрытия конфиденциальной информации.
База данных-это то, с чем должен работать сервер, а не интерфейс, не заставляйте интерфейс писать запросы. Вместо этого просто отправьте мне вот такое:
{
"startDate": "1/1/1",
"endDate": "2/2/2"
}
Затем на своем бэкэнде вы можете получить значения из тела запроса и сделать это самостоятельно
{
date: {
$gt: startDate,
$lte: endDate
}
}
Комментарии:
1. Вот что я подумал. Поэтому, если мне нужно создать сложный запрос, который использует множество этих операций, я должен разделить данные в интерфейсе и собрать их обратно в бэкэнд.