मुझे यकीन नहीं है कि डेटा सुरक्षित करने के बारे में बात करते समय मैन्युअल का क्या अपवाद है। आप कह सकते हैं कि अपवाद तब होता है जब डेटा पहले से ही सुरक्षित होने के लिए जाना जाता है। उदाहरण के लिए, यहाँ कुछ मामलों जो मन में आ रहे हैं:
- डेटा एक संख्या के रूप लिखा गया
- आप पहले से ही पता है कि यह किसी भी वर्ण नहीं (यह वास्तव में अगले आइटम का एक विशेषज्ञता है) कि भाग निकले जाने की जरूरत है
उदाहरण के लिए यदि आप $id = intval($_GET['id'])
है तो आप इसके इंजेक्शन लगाने से पहले $id
से बचने के लिए की जरूरत नहीं है, (उदाहरण के लिए यह एक "श्वेत सूची" सरणी कि कुछ ही विकल्प आप हार्डकोडेड शामिल में कुछ को देख से आता है) एक प्रश्न में
हालांकि!सभी इनपुट से बचने के लिए यह आपको कभी भी चोट नहीं पहुंचा सकता है, और ऐसा करने से आप अपने कोड में कमजोरियों को पेश करने का अवसर समाप्त कर सकते हैं (उदाहरण के लिए यदि आप बचाना भूल जाते हैं, यदि आवश्यकताएं बदलती हैं, या वास्तव में कुछ भी)। तो मैं सबकुछ से बचने और "अपवाद" के बारे में भूलने की आदत में आने की सलाह देता हूं।
इनपुट के हिस्से के रूप %
और _
पात्रों के लिए के रूप में, इन भाग निकले जा करने के लिए जब तक आप एक आदेश है कि उन्हें पहचानता को यह इनपुट को खिलाने के लिए जा रहे हैं की जरूरत नहीं है। उदाहरण के लिए, अगर आप इस तरह एक प्रश्न पूछना चाहते हैं तो:
$term = $_GET['term'];
$sql = sprintf("SELECT FROM table WHERE column LIKE '%%s%'",
mysql_real_escape_string($term));
इस मामले में, यदि उपयोगकर्ता के एक %
$term
के हिस्से के रूप में यह मान लेना कि वे वास्तव में एक शाब्दिक %
लिए खोज करना चाहते उचित है। इसलिए ऐसे मामलों में आपको %
से \%
(\
डिफ़ॉल्ट भागने वाला चरित्र) से बदलकर भागना चाहिए। str_replace
या strtr
इसके लिए दो अच्छे विकल्प हैं।
आपको [पीडीओ] (http://php.net/manual/en/book.pdo.php) का उपयोग करना चाहिए। अपनी व्यक्तिगत वेबसाइट करना इसे सीखने का एक शानदार अवसर है। – kapa
प्वाइंट 2 'LIKE' खंडों को संदर्भित करता है, और अन्य संदर्भों में स्ट्रिंग डेटा का उपयोग करने के लिए प्रासंगिक नहीं है। – mario
अपवाद में से एक एक पहले से बच निकला स्ट्रिंग हो सकता है। – hjpotter92