Является ли уязвимость в использовании req.params непосредственно в маршруте Express.js без проверки? - PullRequest
0 голосов
/ 23 октября 2018

Как гласит заголовок: действительно ли это уязвимость - использовать req.params.id (в моем примере) непосредственно в функции обратного вызова маршрута?

Если так, каким должен быть правильный способ сделать это?

const express = require('express');
const app = express();
app.use('/:id',(req, res)=>{
  // do something with id req.params.id
  // like writing it to an DB
  res.send(req.params.id);
})
app.listen(3000,()=>{
  console.log('listening on http://localhost:3000/:id');
});

1 Ответ

0 голосов
/ 23 октября 2018

Да, использование параметров напрямую без проверки уязвимо, ваша система может быть взломана с помощью атаки SQL-инъекцией.

Например, предположим, вы получаете информацию о пользователях из базы данных, и ваш запрос выглядит следующим образом:

SELECT id, name, password from Users WHERE id = 1

Вы ожидаете идентификатор в соответствии с форматом, сохраненным в БД, но допустим, что искаженный запрос содержит идентификатор как '1 ||Истинно, так что в конечном итоге ваш запрос будет сформирован следующим образом:

SELECT id, name, password from Users WHERE id = 1 || True

Поскольку этот запрос вернет список всех пользователей из базы данных, и ваш код не будет выполнен, лучше проверить каждыйзапрос пользователя перед началом обработки.

https://www.incapsula.com/web-application-security/sql-injection.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...