2010-08-09 12 views
33

मैं सभी डेटाबेस संचालन के लिए दृढ़ता API का उपयोग करके जावा ईई 6 और जेएसएफ-2.0 का उपयोग कर जावा वेब एप्लिकेशन बना रहा हूं।जेपीए में एसक्यूएल इंजेक्शन हमले संभव हैं?

बैक-एंड माईएसक्यूएल है, लेकिन मैंने सभी ऑपरेशन के लिए ईजेबी-क्यूएल में एंटीटी मैनेजर फ़ंक्शंस और नामांकित क्वेरी का उपयोग किया है। एसक्यूएल इंजेक्शन हमले इस मामले में संभव हैं?

उत्तर

31

यह केवल संभव है यदि आप ऐसा तरह एक एसक्यूएल/JPQL स्ट्रिंग में उपयोगकर्ता के नियंत्रित चर को इनलाइन कर रहे हैं:

String sql = "SELECT u FROM User u WHERE id=" + id; 

आपको लगता है कि नहीं कर रहे हैं और केवल पैरामिट्रीकृत/नामित प्रश्नों का उपयोग कर रहे हैं, तो आप हैं सुरक्षित रहो

+4

यदि 'em.persist (उपयोगकर्ता) का उपयोग करना है, जहां 'उपयोगकर्ता' भर जाता है, तो त्रुटि, उपयोगकर्ता? –

+0

इसका उत्तर होगा? ... – user435421

11

हां, यह संभव है। यह आपके द्वारा लागू किए जाने वाले तरीके पर निर्भर करता है।
Preventing injection in JPA query language पर एक नज़र डालें।

+0

+1 बहुत ही रोचक लिंक। धन्यवाद। – Akshay

+1

मैं एसएएनएस लेख को भी जांचने की सिफारिश करता हूं, इसमें अधिक नमूने/परिचय हैं: http://software-security.sans.org/developer-how-to/fix-sql-injection-in-java-persistence- api-jpa – eckes

5

यदि आपका जेपीए प्रदाता इंजेक्शन हमलों को संभालने के लिए सभी इनपुट तर्कों को संसाधित करता है तो आपको कवर किया जाना चाहिए। हम ग्रहण लिंक में पतले हैं।

जैसा कि पिछले पोस्टर ने आपके स्वयं के जेपीक्यूएल या एसक्यूएल (देशी प्रश्नों के लिए) को एकसाथ पेश करने का उल्लेख किया है, आपको बेनकाब कर सकता है।

मैं जेपीक्यूएल/एसक्यूएल बनाने के लिए समेकित तारों पर पैरामीटर के साथ नामित प्रश्नों का उपयोग करने की सलाह दूंगा।

डौग

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