« Raspberry Pi Raspbian のVIM syntasticプラグインでファイル保存時に"checker python/python returned abnormal status 2"とエラーが表示される | トップページ | debian JessieにCannon MG6330ドライバをインストール »

2016-10-21

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+mysqlconnectorでのサニタイジング(エスケープ):

« Raspberry Pi Raspbian のVIM syntasticプラグインでファイル保存時に"checker python/python returned abnormal status 2"とエラーが表示される | トップページ | debian JessieにCannon MG6330ドライバをインストール »