Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या ड्रॉप डाउन चुनिंदा क्षेत्र किसी भी प्रकार के इंजेक्शन की चपेट में हैं

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

उस ने कहा, यदि आप पहले से ही तैयार वक्तव्य का उपयोग कर रहे हैं, तो आपको एसक्यूएल इंजेक्शन के बारे में ज्यादा चिंता नहीं करनी चाहिए क्योंकि MySQL पहले से ही जानता है कि कौन से बयान निष्पादित होने जा रहे हैं।

इसके बजाय आपको वेबसाइट में प्रस्तुत किए जा रहे सभी आउटपुट को स्वच्छ करना चाहिए।

मान लीजिए कि आपके रूप में आप पूछ रहे हैं कि मैं किस देश में रहता हूं इस तरह:

 <select name="country">
     <option value="Mexico">Mexico</option>
     <option value="USA">USA</option>
     <option value="Canada">Canada</option>
 </select>

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

<script type="text/javascript">alert("Hello World");</script>

और यदि आप उस मान को किसी अन्य पृष्ठ में इस प्रकार आउटपुट करते हैं:

 Your country is: <?=$country?>

तब आप लिख रहे होंगे:

 Your country is:
 <script type="text/javascript">alert("Hello World")</script>

और "हैलो वर्ल्ड" टेक्स्ट के साथ एक अलर्ट बॉक्स पॉप अप होगा

इससे मुझे क्या नुकसान हो सकता है आप सोच सकते हैं...

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

अपने उपयोगकर्ताओं के आउटपुट को साफ करने के लिए आप उपयोग कर सकते हैं

htmlentities

यह परिवर्तित हो जाएगा, उदाहरण के लिए, &lt; > इसके संबंधित कोड के प्रतीक:&lt; और &gt



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पंक्तियों की संख्या 30 दिन के डिब्बे में गिनें

  2. MySQL/PHP:कॉलम और संबंधित डेटा कैसे प्राप्त करें

  3. Zend . के साथ FORCE INDEX का उपयोग करना

  4. डेटाबेस पीडीओ में प्रपत्र से डेटा दर्ज करना

  5. सर्वर पर वर्तमान लोड को प्रभावित न करने के लिए मैं एक MySQL डंप को कैसे धीमा कर सकता हूं?