私が今作業している特定のデータは、ユーザ生成されず、通常の検証ルーチン中に1インチ以内で消毒されますが、基本的なINSERT、SELECT、将来の参照のために、SQLインジェクション攻撃から身を守りながらSQLクエリを実行します。私はむしろ、パラメータ化されたクエリを使用して、「正しい」方法を実行する方法を学びたいと思います。Python標準ライブラリ(バージョン2.5など)では、パラメータ化されたMS-SQLクエリを実行できますか?
サニタイズはいつもいいですが、私は味方の知性を熟練したハッカーのものに合わせています。手動でエスケープすると、ブラックリストはホワイトリストほど堅牢ではないので、おそらく私は物事を見落としています。さらに明確にするために、(%s)
表記を使用して、sqlstatement
という名前の文字列を作成するためのパラメータとして渡すことを意味するわけではありません。私が知る必要がある魔法の言葉の一つは「束縛」だと思います。
私はまた、Python標準ライブラリ以外のものは避けたいと考えています。
問題のアプリケーションには、Microsoft SQL 2005が必要です(該当する場合)。私はActiveState Pythonとモジュールdbiとodbcを使用しています。これは他の誰かのデータベースなので、ストアドプロシージャはありません。
これはdb_apiの質問ですか? MS-SQLのためにhttp://www.python.org/dev/peps/pep-0249/接続を使用してクエリを追加する方法を尋ねていますか? "それは可能ですか?"はいです。もっと知りたいですか? –