web-dev-qa-db-ja.com

nodejsでsql-injectionを防ぎ、続編する方法は?

Sequelizeを使用してカスタムクエリを記述し、SQLインジェクションの潜在的な問題を可能な限り回避したいと考えています。したがって、私の質問は、Sequelizeを使用して変数を挿入してカスタムクエリを作成する安全な方法があるかどうかです。

23

Sequelizeは、エスケープ置換をエスケープします。これにより、SQLインジェクション攻撃の中心にあるエスケープされていない文字列の問題が回避されます。また、SQLiteまたはPostgreSQLの使用時にパラメーターをバインドすることもできます。これにより、パラメーターをデータベースのクエリに個別に送信することで、リスクをさらに軽減できます ここに記載されています

バインドパラメータは置換のようなものです。置換パラメーターはエスケープされ、クエリがデータベースに送信される前にsequelizeによってクエリに挿入されますが、バインドパラメーターはSQLクエリテキストの外部でデータベースに送信されます。クエリには、バインドパラメータまたは置換を含めることができます。

SQLiteとPostgreSQLのみがバインドパラメータをサポートしています。他の方言は、置換の場合と同じ方法でSQLクエリにそれらを挿入します。バインドパラメータは、$ 1、$ 2、...(数値)または$ key(英数字)によって参照されます。これは方言とは無関係です。

26
Dan Abrey