優れたライブラリは、次のようなSQL名の適切なエスケープを提供する必要があります。
- スキーマ名
- テーブル名
- 列名
たとえば、pg-promise内では、次のように使用します。
db.query("INSERT INTO $1~ VALUES ($2, $3, $4)", [table_name, value_a, value_b, value_c])
つまり、変数に~
を追加することで、テーブル名を適切にエスケープできます。 、これにより、SQLインジェクションから安全になります。
ここから、ライブラリによって実行されるテーブル名の単純なエスケープ:
return '"' + name.replace(/"/g, '""') + '"';
参照:SQL名