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

PHP निष्पादन सीमित करें?

कई परतें हैं जिनकी आपको रक्षा करने की आवश्यकता है।

कुछ होस्टर्स गलत तरीके से PHP "सुरक्षा" पर भरोसा करें जैसे open_basedir, safe_mode (पुराने PHPs), disable_functions आदि।

यहां तक ​​कि PHP भी उन्हें सुरक्षा विशेषताएं नहीं मानता - http://php.net/security- Note.php

इन्हें PHP के लिए किसी भी कारनामे के साथ अक्षम किया जा सकता है और फिर पूरी प्रणाली बर्बाद हो जाती है, नहीं . करें ऐसा करो।

इसे कैसे किया जाना चाहिए

नीचे

  • हर होस्ट की गई साइट के लिए अलग OS-स्तर/सिस्टम उपयोगकर्ता
  • सही अनुमतियां (कोई दूसरे के पृष्ठ को देखने/संपादित करने में सक्षम नहीं हो सकता है) - यह भी सुनिश्चित करें कि उप-निर्देशिकाओं में सही अनुमति है क्योंकि वे समान होने जा रहे हैं
  • अलग सत्र फ़ाइलें (बहुत सारी वेबहोस्टिंग प्रत्येक PHP-होस्टेड साइट की सत्र फ़ाइलों को एक ही निर्देशिका में रखती हैं, यह बुरा बुरा है!

अपाचे को आखिरकार इसके लिए अपना मॉड्यूल मिल गया - Apache MPM-ITK

लंबी कहानी छोटी: इसे इस तरह से चित्रित करें जैसे आप उपयोगकर्ता को मशीन पर एक शेल देंगे (अपने स्वयं के यूआईडी के तहत) - वह अन्य होस्ट की गई साइटों के लिए कुछ भी करने में सक्षम नहीं हो सकता है।

  1. अलग यूआईडी/जीआईडी
  2. सिस्टम अनुमतियां
  3. SELinux, AppArmor और इसी तरह के ढांचे
  4. यदि आप कट्टर होना चाहते हैं तो सुरक्षा.. लेकिन सिस्टम को बनाए रखना कठिन होगा।

ऊपर जा रहे हैं?

आप अधिक हार्ड-कोर प्राप्त कर सकते हैं। मैंने जो सबसे अच्छा देखा है वह अपाचे (या जो कुछ भी आप उपयोग करते हैं) के लिए एक साझा-लाइब्रेरी है - इसका उपयोग तब किया जाता है जब अपाचे को LD_PRELOAD का उपयोग करना शुरू किया जाता है और यह सभी संभावित दुर्भावनापूर्ण सिस्टम कॉल जैसे system() . को लागू करता है , execve() और मूल रूप से कोई अन्य कॉल जो आपको खराब लगती है।

मैंने अभी तक इसका एक अच्छा कार्यान्वयन नहीं देखा है (कहीं भी कस्टम वाले के अलावा) - अगर मैं गलत हूं तो मुझे सुधारें।

उदाहरण के लिए इसके लिए एक श्वेत-सूची लागू करना सुनिश्चित करें। PHP में mail() डिफ़ॉल्ट रूप से सेंडमेल निष्पादित करता है और यह अब काम नहीं करेगा।

कंसलूशन

वैश्विक php.ini में क्लासिक disable_functions, open_basedir, आदि जोड़ें, प्रत्येक vhost में session.save_path जोड़ें - उपयोगकर्ता निर्देशिकाओं में सत्र डालें। सुनिश्चित करें कि उपयोगकर्ता कुछ भी साझा न करें ।

अंडरलेइंग ओएस-लेवल सेपरेशन को सही तरीके से लागू करें।

grsec और LD_PRELOAD lib हुकिंग सिस्टम कॉल के साथ हार्डकोर बनें।

पृथक्करण, पृथक्करण, पृथक्करण .. जल्द ही डॉकर जैसे पर्याप्त सिस्टम कर्नेल स्तर पर उपयोगकर्ताओं को अलग करने के लिए एलएक्ससी-आधारित कंटेनर प्रदान करेंगे लेकिन यह अभी तक पूरी तरह से तैयार नहीं है (imho)।




  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. SQL पिछले 2 वर्णों को बदलें यदि अंतिम 2 वर्ण मेल खाते हैं

  3. मुझे किस श्रेणीबद्ध मॉडल का उपयोग करना चाहिए? आसन्नता, नेस्टेड, या प्रगणित?

  4. क्या एक ही क्वेरी में दो कॉलम गिनना संभव है?

  5. MySQL क्वेरी - URL नामों का उपयोग करके डेटा को इंडेंटिफाई करना जहां डेटा को एक पदानुक्रम में व्यवस्थित किया जाता है