私はこれら3つのデータベースライブラリすべてを調べてきましたが、SQLインジェクションを防ぐために何かできるのだろうかと思います。私はそれらの1つの上にlibを構築する可能性が最も高く、インジェクションは私が1つを選ぶ際の最大の関心事です。誰か知ってる?
2 に答える
OTLライブラリの作成者と一緒に入手しました。「OTLDialect」で記述されたパラメーター化されたクエリは、私が呼んでいるように、パラメーター化されたクエリとして基盤となるDBAPIに渡されます。したがって、パラメーター化されたクエリは、基盤となるAPIが作成するのと同じくらいインジェクションに対して安全です。
彼の完全な電子メールの説明については、 この他のSO投稿にアクセスしてください。C++ OTL SQLデータベースライブラリは、内部でパラメータ化されたクエリを使用していますか、それとも文字列連結ですか?
編集:SOCIはsoci::use
式を使用します。これは通常のバインディングメカニズムに変換されますが、より多くの構文糖衣が使用されます。例:db_session << "insert into table(column) values(:value_placeholder)", use(user_input,"value_placeholder");
DTLに関する限り、基盤となるAPIに関連するパラメーターでDTLがどのように機能するかはわかりません。
一般に、このレベルのライブラリは、指示どおりに実行する必要があります。SQLインジェクションを防ぐには、ユーザーから提供された文字列を確認し、それらをサニタイズした後でのみライブラリに渡します。