SQLインジェクションを防止してNode.JSでMS SQLサーバデータベースの行を選択するにはどうすればよいですか?私はエクスプレスフレームワークとパッケージmssql
を使用します。ここでNode.JSでSQLインジェクションを防止するにはどうすればよいですか?
は、私はES 6
const express = require('express'),
app = express(),
sql = require('mssql'),
config = require('./config');
let connect = (f, next) => {
sql.connect(config.database.connectionstring).then(f).catch((err) => {
next(err);
});
};
app.get('/locations/get/:id', (req, res, next) => {
let f =() => {
new sql.Request().query(`select * from mytable where id = ${req.params.id}`)
.then((recordset) => {
console.dir(recordset);
}).catch((err) => {
next(err);
});
};
connect(f, next);
});
むしろコードで 'SELECT'ステートメントを持つよりも、ストアドプロシージャを呼び出します。 –
パラメータを使ってみましたか? https://www.npmjs.com/package/mssql –
ストアドプロシージャを使用する必要はありません。 SQLインジェクションを阻止するのはsprocではなく、パラメータの使用です。 *文字列の書式設定や補間を使用してクエリを作成したり、パラメータ化されたクエリを使用したり、パラメータを個別に渡したりしないでください。つまり、mytableから 'select * from id = $ {req.params.id}'を選択することはできません。それは 'select * from mytable where id = @ id'で、パラメータとして' @ id'を渡すべきです。 –