[Seasar-user:20997] Re: Seasar2のSQLインジェクションについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2011年 9月 9日 (金) 18:00:25 JST


小林 (koichik) です.

> @Sql内において、
>     @Sql("SELECT count(NoteNumber) FROM NOTETABLE")
> では,NoteNumberに関してSQLインジェクション対策がなされていない(NG)ということでしょうか。

この場合の NoteNumber は固定なので、SQL インジェクションの問題は
ないはずです。
問題になるのは、@SQL や SQL ファイルの中で「埋め込み変数コメント」を
使った場合です。

http://s2dao.seasar.org/ja/s2dao.html#SQLBind

の「埋め込み変数コメント」を参照してください。


Date: Fri, 9 Sep 2011 12:06:29 +0800
From: Toshiya Takahashi <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:20995] Seasar2のSQLインジェクションについて

> はじめまして。高橋と申します。
> 
> Seasar2のSQLインジェクションについて調査中です。
> ドキュメントや過去のメーリングリストを参照させていただきました。
> ですが、初心者のため、最後の確信が持てず質問させていただきました。
> 
> 現在、Java, Struts, Seasar2という環境において、
> Dao内で、@[E-MAIL ADDRESS DELETED], @SqlFile, @Arguments, @Query アノテーションを主に使っております。
> 
> SQLインジェクション対策がなされているのは、
> 
> 例えば
>     @S2Dao(bean = sample.class)を使うDAOファイル内においての
>     @Query("DirectoryName = /*directoryName*/")
>>     @Sql("SELECT Number, LineNumber FROM NumberTable WHERE Number =
> /*Number*/")
>>     @SqlFileで指定された外部ファイルにおいて
>     select * from employee
>     where
>     salary >= /*salaryMin*/
> ではPreparedStatementが使われ、SQLインジェクション対策がなされています(OK)が、
> 
> @Sql内において、
>     @Sql("SELECT count(NoteNumber) FROM NOTETABLE")
> では,NoteNumberに関してSQLインジェクション対策がなされていない(NG)ということでしょうか。
> 
> また、
>     @Arguments( { "Number", "LineNumber" })
>     public Sample select(String Number, long LineNumber);
> などは、SQLを自動生成するため、SQLインジェクション対策は事前になされている(OK)
> ということでよろしいでしょうか。
> 
> 考え違いや、その他何か考慮することがあれば、お教えいただければうれしく思います。
> 
> 高橋

--
{
  name: "Koichi Kobayashi",
  mail: "[E-MAIL ADDRESS DELETED]",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
 }



Seasar-user メーリングリストの案内