sql >> データベース >  >> RDS >> PostgreSQL

SQLインジェクションを防ぐためにパラメータ化されたSQLクエリを書く方法は?

    私はKnex.jsユーザーではありませんが、ドキュメントを見ると、KnexがJavaScriptオブジェクト構文を使用して述語を定義していることが、パラメーター化を実現する方法のようです。

    ただし、組み込み関数を使用している場合は、whereRawを使用する必要があります。 。

    ドキュメントを見る( http://knexjs.org/#Builder-whereRaw )および( http://knexjs.org/#Raw-Bindings )これを実行したいと思います:

    .whereRaw('question LIKE :term OR note LIKE :term OR user_name LIKE :term', { term: '%' + term + '%' ] } )
    

    KnexにはorWhereRawがありません したがって、述語を論理的に分離する場合は、ロングハンドバージョンを使用する必要があります。

    term = '%' + term + '%';
    
    .orWhere( knex.raw( 'question  LIKE ?', [ term ] ) )
    .orWhere( knex.raw( 'note      LIKE ?', [ term ] ) )
    .orWhere( knex.raw( 'user_name LIKE ?', [ term ] ) )
    

    ?に注意してください は位置パラメータ用で、:term 名前付きパラメーター用です。



    1. 結合テーブルからの単一行のフェッチ

    2. 別のテーブルにない場合にのみ、1つのテーブルからユーザーを選択します

    3. MySQLでの全文検索のためのAgainstでのサブクエリの使用

    4. Oracleデータベース列の特定の値を置き換える方法は?