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