क्या जावा में कोई क्लास या विधि है जो जांच करेगी कि कोई स्ट्रिंग SQL सर्वर कीवर्ड है या नहीं?

मुझे ऐसा कुछ चाहिए जो जांच सकता है कि कोई स्ट्रिंग "चयन करें", "INSERT" इत्यादि है। यदि यह मौजूद है तो मैं उत्सुक हूं।

1

4 उत्तर

जोड़ने के लिए काफी आसान है:

    HashSet  sqlKeywords    =
     new HashSet(Arrays.asList(
       new String[] { ... cut and paste a list of sql keywords here ..  }));
4
जोड़ा

यदि आप एसक्यूएल इंजेक्शन को रोकने की कोशिश कर रहे हैं, तो तैयार कथन जैसे जेडीबीसी की निर्मित सुविधाओं का लाभ उठाना बेहतर होगा। सामान्य रूप से, SQL कथन बनाने के लिए स्ट्रिंग concatenation का उपयोग खतरनाक है। जावा में SQL इंजेक्शन को रोकना से:

Prepared Statements:

String selectStatement = "SELECT * FROM User WHERE userId = ? ";
PreparedStatement prepStmt = con.prepareStatement(selectStatement);
prepStmt.setString(1, userId);
ResultSet rs = prepStmt.executeQuery();
3
जोड़ा

DatabaseMetaData.getSQLKeywords डेटाबेस डेटाबेस को वापस कर देगा जो SQL-2003 में नहीं हैं (SQL-2003 कीवर्ड मानक में पाया जा सकता है)। विभिन्न प्रकार के फ़ंक्शन नाम और इसी तरह के लिए इंटरफ़ेस के भीतर अन्य विधियां हैं।

चेस सेबर्ट का उल्लेख है, ऐसा नहीं लगता कि यह एसक्यूएल इंजेक्शन हमलों को अवरुद्ध करने का एक प्रभावी तरीका है।

1
जोड़ा

क्यों नहीं शुरू करें यह संग्रहीत प्रक्रिया और स्टीव के सुझाव के रूप में हैशपैप का उपयोग करके इसे संभवतः जावा में परिवर्तित करने के लिए इसे संशोधित करें।

व्यक्तिगत रूप से मुझे संग्रहीत प्रक्रिया का विचार पसंद है क्योंकि विभिन्न डेटाबेस में अलग-अलग कीवर्ड हो सकते हैं, इसलिए डेटाबेस पास निर्णय लेने के लिए यह शानदार लगता है

1
जोड़ा