こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ASPでのSQLインジェクション対策

ASPにて、ADOでAccessにアクセスする際にSQLインジェクション対策はどのようにしたらよいでしょうか。
現状は以下の様にしています。(name)は画面から受け取ったパラメータです。

Set aConn = CreateObject("ADODB.Connection")
aConn.Provider = "Microsoft.Jet.OLEDB.4.0"
aConn.ConnectionString = Server.MapPath("DB.mdb")
aConn.open

SQL = "SELECT A FROM TBL WHERE NAME = " & name
......

宜しくお願いします

投稿日時 - 2013-11-07 17:36:27

QNo.8338008

困ってます

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

 対策の第一歩は、パラメータとSQLコマンドを分離することです。これによって、パラメータの解釈をシステムに押しつけることが出来ます。
 すこしプログラムは長くなりますけどね。

 次のページに具体例が載っているので、参考にしてみてください。あなたが書いたサンプルとほとんど同じ事をしています。

 http://d.hatena.ne.jp/anon_193/20090115/1232041376

 このパターンを使った時には、パラメータに入っている文字列は、決してSQL本体の命令語とは解釈されないことが期待できます。基本的なパラメータのチェック(おそらくあなたが手でやるよりは遙かに多い)は全てライブラリーがやってくれます。また、データベース本体も与えられた文字列がパラメータであることを認識できるので、こちらでもパラメータ内の文字列をSQL文と誤解しないように処理されます。(まぁ、ライブラリーやデータベースシステムにバグがあるとどうしようも無いわけですが、こればっかりは・・・次の段階ですね。)

投稿日時 - 2013-11-10 12:44:08

あなたにオススメの質問