perlメモ:SQLite等でSQL使用時の文字列のエスケープ

| コメント(0) | トラックバック(0)

データベースのデータをアップデートするのにこんな感じのコード書いちゃってました。orz

my $SQL = "UPDATE EXAMPLE_TBL SET";
$SQL .= " EXAMPLE=' KUMA's test ' "
$SQL .= " WHERE EXAMPLE_ID= 'ABCD' '';
$hDB->do($SQL);

こんなエラーが出ます。

near "s": syntax error(1) at dbdimp.c line 271

何が問題かっていうと、「' KUMA's test '」UPデートし様としている文字列の中に「'」シングルクオートが含まれているのにエスケープせずにアップデートしちゃおうとしてます。

何たる不覚、こんなことも忘れていたとはorz
上のエラーの意味がわからず1時間程悩みました。

上のエラーの意味は「s」なんて文法しらねーよって怒られてます。

KUMA'sの「'」(シングルクォーテーション)のところで文字列が途切れちゃってるので「s」がコマンドだと思われちゃったわけです。「SQLインジェクション」です。セキュリティーホールです。おいらバカです。

エスケープの仕方がわからなくて検索しまくったわけですが、なかなか見つからなくて渋ったのですが、やっと見つけたのが下記のサイトです。

prepare関数を使ったバインドメカニズムを使うのが良いようです。

■情報処理推進機構:情報セキュリティ 2-1. SQL組み立て時の引数チェック
http://www.ipa.go.jp/security/awareness/vendor/programming/a02_01.html

ブログランキング←何かお役にたてましたら、応援クリックおながいします。
ブックマークに追加する
▼関連記事

トラックバック(0)

ここだよ

トラックバックスパム対策の為この記事にトラックバックを行うにはトラックバック元の記事中にこのページのURL「http://blog.kumacchi.com/2008/04/perlsqlitesql.html」を含めてください。

コメントする

機械翻訳

よく読まれている記事

アクセス解析

アクセス元ランキング

QRコード

フィードメーター

フィードメーター - KUMA TYPE

スカウター

スカウター : KUMA TYPE

 
track feed KUMA TYPE
あわせて読みたい
ブログタイムズ

ブログパーツ

超立体マスクマン

アンテナ

■日刊スレッドガイド ■【2ch】ニュー速クオリティ ■痛いニュース(ノ∀`) ■アルファルファモザイク ■越えられない壁( ゚д゚) ■未定なブログ ■何でもありんす ■2chスポーツニュースナビ ■【2ch】ニュース速報アワーズ ■ベア速 ■小太郎ぶろぐ ■ひろぶろ ■GIGAZINE ■せと弘幸Blog『日本よ何処へ』 ■岸部シローの四郎マンション ■しょこたん☆ぶろぐ ■パソコントラブル出張修理・サポート日記 ■【楽天ブックス】DVD アニメ ベストセラーランキング ■呟き

iA

このブログ記事について

このページは、くまっちが2008年4月17日 02:13に書いたブログ記事です。

ひとつ前のブログ記事は「【海外】37歳妻、寝ている夫のペニスを叩き切る。フィリピン[4/14]」です。

次のブログ記事は「SQLメモ:特定のカラムからユニークな値のみ取り出したい」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。