मैं किसी उपयोगकर्ता को अपने ब्राउज़र में अपना कोड संपादित करने से कैसे रोक सकता हूं?


11

विवरण

मैं Node.JS एप्लिकेशन (पूर्ण वेबसाइट की तरह) डिज़ाइन कर रहा हूं। ऐप पांच जावास्क्रिप्ट फाइलें भेजेगा और <script>उनमें टैग एक साथ जुड़ेंगे।

सवाल

मैं अपने कोड को सहकर्मी और संपादन करने वाले उपयोगकर्ताओं और हमलावरों को कैसे रोक सकता हूं ?

  • एक उदाहरण होगा:

    • Ctrl+ Shift+I

    • में DevTools , गोटो सूत्रों का कहना है , संपादित करें (यानी करने के लिए एक फ़ाइल का चयन index.html) और संपादन लिखने

    • Ctrl+ दबाने से लाइव संपादन होने Sलगेगा

मैं उपरोक्त उदाहरण को होने से रोकना चाहूंगा ... क्या यह संभव है?


यहाँ मैं क्या सोचा है:

मैं एक और क्लाइंट साइड जावास्क्रिप्ट फ़ाइल बनाऊँगा, जिसे रोकने के लिए

यह ध्यान देगा Ctrl+ Shift+ I

अगर यह लौटाता है true(यानी कुंजी दबाया गया था), तो यह logकुंजी होगी ।

हालाँकि यह उपयोगकर्ता को सीधे Devtools का उपयोग करने से नहीं रोकेगा।


16
आप ब्राउज़र में चलने वाली अपनी जावास्क्रिप्ट को देखने या संशोधित करने से किसी को नहीं रोक सकते। नहीं कर सकते।
जुलाई को

7
सिर्फ इसलिए कि एक प्रश्न का उत्तर "आप नहीं कर सकते हैं", इसका मतलब यह नहीं है कि इसे अस्वीकृत किया जाना चाहिए।
रबरडक

1
बहुत बारीकी से संबंधित सवाल: जावास्क्रिप्ट केवल AJAX फॉर्म सबमिट पर मान्य है । विशेष रूप से अपने तुच्छ उदाहरण के साथ स्वीकार किए गए उत्तर की जांच करें कि कैसे एक पोस्ट कॉल भेजा जाए, जो आपके सर्वर पर, आपके क्लाइंट से आया एक समान दिखाई देता है, जबकि वेब ब्राउज़र से नहीं आने के बावजूद।
8 बिट्ट्री

जवाबों:


35

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

यदि आपके पास ऐसा कोड है जिसे आप उजागर नहीं करना चाहते हैं, तो उसे ब्राउज़र पर न भेजें। इसके बजाय, ब्राउज़र को एक सर्वर को एक अनुरोध भेजने दें जहां आप गुप्त कोड निष्पादित करते हैं।

एक ठोस उदाहरण के रूप में, क्लाइंट पर पासवर्ड की जांच न करें। क्लाइंट को हमेशा सर्वर "पासवर्ड सही था" बताने के लिए संशोधित किया जा सकता है। इसके बजाय, प्रमाणीकरण आपके विश्वसनीय सर्वर पर होना चाहिए।


4
"क्लाइंट को हमेशा सर्वर" पासवर्ड सही था "बताने के लिए संशोधित किया जा सकता है। खांसी लिबास खांसी
फिलिप केंडल

आपका बहुत बहुत धन्यवाद! मैं लॉगिन, लॉगआउट और साइन अप के लिए हैंडलर भेज रहा था। मैंने इसे सर्वर में मार्गों में बदल दिया है।
एडविन प्रैट

23

आप नहीं कर सकते। कंप्यूटिंग के मूलभूत नियमों में से एक: आप ग्राहक पर भरोसा नहीं कर सकते । आप जिस भी चतुर योजना के बारे में सोचते हैं, मैं उसे प्राप्त कर सकता हूं यदि मैं ग्राहक के नियंत्रण में हूं।


2
मैंने सर्वर के शामिल करने के लिए सभी सत्यापन, अपलोडिंग, डाउनलोडिंग, userAccouts () हैंडलर स्थानांतरित कर दिए हैं।
एडविन प्रैट

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

2

आप कोड को संशोधित क्यों नहीं करना चाहते हैं?

सुरक्षा? विश्वास? व्यापार रहस्य?

फिर कोड न भेजें, क्लाइंट को रिक्वेस्ट भेजें, और परिणाम लौटाएं। शायद एक निजी या विशेषाधिकार प्राप्त परिणाम नहीं है, बस कई यूआई के लिए पर्याप्त है।

क्योंकि आपके स्वयं के कोड के थोड़े संशोधित संस्करण आपकी निचली रेखा को नुकसान पहुंचा रहे हैं?

एक कोड अश्‍लीलर, नाम मैनगलर और ट्रिवियल कोड सेगमेंट का उपयोग करें।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.