Webセキュリティ(3)-SQL Injection
今度はSQL Injection。
これは、Script InsertionやXSSと違ってJavaScriptは必要ありません。
【概要】
削除フォーム等でSQLが必ず、真になるように入力し本来考慮していない動作をさせる
【攻撃】
フォームからのSQL、where句を必ず真にするようにして悪意のあるSQLに変換する
例1(SQL): 0 or 1 /*(コメントアウト文) 例2(SQL): 0 or 1; delete from table /*
【防御】
SQLサニタイズを実施する(整数値:intval、文字列:addslashes、浮動小数点:doubleval)
例(PHP): "SELECT COUNT(*) FROM bbs WHERE id='".intval($_POST["id"]). "' AND pass<>‘”.addslashes($_POST[”pass”]).”‘”
直接関係ないですが、チェックをereg等の関数でおこなうのは危険です。 eregはバイナリセーフでないため、ヌルバイト文字(\0)を入れられると フィルタリングは意味を持たなくなります
2 Comments
Jump to comment form | comments rss [?] | trackback uri [?]