• 締切済み

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 ...... 宜しくお願いします

みんなの回答

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.1

 対策の第一歩は、パラメータとSQLコマンドを分離することです。これによって、パラメータの解釈をシステムに押しつけることが出来ます。  すこしプログラムは長くなりますけどね。  次のページに具体例が載っているので、参考にしてみてください。あなたが書いたサンプルとほとんど同じ事をしています。  http://d.hatena.ne.jp/anon_193/20090115/1232041376  このパターンを使った時には、パラメータに入っている文字列は、決してSQL本体の命令語とは解釈されないことが期待できます。基本的なパラメータのチェック(おそらくあなたが手でやるよりは遙かに多い)は全てライブラリーがやってくれます。また、データベース本体も与えられた文字列がパラメータであることを認識できるので、こちらでもパラメータ内の文字列をSQL文と誤解しないように処理されます。(まぁ、ライブラリーやデータベースシステムにバグがあるとどうしようも無いわけですが、こればっかりは・・・次の段階ですね。)

関連するQ&A