2010-09-22 27 views
7

किसी क्लाइंट के सर्वर पर एप्लिकेशन इंस्टॉल करते समय, मैं यह सुनिश्चित करना चाहता हूं कि क्लाइंट (या उनके लिए भविष्य डेवलपर, आदि) मेरे एप्लिकेशन की प्रतिलिपि नहीं बनाये और इसे अन्य डोमेन/सर्वर/स्थानीय सर्वर पर रखे।मैं अपने PHP एप्लिकेशन के उपयोगकर्ताओं को कैसे सत्यापित करूं?

मुझे लगता है कि मेरे आवेदन सर्वर मैं इस पर स्थापित पर चल रहा है यह पुष्टि कैसे करूं? मैं हर बार स्क्रिप्ट में किसी भी महत्वपूर्ण अंतराल को नहीं चाहता हूं, इसलिए मुझे लगता है कि 'हैंडशेक' विधि उचित नहीं है।

मैं स्क्रिप्ट मेरे अपने सर्वर पर हर बार इसे चलाता एक PHP पृष्ठ का अनुरोध कर सकता है सोच रहा था। यह मेरे सर्वर को उनकी सर्वर जानकारी और डोमेन नाम भेज सकता है, जो मेरी स्क्रिप्ट स्वीकृत ग्राहकों के डेटाबेस के खिलाफ जांच सकती है। अगर अनुरोध अमान्य है, तो मेरा सर्वर मुझे विवरण ईमेल करने का काम संभालता है ताकि मैं इसका अनुसरण कर सकूं। इससे क्लाइंट की स्क्रिप्ट को धीमा नहीं करना चाहिए क्योंकि यह प्रतिक्रिया की अपेक्षा नहीं कर रहा है, और तब भी जब तक मैं इसकी जांच कर सकता हूं और व्यक्तिगत रूप से इसका पालन नहीं कर लेता तब तक उनके 'अमान्य' सर्वर पर काम करेगा।

यदि यह सबसे अच्छा तरीका (या अगर कोई बेहतर है), क्या पीएचपी कॉल मैं अपने सर्वर की स्क्रिप्ट अनुरोध करने के लिए कर रही किया जाना चाहिए? file_get_contents, curl और इसी तरह की प्रतिक्रिया हमेशा प्रतिक्रिया प्राप्त करने लगती है, जिसकी मुझे आवश्यकता नहीं है।

अद्यतन

आप अपने सभी प्रतिक्रिया के लिए धन्यवाद। मैं पूरी तरह से समझता हूं कि PHP ओपन सोर्स है और इसे संपादित करने के लिए स्वतंत्र रूप से उपलब्ध होना चाहिए। मुझे शुरुआत में और अधिक स्पष्ट रूप से कहा जाना चाहिए था, लेकिन मेरे इरादे इस सत्यापन विधि के लिए मेरे लाइसेंस समझौते का उल्लंघन करने में मेरी सहायता करने के लिए थे। आवेदन लाइसेंस के तहत कवर किया गया है, लेकिन मैं इस चेक को भी शामिल करना चाहूंगा ताकि मैं अपने आवेदन के प्रारंभिक दुरुपयोग की निगरानी कर सकूं।

इसलिए, कोई भी अभी भी मेरा लाइसेंस उल्लंघन कर सकता है और शायद यह अनजान हो जाएगा, लेकिन अगर मैं इस स्क्रिप्ट को लागू करता हूं तो मुझे किसी भी 'आलसी लुटेरों' का लाभ होता है जो मेरे आवेदन को अलग नहीं करते हैं और फिसलने से पहले सत्यापनकर्ता को हटाते हैं यह।

क्या यह ऐसी स्क्रिप्ट के उपयोग को औचित्य देता है? यदि हां, तो curl मेरा सबसे अच्छा विकल्प है?

+3

