मैं एक वेबपेज में जावास्क्रिप्ट कोड कैसे छिपाऊं?


94

क्या वेब पेज के HTML से जावास्क्रिप्ट कोड को छिपाना संभव है, जब स्रोत कोड को ब्राउज़र व्यू सोर्स फीचर के माध्यम से देखा जाता है?

मुझे पता है कि कोड को बाधित करना संभव है, लेकिन मैं इसे स्रोत स्रोत से छिपाया जाना पसंद करूंगा ।


1
यह क्लाइंट करता है और इसलिए यह हर क्लाइंट (ब्राउजर) पर रहेगा
नवीन

8
आप जावास्क्रिप्ट को क्यों छिपाना चाहेंगे? ऐसा नहीं है कि आपने कभी कोई संवेदनशील डेटा डाला है जिसे आप उपयोगकर्ता को इसमें नहीं ढूंढना चाहते ... ठीक है ?!
पॉल

1
एक ब्राउज़र को कैसे पता चलेगा कि जावास्क्रिप्ट को कैसे चलाना है?
विली

1
@PaulPRO का एक अच्छा बिंदु है - आप जावास्क्रिप्ट क्यों छिपाना चाहेंगे? जो कोई भी जानना चाहता है कि आप क्या कर रहे हैं, हमेशा कुछ कीस्ट्रोक्स के साथ आपकी स्क्रिप्ट प्राप्त करने में सक्षम होने जा रहा है। वे सिर्फ व्यू-सोर्स पर निर्भर नहीं रहेंगे। जो किसी को नहीं पता है कि स्क्रिप्ट कैसे प्राप्त की जा सकती है, वैसे भी इसमें कोई दिलचस्पी नहीं है।
स्टीफन चुंग

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

जवाबों:


132

मुझे यकीन नहीं है कि किसी और ने वास्तव में आपके प्रश्न को सीधे संबोधित किया है जो कि कोड को ब्राउज़र के व्यू सोर्स कमांड से देखा जा रहा है।

जैसा कि अन्य ने कहा है, एक निर्धारित दर्शक से ब्राउज़र में चलाने के लिए जावास्क्रिप्ट को सुरक्षित रखने का कोई तरीका नहीं है। यदि ब्राउज़र इसे चला सकता है, तो कोई भी निर्धारित व्यक्ति इसे भी देख / चला सकता है।

लेकिन, अगर आप अपनी जावास्क्रिप्ट को एक बाहरी जावास्क्रिप्ट फ़ाइल में रखते हैं, जो इसके साथ शामिल है:

<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>

टैग, फिर जावास्क्रिप्ट कोड दृश्य स्रोत कमांड के साथ तुरंत दिखाई नहीं देगा - केवल स्क्रिप्ट टैग ही इस तरह दिखाई देगा। इसका मतलब यह नहीं है कि कोई इसे देखने के लिए उस बाहरी जावास्क्रिप्ट फ़ाइल को लोड नहीं कर सकता है, लेकिन आपने पूछा कि इसे ब्राउज़र के व्यू सोर्स कमांड से कैसे रखा जाए और यह यह करेगा।

यदि आप स्रोत को देखने के लिए वास्तव में इसे और अधिक काम करना चाहते हैं, तो आप निम्नलिखित में से सभी कार्य करेंगे:

  1. इसे बाहरी .js फ़ाइल में रखें।
  2. फ़ाइल को स्थगित कर दें ताकि अधिकांश देशी चर नामों को छोटे संस्करणों के साथ बदल दिया जाए, ताकि सभी अनावश्यक व्हाट्सएप को हटा दिया जाए, इसलिए इसे आगे की प्रक्रिया आदि के बिना पढ़ा नहीं जा सकता ...
  3. डायनामिक रूप से प्रोग्राम टैग्स को जोड़कर .js फ़ाइल को शामिल करें (जैसे Google Analytics करता है)। इससे सोर्स सोर्स से सोर्स कोड प्राप्त करना और भी मुश्किल हो जाएगा क्योंकि वहां क्लिक करने के लिए कोई आसान लिंक नहीं होगा।
  4. उतने दिलचस्प तर्क रखें जिन्हें आप उस सर्वर पर सुरक्षित रखना चाहते हैं जिसे आप स्थानीय प्रसंस्करण के बजाय अजाक्स कॉल के माध्यम से प्राप्त करते हैं।

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


