2010-11-13 15 views
7

पीएचपी मैनुअल में, वहाँ एक नोट है:क्या mysql_real_escape_string एंटी एसक्यूएल इंजेक्शन के लिए पर्याप्त है?

नोट: इस समारोह भागने डेटा के लिए इस्तेमाल नहीं किया जाता है, क्वेरी कमजोर SQL इंजेक्शन हमलों के लिए है।

क्या यह विरोधी एसक्यूएल इंजेक्शन के लिए पर्याप्त है? यदि नहीं, तो क्या आप एक उदाहरण और एंटी एसक्यूएल इंजेक्शन के लिए एक अच्छा समाधान दे सकते हैं?

+1

देखें [क्या mysql_real_escape_string() पूरी तरह से SQL इंजेक्शन के खिलाफ सुरक्षा करता है? ] (http://stackoverflow.com/questions/1220182/does-mysql-real-escape-string-fully-protect-against-sql-injection)। –

+0

निश्चित रूप से – mikeycgto

उत्तर

6

mysql_real_escape_string आमतौर पर एसक्यूएल इंजेक्शन से बचने के लिए पर्याप्त है। यह इस पर निर्भर करता है कि यह बग मुक्त है, यानी कुछ छोटे अज्ञात मौके हैं कमजोर है (लेकिन यह वास्तविक दुनिया में अभी तक प्रकट नहीं हुआ है)। एक बेहतर विकल्प जो एक वैचारिक स्तर पर एसक्यूएल इंजेक्शन को पूरी तरह से नियम देता है prepared statements है। दोनों विधियां पूरी तरह से उन्हें लागू करने पर निर्भर करती हैं; यानी यदि आप इसे किसी भी तरह से गड़बड़ करते हैं तो न तो आपकी रक्षा करेगा।

+1

में स्पष्ट करने के लिए भी उपलब्ध हैं: पीडीओ तैयार प्रश्नों (mysql के लिए) को अनुकरण करता है और देशी mysql का उपयोग नहीं करता है। PHP दस्तावेज में ऐसी कोई घोषणा नहीं है (या मुझे कोई नहीं मिला)। – zerkms

+0

"पीडीओ उन ड्राइवरों के लिए अनुकरण करेगा जो उनका समर्थन नहीं करते हैं" --- पर्याप्त नहीं है, क्योंकि: ए) स्थापित (पुराना) libmysql तैयार समर्थन नहीं कर सकता; बी) पीडीओ अभी भी देशी तैयार बयान का उपयोग नहीं कर सकता है। – zerkms

0

जहां तक ​​मुझे पता है कि एसक्यूएल इंजेक्शन हमलों से बचने के लिए यह एक ठोस तरीका है।

+0

का डुप्लिकेट क्षमा करना भूल गया, मुझे लगता है कि आप एक यूआरएल से हमला कर सकते हैं। – mcbeav

+0

आप यह भी रोक सकते हैं कि हमेशा आपके डेटाबेस पर कौन पहुंच सकता है, और किसके पास विशेषाधिकार हैं। – mcbeav

0

सबसे अच्छा समाधान PDO है।

यदि आप पारंपरिक mysql_query का उपयोग कर रहे हैं तो mysql_real_escape_string() के माध्यम से अपना पूरा डेटा चलाएं।

+0

पैरामीट्रिज्ड प्रश्न क्या है? – Jichao

+0

पैरामीटरेटेड प्रश्न 'पीडीओ' एक्सटेंशन – stillstanding

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