चूंकि PHP खुला स्रोत है, इसलिए किसी भी चेक को आसानी से हटाया जा सकता है। हालांकि सॉफ़्टवेयर के महत्वपूर्ण हिस्सों को मूल php मॉड्यूल (या समान) में स्थानांतरित करना संभव हो सकता है, जो कोड तब खुला नहीं है। इस तरह (खुली) स्क्रिप्ट को हमेशा मॉड्यूल का उपयोग करने की आवश्यकता होगी जो चेक भी करता है। वैसे भी, यह वही है जो मुझे लगता है कि संभव हो सकता है, हालांकि मुझे यकीन नहीं है कि यह वास्तव में काम करेगा (या प्रयास के लायक भी हो)। – poke

+0

@ पोक: हमारे शब्दकोष में 'ओपन सोर्स' का अर्थ आमतौर पर 'स्वतंत्र रूप से उपलब्ध स्रोत' है, जिसके लिए पहुंच (और संभवतः परिवर्तन) को बढ़ावा दिया जाता है, जो वास्तव में यहां बिंदु नहीं है। यह निश्चित रूप से आपके ग्राहकों (जो इस मामले में इसके लिए भुगतान करते हैं) के लिए स्रोत का खुलासा किया गया है, और PHP भाषा का सी स्रोत स्वयं खुला स्रोत है। यहां अधिकांश लोग और मैं जो कहने की कोशिश कर रहा हूं उसे प्राप्त करता हूं, लेकिन आईएमएचओ यह शब्दों की कुछ खराब पसंद है। – Wrikken

+0

@Wrikken: ठीक है, ओपन सोर्स का मतलब है कि स्रोत खुला और पूरी तरह से दिखाई देता है, जो स्पष्ट रूप से php के साथ मामला है (कम से कम उन लोगों के लिए जिनके पास सर्वर पहुंच है)। मुफ्त सॉफ्टवेयर हमेशा खुला स्रोत नहीं होता है और मुक्त स्रोत हमेशा मुक्त नहीं होता है। यह एक लाइसेंसिंग विवरण है जो अक्सर भ्रमित हो जाता है। – poke

उत्तर

2

सत्यापन के लिए कोई भी जांच कोड आसानी से return true; के साथ बदल दिया गया है। https://stackoverflow.com/tags/php/info पर 0x:

प्रश्न। क्या मैं अपने PHP कोड को चोरी से बचा सकता हूं? यदि हां, तो कैसे?
ए। PHP स्रोत कोड को सुरक्षित, एन्कोड या एन्क्रिप्ट करने के लिए कोई प्रभावी तकनीकी समाधान नहीं है। ऐसे कई उत्पाद हैं जो सुरक्षा के कुछ स्तर प्रदान करते हैं, लेकिन सभी समय और प्रयास के साथ टूटा जा सकता है। आपका सबसे अच्छा विकल्प तकनीकी समाधान नहीं है, बल्कि लाइसेंस समझौते के रूप में एक कानूनी समाधान है।

-2

आप इसे एन्कोड कर सकते हैं और हार्ड कोड को एक लाइसेंस फ़ाइल फ़ाइल कर सकते हैं जो इसे केवल उस डोमेन पर काम करने की अनुमति देगी जिसका उद्देश्य यह था (उदाहरण के लिए ioncube या ज़ेन को फ़ाइल को एन्कोड करने के लिए उपयोग करें जो जांचता है कि क्या HTTP HOST बिना इरादे के लक्षित डोमेन है हाथ मिलाना)। फिर आप उस फ़ाइल को अन्य सभी फ़ाइलों में आवश्यक बना सकते हैं (यदि सब कुछ एन्कोड किया गया था)।

+1

इसे आसानी से घुमाया जा सकता है। -1 – NullUserException

0

imo इसके कुछ जूमला एक्सटेंशन है कि ऐसा करने के बाहर की जाँच के लायक। कुछ अलग कार्यान्वयन, कुछ डोमेन की जांच करते हैं और इसे निष्पादित करने से पहले इसे सत्यापित करते हैं, अधिकांश डोमेन सत्यापन के साथ एन्क्रिप्टेड होते हैं। मुझे लगता है कि साइकिक के यूआरएल सीएफ एक्सटेंशन को ऐसा करने के लिए इस्तेमाल किया जाता है। कुछ और वाणिज्यिक एक्सटेंशन हैं जो एक ही चीज़ का उपयोग करते हैं। इसके अलावा मैं किसी अन्य तरीके से सोच नहीं सकता। संभवतः एक और अच्छा विचार है कि एक अच्छा लाइसेंस और एक अच्छा वकील हो ....

