[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 メーリングリストの案内