Python+mysqlconnectorでのサニタイジング(エスケープ)
mysql.connectorでのサニタイジング
サニタイジングは*浄化*の事で、文字通りにデータを浄化します。
なぜサニタイジングが必要?
データベースを操作する、ほとんどのアプリはユーザーに検索条件などを入力させると思いますが、この時、検索条件に悪意のあるSQL文を書かれてしまって、意図しない情報を出力してしまう事を避けたり、記号の混入などで思わぬエラーを避けるためにサニタイジングが必要になります。
詳しくは*SQLインジェクション*のキーワードで検索してみてください。
サンプル
エスケープする手段はmysql.connector側で用意してくれていました。
cursor.execute()のパラメータにqueryとデータを渡します。つまり、データをクエリの中に埋め込まずに、クエリにはフォーマットのみを書き、データは別に渡します。すると、execute()でフォーマットしてから実行してくれます。
条件を*FIELD_NAME : VALUE*の形でディクショナリで扱うと楽なので、ここではexecute()にディクショナリを渡していますが、実際には文字列やリスト、タプルなどを渡す事も可能なようです。その際にはクエリのフォーマット指定子 '%(ID)s'の部分が少し変わるようです。
| 固定リンク
« Raspberry Pi Raspbian のVIM syntasticプラグインでファイル保存時に"checker python/python returned abnormal status 2"とエラーが表示される | トップページ | debian JessieにCannon MG6330ドライバをインストール »
「python」カテゴリの記事
- python requests.exception.SSLError SSL接続でエラーが出る(2020.07.27)
- Python+mysqlconnectorでのサニタイジング(エスケープ)(2016.10.21)
- Python CGIでウェブアプリを作ってみる その1(2014.09.13)
- Python CGIでウェブアプリを作ってみる その1(2014.09.13)
- PythonでKInterbasDBを使ってFirebirdデータベースに接続してみる(2014.08.30)
コメント