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

गतिशील वेबसाइट सुरक्षा प्रश्न (PHP+MySQL)

विचार करने के लिए अन्य बिंदु:

<मजबूत>1. आप पाशविक बल के प्रति संवेदनशील हैं

एक डिक्शनरी अटैक आपके पासवर्ड को क्रैक कर देगा। चूंकि अधिकांश उपयोगकर्ताओं के पास असुरक्षित पासवर्ड है, यह केवल समय की बात है। कैप्चा का प्रयोग करें, या अमान्य प्रविष्टियों को लॉग करें। या पासवर्ड गलत होने पर कुछ देरी जोड़ें।

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

<मजबूत>2. आप पासवर्ड स्पष्ट टेक्स्ट में भेज रहे हैं

यदि कोई आपका लॉगिन सूँघता है (उदाहरण के लिए वाईफाई), तो आप बर्बाद हैं। कुछ जावास्क्रिप्ट libs हैं जो सार्वजनिक कुंजी का उपयोग करके कुछ भी एन्क्रिप्ट कर सकते हैं। यदि आप एसएसएल का उपयोग नहीं करना चाहते हैं, तो लॉगिन/पासवर्ड एन्क्रिप्ट करें, सर्वर को भेजें, निजी कुंजी का उपयोग करके डिक्रिप्ट करें, और आप सुरक्षित हैं।

<मजबूत>3. MySQL पर तैयार कथनों का उपयोग करने पर विचार करें

तैयार किए गए कथनों का उपयोग SQL इंजेक्शन के विरुद्ध मदद करता है, क्योंकि यह दुर्भावनापूर्ण इनपुट के साथ भी सुरक्षित रूप से चल सकता है:

$dbc = new mysqli("mysql_server_ip", "mysqluser", "mysqlpass", "dbname");
$statement = $db_connection->prepare("SELECT * FROM table WHERE thing='?'");
$statement->bind_param("i", $thing);
$statement->execute();

<मजबूत>4. क्लाइंट-साइड सत्यापन पर रिले न करें

अपने लॉगिन फॉर्म पर, आप एंटर-कुंजी को कार्य करने से रोकते हुए जावास्क्रिप्ट फ़ंक्शन पर रिले करते हैं। अगर मैं जावास्क्रिप्ट को अक्षम कर दूं तो क्या होगा? आप एक छिपे हुए क्षेत्र का उपयोग कर सकते हैं (उदाहरण के लिए <इनपुट प्रकार ='हिडन' नाम ='फॉर्मआईसवैलिड' मान ='0'>), एंटर-की को रोकने के लिए अपने फ़ंक्शन का उपयोग करें, और फॉर्मआईसवैलिड को 1 से पहले बदलने के लिए ऑनसबमिट () फ़ंक्शन का उपयोग करें। फॉर्म भेज रहा है। अपने सर्वर में, FormIsValid सत्यापित करें।

<मजबूत>5. आप सत्र अपहरण के प्रति संवेदनशील हैं

आपका सत्र डिफ़ॉल्ट रूप से PHPSESSID नामक कुकी पर सहेजा जाता है। यदि कोई हमलावर उस कुकी को प्राप्त कर सकता है, तो वह इसे आपके सर्वर पर भेज सकता है और आपका सत्र चुरा सकता है। इसे रोकने के लिए, आप सत्र में उपयोगकर्ता आईपी पते और उपयोगकर्ता एजेंट को सहेज सकते हैं, और प्रत्येक अनुरोध पर सत्र से प्राप्त मूल्य की तुलना कर सकते हैं। यदि मान मेल नहीं खाते हैं, तो हो सकता है कि उपयोगकर्ता का आईपी बदल गया हो या सत्र को हाईजैक कर लिया गया हो।

<मजबूत>6. आप सत्र निर्धारण के प्रति संवेदनशील हो सकते हैं

जैसा कि ऊपर बताया गया है, अगर कोई आपके व्यवस्थापक को किसी साइट तक पहुंचने के लिए मनाता है, और यह साइट अनुरोध पर PHPSESSID के साथ आपकी साइट पर एक अनुरोध भेजती है, तो आपकी साइट सत्र बनाएगी, लॉगिन/पासवर्ड संसाधित करेगी, और बताएगी कि क्रेडेंशियल गलत हैं . अब तक बुरा नहीं है।

बाद में, आपका व्यवस्थापक आपके पोर्टल में लॉग इन करता है, सत्र पहले से मौजूद है, लॉगिन और पासवर्ड मेल खाता है, और सत्र अपडेट किया गया है। चर मान्य अब 1 है।

जैसे ही वेरिएबल अपडेट किया जाता है, हमलावर के पास आपके पोर्टल तक पूर्ण पहुंच होती है, क्योंकि वह PHPSESSID को जानता है, आपकी साइट सत्र अपहरण, या सत्र निर्धारण को नहीं रोकती है।

सत्र निर्धारण और अपहरण से बचने के लिए, #5 देखें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक तारीख संग्रहित करना जहां केवल वर्ष ज्ञात हो सकता है

  2. ActiveRecord3 गतिरोध पुनः प्रयास करें

  3. मैसकल स्लो इंसर्ट

  4. फुलटेक्स्ट इंडेक्स क्या है और मुझे इसका इस्तेमाल कब करना चाहिए?

  5. MySQL में आवृत्ति से पर्सेंटाइल की गणना करें