2009-12-26 17 views
12

में तालिका नाम के चारों ओर बैकटिक का महत्व MySQL प्रश्नों में, तालिका नाम के चारों ओर बैकटिक्स रखना कितना महत्वपूर्ण है। क्या सुरक्षा के साथ इसका कोई संबंध है? क्या MySQL इंजेक्शन हमले टेबल नाम के माध्यम से संभव हैं यदि तालिका इनपुट उपयोगकर्ता इनपुट के आधार पर PHP में गतिशील रूप से बनाया गया है?MySQL क्वेरी

उत्तर

15

बैकटिक गलती से एक नाम उदाहरण के लिए SQL में एक आरक्षित शब्द है कि का उपयोग करने से मदद करते हैं। "कहां" नाम की एक टेबल लें, यह एक टेबल के लिए एक बेवकूफ नाम है जो मैं सहमत हूं, लेकिन यदि आप इसे बैकटिक्स में लपेटते हैं तो यह ठीक काम करेगा।

+5

यह तब होता है जब आपके पास फ़ील्ड होता है जिसे 'पासवर्ड' कहा जाता है। –

+0

धन्यवाद, मैंने कुछ नया सीखा। मुझे लगता है कि बैकटिक्स के साथ "ऑर्डर" नामक कॉलम को चिह्नित करने से भी उस आरक्षित शब्द से संघर्ष करना पड़ेगा। – eoinoc

+0

क्या हमें PostgreSQL में भी उनका उपयोग करने की आवश्यकता है? –

3

यदि आपके पास एक कीवर्ड के समान नाम वाला टेबल नाम है, उदा। का चयन करें, निम्न क्वेरी अभी भी काम करेगा:

select * from `select`; 
10

MySQL प्रश्नों में, में तालिका तालिका के चारों ओर बैकटिक्स लगाने के लिए यह कितना महत्वपूर्ण है। क्या सुरक्षा के साथ ऐसा कुछ है?

जहां तक ​​बैकटिक्स का संबंध है, मैं उनका उपयोग तब करता हूं जब mysql-specifcs नामों और क्वेरी के बीच नाम संघर्ष होता है।

MySQL इंजेक्शन संभव हमलों तालिका नाम के माध्यम से तालिका नाम उपयोगकर्ता इनपुट के आधार पर पीएचपी में गतिशील रूप से बनाई गई है, तो कर रहे हैं?

जब भी कोई उपयोगकर्ता इनपुट होता है, तो आपको यह सुनिश्चित करना होगा कि आप उपयोगकर्ता से आने वाले इनपुट को फ़िल्टर और मान्य करें। तो हाँ इसके लिए सुरक्षा जोखिम है।

मैं तुम्हें संख्या के लिए intval और उपयोग करने के लिए किसी भी चर है कि आप अपने प्रश्नों में उपयोग कर सकते हैं के लिए समारोह mysql_real_escape_string की सिफारिश करेंगे।

+2

में कोई बैकटिक्स वाक्यविन्यास त्रुटियां नहीं हैं इस उत्तर में जोड़ने के लिए ... किसी भी चर को एक एसक्यूएल स्ट्रिंग में रखा जाता है, यह एसक्यूएल इंजेक्शन के लिए एक अवसर है। और इससे कोई फ़र्क नहीं पड़ता कि यह डेटा कहां से आता है, कुछ भी सचमुच सुरक्षित नहीं है। हमेशा सब कुछ बचें। – TravisO

+0

@TravisO: सहमत है और इसे जोड़ने के लिए धन्यवाद :) – Sarfraz

+2

मैंने हाल ही में कुछ सीखा है, mysql_real_escape_string() बैकटीक्स से बच नहीं है। यदि आप एक PHP चर के रूप में एक PHP चर का उपयोग कर रहे हैं, तो इसका शोषण किया जा सकता है। – Noodles