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

PHP सुरक्षित उपयोगकर्ता चर

गंभीर सुरक्षा समस्याओं से बचने के लिए आपको दो बहुत महत्वपूर्ण चीजें करनी चाहिए।

  1. अपनी SQL क्वेरी में डालने से पहले आपको उपयोगकर्ता इनपुट से बचना होगा। एस्केपिंग का अर्थ है सभी विशेष वर्णों से बचना, जैसे '; सौभाग्य से, एक फ़ंक्शन है जो इसे पहले से ही स्वचालित रूप से करता है:mysql_real_escape_string

    यदि आप उपयोगकर्ता इनपुट से नहीं बचते हैं तो खराब चीजें हो सकती हैं। कल्पना करें कि आपकी क्वेरी INSERT INTO userdata VALUES ('$user_data') है . अब कल्पना कीजिए कि उपयोगकर्ता ने '; DROP DATABASE userdata;

    यदि आप इससे नहीं बचते हैं, तो आपकी क्वेरी बन जाएगी:INSERT INTO userdata VALUES (''; DROP DATABASE userdata;') . जैसा कि आप कल्पना कर सकते हैं कि यह अच्छा नहीं है:यदि आपके पास मल्टी स्टेटमेंट सक्षम हैं तो आप अपने डेटाबेस को अलविदा कह सकते हैं। इसे SQL इंजेक्शन . कहा जाता है हमला।

  2. जब आप अपने वेरिएबल को उपयोगकर्ता को आउटपुट कर रहे हैं तो आपको HTML विशेष वर्णों को HTML निकायों के साथ ठीक से बदलने की भी आवश्यकता है। सौभाग्य से, ऐसा करने के लिए एक फ़ंक्शन भी है:htmlspecialchars() . यह विशेष HTML वर्णों को बदल देगा जैसे < करने के लिए <

    ऐसा लगता है कि यह एक ऐसी समस्या है जिसे अक्सर कम करके आंका जाता है, लेकिन वास्तव में यह बहुत गंभीर है। सोचिए अगर $user_data इसमें <script>SomeNastyScript()</script> . शामिल है . यह आपके उपयोगकर्ताओं के ब्राउज़र में मौजूदा कमजोरियों का फायदा उठा सकता है, या यह हमलावर को एक गैर-HTTPOnly कुकी (जिसमें सहेजे गए पासवर्ड हो सकते हैं) भेज सकता है, या यह उपयोगकर्ता को अपने पासवर्ड को एक फॉर्म पर लिखने के लिए छल कर सकता है जो कि हेरफेर के माध्यम से उत्पन्न होता है। डोम (जावास्क्रिप्ट में संभव), या बहुत सी अन्य बुरी चीजें।

    इसे XSS . कहा जाता है (क्रॉस-साइट स्क्रिप्टिंग)।

लघु संस्करण

  1. mysql_real_escape_string पर कॉल करें अपनी SQL क्वेरी में डालने से पहले स्ट्रिंग पर (लेकिन तब नहीं जब आप echo यह)।

  2. कॉल करें htmlspecialchars उपयोगकर्ता को इसे प्रदर्शित करने से पहले स्ट्रिंग पर (लेकिन जब आप इसे डेटाबेस में डालते हैं तो नहीं)।



  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 में InnoDB और MyISAM क्या है?

  2. MySQL में प्रति माह कुल बिक्री की गणना कैसे करें?

  3. MySQL में रूट उपयोगकर्ता को सभी विशेषाधिकार वापस कैसे प्राप्त करें?

  4. SQL क्वेरी में ऐरे?

  5. mysqldump अज्ञात विकल्प कोई बीप नहीं