2012-03-25 6 views
20

मैं Play का उपयोग कर रहा हूँ! डेटाबेस तक पहुंचने के लिए Anorm के साथ ढांचे। मैं अक्सर निम्नलिखित उदाहरणों को देखता हूं जहां ऑब्जेक्ट सदस्यों को सीधे SQL कथन में इंजेक्शन दिया जाता है।स्कैला एनोम स्ट्रिंग प्रतिस्थापन इनपुट को स्वच्छ करता है?

मेरा सवाल है, क्या ये इनपुट sanitized हैं? अधिकांश उदाहरण की तरह लग रही है:

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 के अनुसार, एनोर्म केवल java.sql.PreparedStatements बनाता है, जो इस तरह के एसक्यूएल इंजेक्शन को रोकता है। (एक सामान्य विवरण के लिए PreparedStatement wikipedia पृष्ठ देखें)

+0

आप https://github.com/playframework/anorm/blob/1384c85434254da8cbd73ac5ba93bf258c04bf12/core/src/main/scala/anorm के लिए अपने "इसके स्रोत कोड" लिंक को अपडेट कृपया सकते हैं /SimpleSql.scala#L8-L19? –

संबंधित मुद्दे