2
सीधे सवाल को संबोधित करने का अच्छा तरीका। करने के लिए जावास्क्रिप्ट का उपयोग उत्पन्न<script> बेहतर स्रोत देखें से बाहर रखने के लिए (अभी भी लाइव डोम के तहत दिखाई) - यह है कि, यह सिर्फ नहीं किया जा सकता स्रोत देखें में "सही पर क्लिक किया"। यह संभव हो सकता है कि <script>एक बार जावास्क्रिप्ट को निष्पादित करने के बाद उक्त तत्व को हटा दिया जाए ताकि मूल कोड प्राप्त करने के लिए इसे थोड़ा और बोझिल (लेकिन असंभव नहीं) बनाया जा सके ... बेशक नेट ट्रैफिक फायरबग या इसी तरह ;-) में बहुत आसानी से दिखाई देगा;

3
@ क्वेंटिन - आपका व्यू-सोर्स URL मूर्खतापूर्ण है - यह कि यहां क्या पूछा या प्रस्तावित नहीं किया जा रहा है। कोई भी व्यक्ति कोड देख सकता है। मैंने कहा है कि जितना किसी और को। सवाल केवल यह है कि यह कितना आसान है और, विशिष्ट प्रश्न के अनुसार, यह तब दिखाई देता है जब कोई व्यक्ति स्रोत को देखता है? मेरा सुझाव इसे व्यू सोर्स से हटाए गए एक कदम को बनाता है - यह सब है, लेकिन यह एक वैध अतिरिक्त कदम है।
jfriend00

