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

सर्वर-साइड स्क्रिप्टिंग को रोकना, XSS

HTML स्ट्रीम में कभी भी किसी भी प्रकार का डेटा आउटपुट न करें जो htmlspecialchars() के माध्यम से पारित नहीं किया गया है और आपने कल लिया। सरल नियम, पालन करने में आसान, किसी भी XSS जोखिम को पूरी तरह से समाप्त कर देता है।

एक प्रोग्रामर के रूप में यह आपका है हालांकि इसे करने के लिए काम।

आप परिभाषित कर सकते हैं

function h(s) { return htmlspecialchars(s); }

अगर htmlspecialchars() प्रति PHP फ़ाइल में 100 बार लिखने के लिए बहुत लंबा है। दूसरी ओर, htmlentities() . का उपयोग करके बिल्कुल जरूरी नहीं है।

मुख्य बिंदु यह है:कोड है, और डेटा है। यदि आप दोनों को आपस में मिलाते हैं, तो बुरी चीजें होती हैं।

एचटीएमएल के मामले में, कोड तत्व, विशेषता नाम, संस्थाएं, टिप्पणियां हैं। डेटा बाकी सब कुछ है। डेटा होना चाहिए कोड के लिए गलत होने से बचने के लिए बच निकले।

URL के मामले में, कोड स्कीम, होस्ट नाम, पथ, क्वेरी स्ट्रिंग का तंत्र है (? , & , = , # ) क्वेरी स्ट्रिंग में डेटा सब कुछ है:पैरामीटर नाम और मान। उन्हें जरूरी कोड के लिए गलत होने से बचने के लिए बच निकले।

HTML में एम्बेड किए गए URL होना चाहिए दोगुने बच निकले (यूआरएल से बचकर और एचटीएमएल-एस्केपिंग) कोड और डेटा के उचित पृथक्करण को सुनिश्चित करने के लिए।

आधुनिक ब्राउज़र आश्चर्यजनक रूप से टूटे और गलत मार्कअप को किसी उपयोगी चीज़ में पार्स करने में सक्षम हैं। हालांकि, इस क्षमता पर जोर नहीं दिया जाना चाहिए। तथ्य यह है कि कुछ काम करने के लिए होता है (जैसे <a href> . में URLs उचित HTML-एस्केपिंग लागू किए बिना) का अर्थ यह नहीं है कि ऐसा करना अच्छा या सही है। XSS एक ऐसी समस्या है जिसकी जड़ें a) डेटा/कोड पृथक्करण से अनजान लोग (यानी "भागना") या जो मैला हैं और b) वे लोग जो डेटा के किस हिस्से से बचने की आवश्यकता नहीं है, इस बारे में चतुर होने की कोशिश करते हैं।

XSS से बचना काफी आसान है यदि आप सुनिश्चित करते हैं कि आप श्रेणियों a) और b) में नहीं आते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डिप्लिकेट कुंजी अद्यतन के साथ MySQL डिफ़ॉल्ट मान त्रुटि

  2. mysql प्रश्नों में पिवट करें

  3. Mysqldump:बैक अप लेने पर इन्सर्ट के लिए कॉलम नाम बनाएं

  4. परिणामी कॉलम को कई कॉलम में कैसे विभाजित करें

  5. क्या मुझे MySQL TEXT प्रकार के लिए PDO PARAM_LOB या PARAM_STR का उपयोग करना चाहिए?