जैसा कि मैंने बहुत सारे लेखों में पढ़ा है, जब मैं जेपीए/हाइबरनेट क्वेरी का उपयोग करता हूं तो मेरे प्रश्नों में पैरामीटर सेट करना अच्छा होता है इसलिए एसक्यूएल इंजेक्शन से बचा जाता है। पसंद:जेपीए क्वेरी - स्थितित्मक पैरामीटर में एसक्यूएल इंजेक्शन जेपीए मूल प्रश्न
select user from User user where user.name = :name and user.surname = :surname
मेरी समस्या यह है कि कुछ मामलों में मुझे अपनी क्वेरी बनाने पर मूल क्वेरी का उपयोग करने की आवश्यकता होती है।
मैं अपने इकाई प्रबंधक और createNativeQuery
का उपयोग करूंगा। लेकिन इस मामले में पैरामीटर स्थितित्मक होंगे। जैसा:
select * from users where user_name = ? and user_surname = ?
तब मेरे क्वेरी में मैं विधि setParameter(1, "name")
आदि तो है इस मामले "एसक्यूएल इंजेक्शन सबूत" की तरह जब पैरामिट्रीकृत क्वेरी में उपयोग करेंगे?
हां, सेट पैरामीटर विधि का उपयोग करते समय यह पैरामीटर से सही ढंग से बच जाएगा ताकि इसे केवल डेटा के रूप में उपयोग किया जा सके। इंजेक्शन भेद्यता उत्पन्न होती है जब उपयोगकर्ता आपूर्ति किए गए पैरामीटर का उपयोग करके स्ट्रिंग का निर्माण होता है और ठीक से बच नहीं जाता है। – kevingallagher