2010-11-29 24 views
13

क्या किसी को पता है कि OR 1# जैसे कुछ mysql इंजेक्शन के संदर्भ में क्या है?एसक्यूएल में # मतलब क्या है?

+2

'#' प्रतीक में कुछ अंग्रेजी नाम हैं (संख्या, ऑक्टोथोरपे, हेक्स, हैश, तेज) जो आप * कर सकते हैं * Google :) – BoltClock

+0

:) मुझे पूरी तरह से असंबंधित पृष्ठों को खोजने में मदद करने के लिए धन्यवाद! सभी गंभीरता में, मैंने Google को MySQL पाउंड प्रतीक इत्यादि के लिए किया था, पूछने से पहले और सिर्फ ब्रिटिश पाउंड पर पेज प्राप्त हुए – munchybunch

+4

विडंबना यह है कि यदि आप 'mysql हैश प्रतीक' की खोज करते हैं और 'mysql octothorpe' के लिए दूसरा परिणाम है तो यह अब शीर्ष परिणाम है। । – munchybunch

उत्तर

31

यह लाइन टिप्पणी डेलीमीटर का MySQL का संस्करण है। मानक एसक्यूएल में, लाइन टिप्पणी डेलीमीटर -- है।

-- This is a standard SQL comment. 
# This is a MySQL comment. 
तो एसक्यूएल इंजेक्शन के संदर्भ में

, हमलावर जानता है अगर तुम MySQL का उपयोग कर रहे वह, इसका इस्तेमाल कर सकते MySQL उपेक्षा जो कुछ # के पीछे है और केवल सामान निष्पादित करने के लिए पैदा कर रहा अचानक दुर्भावनापूर्ण एसक्यूएल बयान समाप्त करने के लिए इससे पहले आता है। यह केवल एकल लाइन एसक्यूएल स्टेटमेंट के खिलाफ प्रभावी है, हालांकि। यहाँ एक उदाहरण है:

इनपुट:

प्रयोक्ता नाम: fake' OR 1#
पासवर्ड: pass

परिणामी एसक्यूएल:

SELECT * FROM users WHERE username = 'fake' OR 1#' AND password = 'pass' 

कौन सा है, इस के रूप में क्रियान्वित किया जाता है जो हर रिटर्न पंक्ति:

SELECT * FROM users WHERE username = 'fake' OR 1 
1

यह एक टिप्पणी की शुरुआत है। इसका मतलब है कि उसके बाद कुछ भी पार्सर द्वारा छोड़ा जाएगा।

+1

उत्तर को स्पष्ट करने के लिए, उसी लाइन पर सबकुछ ... – Darbio

+1

@JD: a-ha, एसक्यूएल इंजेक्शन के खिलाफ सुरक्षा के लिए हमें अपने प्रश्नों में और अधिक पंक्तियों की आवश्यकता है (विडंबना) ;-) – zerkms

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