2010-01-23 7 views
5

क्या कोई कारण है कि आपको HTML फ़ील्ड के समान ही अपने फॉर्म फ़ील्ड का नाम क्यों देना चाहिए या नहीं?क्या आपके फॉर्म फ़ील्ड का नामकरण समान है जैसे mysql वास्तव में कोई सुरक्षा जोखिम उत्पन्न करता है?

<input type="text" name="my_field_1" id="my_field_1" /> --> mysql row my_field_1 

या

<input type="text" name="myField1" id="myField1" /> --> mysql row my_field_1 

केवल एक चीज मैं की शायद HTML के लिए नामकरण परंपराओं रहे बनाम Mysql (व्यक्तिगत पसंद हो सकता है), और साथ ही मामूली इंजेक्शन रोकथाम में सोच सकते हैं (जाहिर है फ़ील्ड नाम करने के लिए होगा और भिन्नता है ... लेकिन सभी मानों को वैसे भी मान्य किया जाना चाहिए + असली बचने की स्ट्रिंग का उपयोग)।

+2

'या' के बीच का अंतर कहां है? ;) –

+0

वह कोड को प्रारूपित करना भूल गया। मैंने कोड संपादित और स्वरूपित किया। – BalusC

+0

"असली भागने स्ट्रिंग"? निश्चित रूप से, आपका मतलब है "parametrized प्रश्न"। – aib

उत्तर

2

एकमात्र तरीका जिसे मैं देख सकता हूं, समस्या उत्पन्न हो सकती है जब हमलावर उसी तालिका में संरक्षित कॉलम का नाम जानता है जिसे फ़ॉर्म के माध्यम से बदला नहीं जाना चाहिए, और उस नाम के साथ एक नया इनपुट तत्व बनाता है तालिका में अवैध रूप से मूल्य को "फिसलने" के इरादे से।

कुछ तो वहाँ अपने वास्तविक स्तंभ नाम के बाद प्रपत्र फ़ील्ड्स नामकरण के साथ कोई समस्या नहीं है कि अपने कार्यक्रम चाहिए वैसे भी फिल्टर बाहर कार्यक्रम स्तर पर, है। आपको बस हर उपलब्ध टेबल कॉलम या फॉर्म फ़ील्ड के माध्यम से कभी भी लूप की देखभाल करने की आवश्यकता नहीं है, लेकिन अपडेट होने के बारे में चुनिंदा रहें।

एक माध्यमिक, बहुत दूरस्थ जोखिम यह है कि आप अपनी तालिका में कॉलम नामों का खुलासा कर रहे हैं। तो यदि आप सुरक्षा के बारे में सुपर-पागल हैं, तो आप फॉर्म फ़ील्ड्स को उनके कॉलम से अलग नाम देना चाह सकते हैं। लेकिन मैं इसके लिए कोई वास्तविक आवश्यकता नहीं देख सकता।

+0

+1, बहुत अच्छा बिंदु। –

+0

जबकि हर किसी ने बहुत ही वही उत्तर प्रदान किया (जिसमें कुछ भी गलत नहीं है), आपकी पोस्ट सिर्फ साबित करती है कि शायद मैं थोड़ा सा भयावह हूं :) – jwzk

0

वास्तव में कोई भी यह नहीं जान पाएगा कि आपने कस्टम नामों के बजाय फ़ील्ड नामों का उपयोग किया है (कुछ सामान्य कॉलम नामों को छोड़कर)। वे अब कैसे हो सकते हैं? हो सकता है कि आपने कस्टम नामों का इस्तेमाल किया हो, शायद नहीं;)
यदि आप समान नामों का उपयोग करते हैं तो आपके कोड को समझना आसान हो जाता है और आपका कोड बनाए रखना आसान होगा।

लेकिन अन्य उत्तरों को जो समस्या हो सकती है, उससे अवगत होने के लिए पढ़ें।

0

सहमत हुए। कोई बात नहीं।

वास्तव में, यदि आप फ़ील्ड्स फ़ील्ड के समान फ़ील्ड का नाम देते हैं तो आप कुछ शांत लूपिंग योजनाएं कर सकते हैं जो MySQL में अधिक स्वचालित हो या अपडेट कर सकें।

+0

लूपिंग योजनाएं एक बुरा विचार है, क्योंकि मुझे आशा है कि मैंने अपने विस्तार में विस्तार किया है जवाब। – blowdart

+0

क्षमा करें, मैंने बहुत से कोड उदाहरण शामिल नहीं किए हैं, लेकिन मैंने जो कुछ किया है, वह दोनों एक साथ मिलते हैं। मेरे पास आमतौर पर "अपेक्षित" फ़ील्ड की एक सरणी होती है जिसे मैं लूप के माध्यम से लूप करता हूं, POST सरणी में मौजूद संबंधित मानों को पकड़ता हूं और मान्य करता हूं। तो यह एक अंधेरा पाश नहीं है, नहीं .... क्योंकि यह सिर्फ एक बुरा विचार है। – jerebear

2

यदि आप मान्य हैं तो नहीं, लेकिन फ़ॉर्म से अपेक्षा की अपेक्षा करने के लिए सत्यापन सीमित न करें। क्या होगा यदि आपके पास स्वामी कॉलम के साथ कोई टिप्पणी तालिका है और आप फॉर्म में सभी फ़ील्ड से SQL अद्यतन विवरण बनाते हैं, क्योंकि आप जानते हैं कि वहां कोई मालिक फ़ील्ड नहीं है? क्या होता है यदि मैं TamperData का उपयोग करता हूं, फ़ायरफ़ॉक्स एक्सटेंशन जो मुझे अनुरोध में डेटा जोड़ने की अनुमति देता है और मैं एक मालिक फ़ील्ड जोड़ता हूं?

सभी क्षेत्रों के माध्यम से लूप न करें और उन्हें स्वीकार करें, सुनिश्चित करें कि केवल वे फ़ील्ड हैं जो आप उम्मीद करते हैं और कोई अतिरिक्त नहीं है!

0

यह तब तक सुरक्षा जोखिम नहीं है जब तक आपकी वेबसाइट SQL इंजेक्शन के लिए 100% सुरक्षित न हो। तो मैं फ़ील्ड नामों का चयन/उपयोग करने के बजाय, उस तथ्य के बारे में चिंता करूंगा।

0

नहीं, क्योंकि आपको यह मानना ​​चाहिए कि किसी भी हमलावर के पास आपके पूरे स्रोत कोड बेस तक पहुंच है, इसलिए उन्हें कुछ अलग नाम देने से आप पर हमला करने की क्षमता कम नहीं होगी।

किसी एप्लिकेशन की सुरक्षा करने का सही तरीका यह सही ढंग से लिखना है, किसी व्यक्ति को उस पर हमला करने की आवश्यकता हो सकती है (उन्हें वैसे भी मिल सकता है)।

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