23

私はプレイを使用しています!フレームワークと Anorm を組み合わせてデータベースにアクセスします。次のようなオブジェクト メンバーが SQL ステートメントに直接挿入される例をよく見かけます。

私の質問は、これらの入力はサニタイズされていますか? ほとんどの例は次のようになります。

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()
        }
    }
}

ハッキングで調べてみますが、間違えやすいので聞いたほうがいいと思い、世間の知恵を借りることができました。

4

1 に答える 1

21

そのソース コードによると、Anorm はjava.sql.PreparedStatementsそのような SQL インジェクションを防ぐ だけをビルドします。(一般的な説明については、PreparedStatement ウィキペディアのページを参照してください)

于 2012-03-25T14:51:01.167 に答える