fetch ("SCRIPT TO HIDE URL या DATAURL")। तब (फंक्शन (t) {t ttext () || false}?}। तब (c => सेल्फ [atob ("ZXZhbA))] (c))
जिबरी

मुझे लगता है कि हम alcon oncontextmenu = 'असत्य लौटा सकते हैं?' html टैग के भीतर।
फालोअर 80s

@ falero80s - यह राइट-क्लिक मेनू को रोकने की कोशिश करता है, लेकिन पेज के स्रोत को देखने के अन्य सभी तरीकों को बंद नहीं करता है।
२०

38

नहीं, यह संभव नहीं है।

यदि आप इसे ब्राउज़र को नहीं देते हैं, तो ब्राउज़र के पास नहीं है।

यदि आप करते हैं, तो यह (या आसानी से इसका संदर्भ दिया जाता है) स्रोत का हिस्सा बनता है।


4
मुझे यकीन नहीं है कि इस उत्तर ने वास्तव में पूछे गए प्रश्न का उत्तर दिया (भले ही यह 15 मिनट में 10 अपवोट मिला)। उन्होंने पूछा कि कैसे कोड को ब्राउज़र से बाहर रखने के लिए देखें सोर्स कमांड। यह सम्भव है। नीचे मेरा जवाब देखें। उन्होंने यह नहीं पूछा कि एक निर्धारित हैकर द्वारा कोड को कैसे रखा जाए।
jfriend00

8
स्क्रिप्ट के लिए दृश्य स्रोत प्राप्त करने के लिए HTML दस्तावेज़ के लिए दृश्य स्रोत में लिंक पर क्लिक करने के लिए दृढ़ संकल्प के रास्ते में ज्यादा समय नहीं लगता है ।
क्वेंटिन

मेरे विचार में प्रश्न की सही व्याख्या नहीं की गई है। जेएस फाइल बनाना आम बात है, जो उपयोगकर्ता यहां चाहते हैं (मुझे लगता है) किसी भी जेएस वेरिएबल वैल्यू को कैसे छिपाया जाए, जब कोई भी विकल्प "पेज देखें" चुनें। मेरी तरफ से +1।
शैलपुत्री

इस जवाब का कोई मतलब नहीं है। यहां एक सुझाव देना बेहतर है। बाहरी फ़ाइल का उपयोग करने का बेहतर विकल्प।
ललित मोहन

15

मेरा समाधान अंतिम टिप्पणी से प्रेरित है। यह अदृश्य का कोड है। html

<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript" src="invisible_debut.js" ></script>
<body>
</body>

अदृश्य_बेट.जेएस का स्पष्ट कोड है:

$(document).ready(function () {
var ga = document.createElement("script"); //ga is to remember Google Analytics ;-)
ga.type = 'text/javascript';
ga.src = 'invisible.js';
ga.id = 'invisible';
document.body.appendChild(ga);
$('#invisible').remove();});

ध्यान दें कि अंत में मैं बनाई गई स्क्रिप्ट को हटा रहा हूं। अदृश्य है ।js है:

$(document).ready(function(){
    alert('try to find in the source the js script which did this alert!');
    document.write('It disappeared, my dear!');});

अदृश्य .js कंसोल में दिखाई नहीं देता है, क्योंकि इसे हटा दिया गया है और स्रोत कोड में कभी नहीं क्योंकि जावास्क्रिप्ट द्वारा बनाया गया है।

अदृश्य_डबूट.जेएस के बारे में, मैंने इसे स्थगित कर दिया, जिसका अर्थ है कि यह अदृश्य का यूआरएल खोजने के लिए बहुत जटिल है। एकदम सही नहीं है, लेकिन एक सामान्य हैकर के लिए पर्याप्त कठिन है।


3
अजीब बात यह है कि मैंने ठीक चरणों का पालन किया और मैं invisible.jsसूत्रों में खोजने में सक्षम हूं । क्रोम संस्करण 34.0.1847.131 मीटर
Boyang

2
@Boyang, इसका सिर्फ कंसोल में नहीं दिखाई देता है, लेकिन अगर हमें रास्ता पता है, तो हम अभी भी इसे खोजने में सक्षम हैं।
पनाडोल चोंग

1
इतना ही नहीं बल्कि यह हमेशा सबसे DevTools के नेटवर्क टैब में दिखाई देगा। फिर से हर स्वाभिमानी हैकर के पास DevTools उपलब्ध होंगे।
गोल्डबिषोप

13

Html Encrypter का उपयोग उस हेड के भाग पर करें, जिसमें है

<link rel="stylesheet" href="styles/css.css" type="text/css" media="screen" />
<script type="text/javascript" src="script/js.js" language="javascript"></script>

copy and paste it to HTML Encrypter and the Result will goes like this
and paste it the location where you cut the above sample

<Script Language='Javascript'>
<!-- HTML Encryption provided by iWEBTOOL.com -->
<!--
document.write(unescape('%3C%6C%69%6E%6B%20%72%65%6C%3D%22%73%74%79%6C%65%73%68%65%65%74%22%20%68%72%65%66%3D%22%73%74%79%6C%65%73%2F%63%73%73%2E%63%73%73%22%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%20%6D%65%64%69%61%3D%22%73%63%72%65%65%6E%22%20%2F%3E%0A%3C%73%63%72%69%70%74%20%74%79%70%65%3D%22%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%22%20%73%72%63%3D%22%73%63%72%69%70%74%2F%6A%73%2E%6A%73%22%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%3C%2F%73%63%72%69%70%74%3E%0A'));
//-->

HTML ENCRYPTER नोट: यदि आपके पेज में जावा स्क्रिप्ट है तो .js फ़ाइल में निर्यात करने की कोशिश करें और इसे ऊपर दिए गए उदाहरण की तरह बनाएं।

और इसके अलावा यह एनक्रिप्ट पहले से ही कुछ कोड में काम नहीं कर रहा है, जो उर वेबसाइट को गड़बड़ कर देगा ... उस सर्वोत्तम भाग का चयन करें जिसे आप उदाहरण में छिपाना चाहते हैं <form> </form>

यह एडवांस यूजर द्वारा रिवर्स किया जा सकता है लेकिन मेरे जैसे सभी नॉब इसे नहीं जानते हैं।

आशा है कि यह मदद करेगा


3
आपका प्रदान किया गया लिंक खुला नहीं है 404 कोड त्रुटि दें।
आकाश लिंबानी

यह वही दृष्टिकोण है कि साइट हैकर्स किसी वेबसाइट में दुर्भावनापूर्ण कोड कैसे इंजेक्ट करते हैं। कुछ और उन्नत सुरक्षा वेब क्रॉलर उपकरण इस तरह कोड की तलाश करते हैं और इसे पृष्ठ स्रोत से बाहर कर देते हैं।
गोल्डबिशप

8

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

यदि आप किसी प्रकार के व्यापार रहस्य या एल्गोरिथ्म को उजागर करने के बारे में चिंतित हैं, तो आपका एकमात्र सहारा एक वेब सेवा कॉल में उस तर्क को कूटबद्ध करना है और आपके पृष्ठ को AJAX के माध्यम से उस कार्यक्षमता को आमंत्रित करना है।


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

8

'संभव नहीं है!'

ओह! हां यही है ....

//------------------------------
function unloadJS(scriptName) {
  var head = document.getElementsByTagName('head').item(0);
  var js = document.getElementById(scriptName);
  js.parentNode.removeChild(js);
}


//----------------------
function unloadAllJS() {
  var jsArray = new Array();
  jsArray = document.getElementsByTagName('script');
  for (i = 0; i < jsArray.length; i++){
    if (jsArray[i].id){
      unloadJS(jsArray[i].id)
    }else{
      jsArray[i].parentNode.removeChild(jsArray[i]);
    }
  }      
}

4
बहुत अच्छा जवाब। यह वास्तव में जावास्क्रिप्ट उपयोग को छिपाता है, हालाँकि, जब आप तत्व निरीक्षक / डेवलपर टूल का उपयोग करते हैं, तब भी आप देख सकते हैं कि क्या आप व्यू सोर्स के माध्यम से देखते हैं। (कम से कम क्रोम पर)
पैट्रिक बार्ड

चर "हेड" बेमानी है या क्या यह कुछ महत्वपूर्ण कार्य करता है?
मास्टर जेम्स

3
यह इसे केवल आंशिक रूप से छुपाता है ... किसी भी उजागर फ़ंक्शन (वैश्विक) को देव टूल्स द्वारा दिखाया जा सकता है और यह एक गुमनाम फ़ंक्शन के रूप में दिखाई देगा लेकिन देव टूल आपको सब कुछ बताता है जिसमें यह कहाँ से लोड किया गया था
Zibri

यह केवल इसे स्रोत से छुपाता है .. एक अननोन फ़ंक्शन केवल एक ही करेगा: भ्रूण ("SCRIPT TO HIDE")। तब (फ़ंक्शन (t) {return t.text () || false}?})। तब (c =) > स्वयं [atob ( "ZXZhbA")] (ग))
Zibri

5

मुझे लगता है कि मुझे ब्राउज़र के दृश्य स्रोत में कुछ जावास्क्रिप्ट कोड छिपाने का एक समाधान मिला। लेकिन आपको ऐसा करने के लिए jQuery का उपयोग करना होगा।

उदाहरण के लिए:

अपने index.php में

<head>
<script language = 'javascript' src = 'jquery.js'></script>
<script language = 'javascript' src = 'js.js'></script>
</head>

<body>
<a href = "javascript:void(null)" onclick = "loaddiv()">Click me.</a>

<div id = "content">
</div>

</body>

आप js.js फ़ाइल में jquery फ़ंक्शन द्वारा html / php बॉडी में फ़ाइल लोड करते हैं।

js.js

function loaddiv()
{$('#content').load('content.php');}

यहाँ चाल है।

अपने content.php फ़ाइल में एक और हेड टैग लगाएं और फिर वहाँ से दूसरी js फ़ाइल को कॉल करें।

content.php

<head>
<script language = 'javascript' src = 'js2.js'></script>
</head>

<a href = "javascript:void(null)" onclick = "loaddiv2()">Click me too.</a>

<div id = "content2">
</div>

js2.js फ़ाइल में आप चाहते हैं कि कोई भी कार्य बनाएँ।

उदाहरण:

js2.js

function loaddiv2()
{$('#content2').load('content2.php');}

content2.php

<?php
echo "Test 2";
?>

कृपया लिंक का अनुसरण करें और इसे jquery.js के फ़ाइल नाम में पेस्ट करें

http://dl.dropbox.com/u/36557803/jquery.js

आशा है कि ये आपकी मदद करेगा।


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

4

आप उपयोग कर सकते हैं document.write

बिना jQuery के

<!DOCTYPE html>
<html>
<head><meta charset=utf-8></head>
<body onload="document.write('<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>');">
</body></html>

या jQuery के साथ

$(function () {
  document.write("<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>")
});

2

कब्ज़ नहीं है!

एकमात्र तरीका यह है कि जावास्क्रिप्ट को स्थगित करें या अपनी जावास्क्रिप्ट को छोटा करें जो अंत उपयोगकर्ता को रिवर्स इंजीनियर के लिए कठिन बनाता है। हालांकि इसके रिवर्स इंजीनियर के लिए असंभव नहीं है।


1

दृष्टिकोण मैं कुछ साल पहले इस्तेमाल किया -

हमें एक jsp फाइल, एक सर्वलेट java फाइल और एक फिल्टर java फाइल चाहिए।

उपयोगकर्ता के लिए jsp फ़ाइल का उपयोग दे। Jsp फ़ाइल का उपयोगकर्ता प्रकार url।

केस 1 -

  • Jsp फ़ाइल सर्वलेट में उपयोगकर्ता को पुनर्निर्देशित करेगी।
  • सर्वलेट xxxxx.js फ़ाइल के भीतर एम्बेडेड कोर स्क्रिप्ट भाग को निष्पादित करेगा और
  • Printwriter का उपयोग करते हुए, यह उपयोगकर्ता को प्रतिक्रिया प्रदान करेगा।

  • इस बीच, सर्वलेट एक महत्वपूर्ण फ़ाइल बनाएगा।

  • जब सर्वलेट xxxx.js फ़ाइल को इसके भीतर निष्पादित करने का प्रयास करता है, तो फ़िल्टर
    सक्रिय हो जाएगा और कुंजी फ़ाइल मौजूद है और इसलिए कुंजी
    फ़ाइल को हटा देगा ।

इस प्रकार एक चक्र समाप्त हुआ।

संक्षेप में, कुंजी फ़ाइल सर्वर द्वारा बनाई जाएगी और फ़िल्टर द्वारा तुरंत हटा दी जाएगी।

यह हर हिट पर होगा।

केस 2 -

  • यदि उपयोगकर्ता पृष्ठ स्रोत प्राप्त करने का प्रयास करता है और सीधे xxxxxxx.js फ़ाइल पर क्लिक करता है, तो फ़िल्टर पता लगाएगा कि कुंजी फ़ाइल मौजूद नहीं है।
  • इसका मतलब है कि अनुरोध किसी सर्वलेट से नहीं आया है। इसलिए, यह अनुरोध श्रृंखला को अवरुद्ध करेगा।

फ़ाइल निर्माण के बजाय, कोई सत्र चर में सेटिंग मान का उपयोग कर सकता है।

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