私は、オフセットとリミットを持って製品をフェッチする機能を持っています。sequelize(node.js)でエスケープ文字列を使用する必要がありますか?
function f(offset,limit, callback) {
models.Product.findAll({
offset: offset,limit: limit
}).then(function (products) {
...
}).catch(function (error) {
callback(error, null);
});
}
サーバーは、クライアントからのPOSTクエリによってオフセットと制限を取得します。 限界値とオフセット値を自分でチェックするか、後で続けるのが私の代わりに行うべきですか?それは 'キャッチ'メソッドのすべてのエラーをキャッチしますか?
たとえば、サーバーの期待値 - オフセット:0、制限:100、 がありますが、オフセット - -87、制限: 'rchk'などのSQLインジェクションがあります。
私はこのデータをfindAllに渡すか、入力データを自分でチェックしてから渡す必要がありますか?
私はこれらの質問のすべてに答えるsequelizeについて十分に知っているが、質問に対するとしてはありませんあなたがあなたの質問に入力をエスケープする必要があるかどうかの答えは、常にはいです。たとえそれがあなた自身のサーバー側のコードの中から生じたとしても。 –
@JohnHalbert sequelizeは、mongodbでどのようにクエリを実行するかのようなクエリを抽象化します。したがって、OPは、デフォルトの 'findAll'に渡された値をsequelizeライブラリが既にエスケープしているかどうかをチェックする必要があります(ただし、生のクエリが使用されていない限りはそうです)。しかし、それでも、他のSQLライブラリでも、バインドパラメータとクエリプレースホルダを使用してデータをクエリに渡し、ライブラリが内部で正しいエスケープ処理を行うようにする必要があります。 –