0

संक्षिप्त उत्तर: यह नहीं किया जा सकता है।

लंबे उत्तर: जो भी सुरक्षा आप अपने कोड में डालते हैं, उसे PHP में कुछ अनुभव वाले किसी भी व्यक्ति द्वारा कम कठिनाई के साथ हटाया जा सकता है। भले ही कोड आयनक्यूब या ज़ेंड गार्ड जैसे कुछ के साथ एन्कोड किया गया हो, फिर भी इसे सापेक्ष आसानी से डीकोड किया जा सकता है।

आपका एकमात्र विकल्प कॉपीराइट उल्लंघनकर्ताओं को सक्रिय रूप से अपने बौद्धिक संपदा की रक्षा करना है। यहां तक ​​कि यह मूर्खतापूर्ण नहीं है, क्योंकि आरआईएए और एमपीएए के हमारे लोग बहुत अच्छी तरह से जानते हैं। इस दिन और उम्र में, मैं कहूंगा कि यह एक हल करने योग्य समस्या नहीं है।

1

आपको कानूनी अनुबंध मिलता है और हर किसी पर मुकदमा चलाता है।

0

आप अपने सॉफ़्टवेयर में फोन-होम व्यवहार को एकीकृत कर सकते हैं लेकिन आपको इसके बारे में गोपनीयता मुद्दों पर चर्चा करने और गोपनीयता दिशानिर्देशों और आपके ग्राहकों के उपयोग लाइसेंस के लिए उपयोग की शर्तों को पूरा करने के लिए वकील से परामर्श लेना चाहिए।

आपके द्वारा भेजे जाने वाले डेटा (और जिस तरीके से आप इसे भेजते हैं, यानी सुरक्षित रूप से एन्क्रिप्टेड या नहीं) के बारे में सावधान रहना, जो आपके उत्पाद का अवैध रूप से उपयोग करने वाले क्लाइंट की पहचान करने के लिए है क्योंकि इसका संभावित रूप से आपके ग्राहक के आधारभूत संरचना से समझौता करने के लिए उपयोग किया जा सकता है या अपने ग्राहक पर जासूसी के लिए।

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

संपादित करें:
poke प्रश्न टिप्पणी में लिखा है के रूप में, आप सॉफ्टवेयर आपके सर्वर के लिए अपने ग्राहक की साइट पर स्थापित बाहर अपने कोड के कुछ हिस्सों को स्थानांतरित कर सकता है, लेकिन यह उल्टी हो सकती है जब आपके सर्वर किसी कारण से पहुंचा नहीं जा सकता (उदाहरण के लिए रखरखाव के लिये)।

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

1

सास आपका मित्र है। अपने स्वयं के सुरक्षित सर्वर पर एप्लिकेशन होस्ट करें, और अपने ग्राहकों के लिए इसे एक्सेस करने के लिए लाइसेंस शुल्क चार्ज करें।

+0

+1 यदि आप एक सेवा की पेशकश कर रहे हैं तो यह तरीका है, अपना आवेदन एक सशुल्क एपीआई में बदलना आपके सॉफ़्टवेयर को क्रैक और/या पुनर्वितरित करने की गारंटी देने का एकमात्र तरीका होगा। –

+0

यह _a_ समाधान है, लेकिन नेटवर्क ओवरहेड/विलंबता अधिकांश PHP परियोजनाओं के लिए यह काफी अनावश्यक बनाती है। – Wrikken

+0

@Wrikken मुझे लगता है कि आप गलत समझते हैं। मैं सुझाव दे रहा हूं कि वह अपने निजी सर्वर पर अपना पूरा आवेदन प्रदान करता है और फिर इसका उपयोग करने के लिए सदस्यता के लिए मासिक शुल्क लेता है। उदा। Salesforce.com, mint.com, flickr.com, इत्यादि। इसके अलावा कोई ओवरहेड या विलंबता नहीं है जो आप आमतौर पर किसी भी वेब पेज के लिए प्राप्त करते हैं। –