2017-02-03 7 views
2

に配列して値を渡す方法を私はコンマは、文字列が、ドキュメントhereによると、2番目の引数は配列でなければなりません分離が必要ですrawQueryました:帆ORM:valuesToEscapeパラメータ

ダイナミックの配列を、信頼できない文字列をSQLエスケープに変換し、このモデルのデータベースに適切なテンプレート構文を使用してSQL文字列内に挿入します。 (あなたは注入するための動的な値を持っていない場合は、ちょうどここに空の配列を使用しています。)

var rawQuery = 'SELECT * FROM "user" WHERE "user"."email" IN ($1)'; 
User.query(rawQuery, ['[email protected]', '[email protected]'], function (err, rawResult) { 
    if (err) { return res.serverError(err); } 
    return res.ok(rawResult.rows); 
}); 

どのように私は、配列を変数を渡すことなく、このクエリの作業を行うことができますか?私はこのような変数を直接追加することができます

var rawQuery = 'SELECT * FROM "user" WHERE "user"."email" IN (' + foo +')'; 

しかし、SQLインジェクション攻撃を受けやすくなります。

答えて

2

パラメータ注入モードを使用せずに直接クエリを実行するには、SQLコマンドの特別な文字を削除する必要があります。そうしないと、注入攻撃が除去されます。

あなたのためにそれを行うのパッケージがあります:最も人気のある彼らはあなたの文字列に任意の特別な文字にエスケープ文字を追加しますnpm: sql-escapenpm sqlstring

ある :

var escape = require('sql-escape'); 

var result = escape('my sweet "string"'); 
//result: 'my sweet \\"string\\"' 
は、
関連する問題