2012-11-05 27 views
5

मुझे node.js में लिखा गया वेबसर्वर मिला है, यह बहुत ही स्थिर फ़ाइलों के साथ उपयोगकर्ता को सेवा प्रदान करता है। इसमें PHP समर्थन जोड़ने के लिए मैंने सोचा कि मैं सिर्फ PHP डाउनलोड कर सकता हूं और फ़ाइल को PHP.exe दे सकता हूं। यह काम करता है और पर्याप्त होगा यदि इसे एक उपयोगकर्ता द्वारा उपयोग किया जाए। ऐसे माहौल के लिए जहां कई उपयोगकर्ता सर्वर पर अपनी वेबसाइट होस्ट करेंगे, फिर भी यह एक बड़ी सुरक्षा समस्या के साथ लाएगा। कोई भी PHP स्क्रिप्ट का उपयोग किसी भी अन्य वेबसाइट या यहां तक ​​कि पूरे सर्वर के साथ करना चाहेगा।apache/nginx को प्रतिस्थापित करने और php सुरक्षा को निष्पादित करने के लिए node.js का उपयोग करना

क्या मैंने इसका उल्लेख किया कि यह एक विंडोज सर्वर है?

वैसे भी, इसलिए मैं चाहता हूं कि PHP निर्देशिका को एक विशिष्ट निर्देशिका में रखने के लिए कुछ अनुमतियां प्राप्त करें। मैं प्रत्येक वेबसाइट के लिए उपयोगकर्ता बनाने की दिशा में सोच रहा हूं जिस पर मैं उपयुक्त अनुमतियां लागू करूंगा और php.exe को 'रन के रूप में' जैसे कुछ का उपयोग कर निष्पादित करने से (यह मानना ​​संभव है)। क्या मेरे लक्ष्य को प्राप्त करने के लिए मेरे कोई अन्य तरीके हैं? और यदि ऐसा होगा तो वे बेहतर होंगे? ऐसा क्यों?

इसके अलावा, अगर आप रुचि रखते हैं, मेरे कोड लगता है: http://pastebin.com/gZjN1mnj

इसके अलावा मुझे पता है जब मेरे सर्वर का उपयोग कर कि $ _POST, $ _SERVER, $ _COOKIE, $ _SESSION आदि सब याद कर रहे हैं, लेकिन मैं पहले से ही सोचा है कि यह कैसे तय किया जाए और इसके साथ एक सफल परीक्षण किया गया।

अब मैं पहले ही प्रतिक्रिया महसूस कर रहा हूं: आप ऐसा क्यों करेंगे? या नहीं, apache/nginx बेहतर हैं, इत्यादि। इसे एक सीखने की प्रक्रिया पर विचार करें, मुझे बस दिलचस्पी थी कि मैं वास्तव में काम करने के लिए इसे प्राप्त कर सकता हूं ^^

धन्यवाद। मिश्रित बैग Franken मंच पर

+0

आप [php-fpm] (http://php.net/manual/en/install.fpm.php) के साथ एक php-fcgid सर्वर सेट अप करने का प्रयास कर सकते हैं। –

+1

तो ऐसा लगता है कि आप खिड़कियों के लिए chroot चाहते हैं, तो http://serverfault.com/questions/161507/is-there-a-windows-equivalent-to-chroot – Nelson

+0

पर एक नज़र डालें, कृपया अपना पेस्टबिन लिंक अपडेट करें, यह काम नहीं कर रहा है ! :) –

उत्तर

4

बधाई अपने लिनक्स उपयोग करने के लिए विकासशील :)

स्विच process.setuid

Node.js एक महान वेब सर्वर है, इसलिए मैं अपील देख सकते हैं। आप विंडोज़ पर नोड और PHP दोनों चलाकर अपस्ट्रीम तैर रहे हैं। यदि आपके पास नियंत्रण है तो मैं लिनक्स पर स्विच करूंगा।

यदि आप लिनक्स में चल रहे थे, तो नोड में फ़ंक्शन प्रक्रिया में एक अंतर्निहित है .setguid और process.setuid आपको इन्हें चलाने के लिए रूट होना होगा, लेकिन एक node.js प्रोग्राम प्रत्येक उपयोगकर्ता के लिए रूट नॉन प्रक्रिया के रूप में चल सकता है, फिर जेल खुद और सभी ट्रैफिक को बच्चे नोड प्रक्रियाओं को रूट करें जो विशिष्ट उपयोगकर्ताओं को जेल में लाए जाते हैं।

आप एक विशिष्ट निर्देशिका वृक्ष को php सुरक्षित मोड, base_dir और अन्य आरं आदेशों की कोशिश करने और जेल php का उपयोग कर सकते प्रत्येक उपयोगकर्ता के लिए एक विशिष्ट php.ini है। यह flaky और अधूरा है और इन सुविधाओं में से कई सुविधाओं को नवीनतम रिलीज में हटा दिया गया है या इनके आसपास के तरीकों के कारण हटा दिया गया है। लेकिन आपके php कमांड लाइन कॉल के साथ एक आईएनआई फ़ाइल में गुजरने के लिए यह छोटा है।

उपयोग तृतीय-pary RunAs उपयोगिता

वास्तव में खिड़कियों में उपयोगकर्ता सुरक्षा करने के लिए आप http://www.autoitscript.com/autoit3/docs/functions/RunAs.htm

AutoIt RunAs की तरह कुछ चलाने के लिए के रूप में सामान्य runas करने का विरोध किया होगा कमान इस एक आप की सुविधा देता है एक पासवर्ड निर्दिष्ट करें ताकि इसे आपके नोड प्रक्रिया से चलाया जा सके।