私が現在扱っている特定のデータはユーザーが生成したものではなく、通常の検証ルーチン中にその寿命の 1 インチ以内にサニタイズされますが、基本的な INSERT、SELECT などを実行する方法を学びたいと思います。今後の参考のために、SQL インジェクション攻撃から身を守りながら SQL クエリを実行します。パラメータ化されたクエリを使用して、「正しい」方法で物事を行う方法を学びたいと思います。
サニタイズは常に素晴らしいことですが、私は自分の哀れな知性と熟練したハッカーの知性とを戦わせています。ブラックリストはホワイトリストほど堅牢ではないため、手動でエスケープするということは、おそらく物事を見落としていることを意味します。(%s)
さらに明確にするために、表記法を使用して、おそらく という名前の文字列を作成するためのパラメーターとして渡すという意味ではありませんsqlstatement
。私が知っておくべき魔法の言葉の 1 つが「束縛」だと思います。
また、Python 標準ライブラリ以外のものは避けたいと思っています。
問題のアプリケーションには、関連する場合、Microsoft SQL 2005 が必要です。ActiveState Python とモジュール dbi および odbc を使用しています。これは他人のデータベースであるため、ストアド プロシージャは使用できません。