2017-04-21 8 views
0

私はhttps://github.com/mysqljs/mysql.gitライブラリを使用します。nodejs:各引数をエスケープする代わりにSQL文字列全体をエスケープする方法は?

私はSQLのクエリファイルを1つずつ変更することはできませんが、各引数をエスケープするためのファイルが多すぎますが、すべてのSQLクエリは同じベースのクエリメソッドを呼び出すことはできませんmysqlインスタンス、ので、私は基本的なmysqlのクエリメソッドで、最終的なSQL文字列をエスケープすることができますかと思います。

私が代わりにクエリを準備するか、エスケープ文字列をconcating使用してこれを行うのmysql_escape("select * from tableA where name = 'foo'bar'")ようないくつかの機能を

select * from tableA where name = 'foo\'bar' 

select * from tableA where name = 'foo'bar 

のような全体SQL文字列をエスケープします。

答えて

1

実際に非効率的な機能や悪いハッキングを引き起こす方法はありません。パラメータ化されたクエリを使用するだけで、基本的にはそこに存在します。それらを使用することができない場合は、連結文字列を使用します。

クエリ全体に対してmysql_escapeを実行するには、クエリの一部である文字と入力値の一部である文字を知る関数が必要です。あなたは、ある種の愚かな正規表現を書いて、クエリから値を取り出してからエスケープすることができますが、それは単なる悪い考えです。

関連する問題