2012-03-25 17 views
20

私はPlay!を使用しています。フレームワークをAnormと一緒に使用してデータベースにアクセスします。オブジェクトのメンバがSQL文に直接挿入されている次のような例がよくあります。Scala Anorm Stringの置換はサニタイズ入力ですか?

私の質問は、これらの入力は消毒されていますか?ほとんどの例としては、以下のようになります。

object Person { 
    def save(p:Person) { 
     DB.withConnection ("default") { implicit connection => 
      SQL(""" 
       INSERT INTO person(firstName,lastName) 
       values ({firstName}, {lastName}) 
       """ 
       ).on(
       "firstName" -> p.firstName, 
       "lastName" -> p.lastName 
      ).executeUpdate() 
     } 
    } 
} 

私はハッキングの方法により知るしようとしますが、間違いを作るのは簡単ですので、私は尋ねるがより適切だと思った、と私は群衆の知恵に描くことができます。

答えて

19

its source codeによれば、AnormはこのようなSQLインジェクションを防ぐためにjava.sql.PreparedStatementsのみを構築します。

+0

あなたはhttps://github.com/playframework/anorm/blob/1384c85434254da8cbd73ac5ba93bf258c04bf12/core/src/main/scala/anormに、あなたの「ソースコード」のリンクを更新してくださいでした(一般的な説明についてはPreparedStatement wikipediaページを参照してください) /SimpleSql.scala#L8-L19? –

関連する問題