2011-06-13 13 views
6

मैं अपने सभी स्क्रिप्ट अनुरोधों को छोटा और कैश करने के लिए मिनीफ़ाई का उपयोग करता हूं। मैं केवल अपने उपयोगकर्ताओं को जावास्क्रिप्ट फ़ाइलों के minified संस्करणों तक पहुंचने में सक्षम होना चाहता हूं।मैं अपनी जावास्क्रिप्ट फ़ाइलों तक सीधे पहुंच कैसे रोक सकता हूं?

www.example.com/min पर झूठ को कम करें और मेरी स्क्रिप्ट www.example.com/scripts पर हैं। मैं सीधे doc_root/scripts पर कैसे पहुंच सकता हूं, जहां मेरी असीमित जावास्क्रिप्ट फ़ाइलें झूठ बोलती हैं। मैं उन्हें दस्तावेज़ रूट से बाहर नहीं रखूंगा लेकिन यह एक विकल्प है।

कृपया ध्यान दें कि मैं ज़ेंड फ्रेमवर्क का उपयोग कर रहा हूं, इसलिए मेरे आवेदन की वास्तविक जड़ www.example.com/public पर स्थानांतरित हो गई है। एक htaccess फ़ाइल पुनर्लेखन संभालती है।

+1

सीधी पहुंच को हल करने में कौन सी समस्या को रोकना है? –

+0

मैं अपने असीमित जावास्क्रिप्ट कोड में टिप्पणियां शामिल करता हूं (जैसा कि ज्यादातर अन्य सभी करता है)। मेरे कोड को मैन्युअल रूप से कम करने के लिए यह एक दर्द है और सुनिश्चित करें कि मैं सही संस्करण अपलोड करता हूं। मैं इसे स्वचालित रूप से करने के लिए Minify का उपयोग करता हूं, लेकिन अपूर्ण संस्करण अभी भी खुले में हैं। –

उत्तर

9

तुम सिर्फ doc_root/scripts अंदर .htaccess फ़ाइल का उपयोग नहीं कर सकते हैं HTTP पर .js फ़ाइलों के लिए वेब पर सभी पहुँच को रोकने के लिए?

यह छोटा नहीं होगा, क्योंकि यह अप्रत्यक्ष पहुंच प्रदान करता है।

तो doc_root/scripts/.htaccess में

, की

<Files ~ "\.js$"> 
    order allow,deny 
    deny from all 
</Files> 

नोट पंक्तियों के साथ कुछ है कि इस मामले में .htaccess फ़ाइल मामलों के स्थान।

+0

धन्यवाद, पुनर्लेखन नियम काम किया। एक बार एसओ मुझे जाने देता है मैं इसे स्वीकार करूंगा। –

4

आप प्रभावी रूप से एंड-यूजर फेस कोड को अवरुद्ध नहीं कर सकते हैं। यहां तक ​​कि यदि आपने इसे PHP या किसी अन्य सर्वर-साइड भाषा के साथ सेवा दी है और सीधे अनुरोधों को अवरुद्ध कर दिया है, तो निश्चित रूप से इसे कई टूल के साथ सीधे पढ़ना संभव है।

आप इसे ध्यान में रखकर कोड और जावास्क्रिप्ट टिप्पणी, व्यापार के ज्ञान के साथ प्रति जागरूक होना चाहिए, आदि

अद्यतन:

हालांकि, अगर आप कोड के बारे में बात कर रहे हैं कभी होने की जरूरत नहीं है कि एक एंड-यूजर द्वारा एक्सेस किया गया, जैसा कि आपने बताया है कि इसे सर्वर रूट से बाहर ले जाएं, या आप अपनी निर्देशिका में फ़ाइलों को ब्लॉक कर सकते हैं (या पूरी निर्देशिका)। Apache की .htaccess के साथ यह आसान है।

order deny, allow 
deny from all 

आप स्रोत फ़ाइलों को अपने .htaccess फ़ाइल में mod_rewrite के साथ minified संस्करणों पर भी रीडायरेक्ट कर सकते हैं।

RewriteEngine On 
RewriteRule /scripts/(.*)$ /min/$1 [L,NC] 
+0

मैं उनके बारे में कम से कम खनन संस्करणों पर हाथ रखने की देखभाल कर सकता हूं। मुझे पता है कि किसी भी निर्धारित दृढ़ता से उन्हें समझ सकते हैं। मैं बस उन्हें अपने असीमित कोड में टिप्पणियां नहीं देखूंगा। –

+0

ओह, मैं गलत पढ़ता हूं। आप सिर्फ स्रोत फ़ाइलों को अवरुद्ध करना चाहते हैं, न कि minified वाले। मैं अपना जवाब अपडेट करूंगा। – dtbarne

+1

फिर सार्वजनिक गैर-मिनी संस्करण को सार्वजनिक रूप से सुलभ क्षेत्र में सहेजें न करें। उन्हें दस्तावेज़ रूट के बाहर ले जाएं, और यदि आप ऐसा नहीं कर सकते हैं, तो उन्हें "अविश्वसनीय" उपनिर्देशिका में रखें और इसे किसी भी सार्वजनिक-चेहरे वाले पृष्ठों में संदर्भित न करें। –

0

आपके द्वारा उपयोग किए जा रहे सर्वर पर निर्भर करता है। मान लिया जाये कि यह अपाचे है, तो आप अपनी .htaccess फाइल करने के लिए इस जोड़ सकते हैं:

<Directory ~ "\scripts"> 
Order allow,deny 
Deny from all 
</Directory> 

या उस प्रभाव के लिए कुछ ..

0

एक ही रास्ता referers जाँच करने के लिए है, और हर कोई उन्हें भेजता है, या कोई वास्तविक भेजता है एक। दूसरे शब्दों में, आप किसी भी व्यक्ति को सीधे पहुंच को अवरुद्ध नहीं कर सकते हैं जो वास्तव में कुछ चाहता है। अगर अनुरोध प्रत्यक्ष है या <script src=....> प्रकार के अनुरोध के माध्यम से किया जा रहा है तो 100% सटीकता के साथ निर्धारित करना असंभव है।

0

आपके जावास्क्रिप्ट को वास्तव में उपयोगकर्ता के ब्राउज़र को चलाने के लिए अंततः इसे पढ़ने में सक्षम होना चाहिए। इस प्रकार आपके स्क्रिप्ट फ़ोल्डर तक पहुंच को "ब्लॉक" करने का कोई वास्तविक तरीका नहीं है (अच्छी तरह से सटीक होना चाहिए, लेकिन यह आपकी वेबसाइट को तोड़ देगा क्योंकि ब्राउज़र उन्हें चलाने के लिए फ़ाइलों को नहीं देख पाएगा।)

एक समाधान obfuscation हो सकता है, जो जावास्क्रिप्ट कोड को पढ़ने/समझने में कठोर बनाता है लेकिन आखिरकार उपयोगकर्ता कोड को देखेगा, और थोड़ी-थोड़ी रिवर्सिंग इंजीनियरिंग के साथ इसे डी-ओबफ्यूसेटेड किया जा सकता है।

एक और चीज जो मैंने किसी को देखा है वह "खाली" js.html पृष्ठ बना रहा है, और पेज में अपने सभी जावास्क्रिप्ट को स्क्रिप्ट टैग (एम्बेडेड, बाहरी नहीं) में डालें, और उसके मुख्य पृष्ठ से एजेक्स अनुरोध करें js.html पर और पेज के निचले भाग में एम्बेड करें। रास्ते के बारे में एक दौर की तरह, लेकिन जब तक फ़ायरबग जैसे डेवलपर टूल का उपयोग नहीं किया जाता है तब तक उपयोगकर्ता स्रोत को देखते समय जेएस नहीं देख पाएगा।

ध्यान दें कि अंतिम विकल्प भी आपके द्वारा लोड किए जा रहे कोड की संख्या के आधार पर कुछ देरी का कारण बन सकता है। लेकिन यहां कुंजी आपकी स्क्रिप्ट तक पहुंच को अवरुद्ध नहीं कर रही है, लेकिन केवल उन्हें प्राप्त/पढ़ने/कॉपी करने के लिए कठिन बना रही है।

संपादित करें: ओह, गलत भी पढ़ाएं। मुझे लगता है कि इस मामले में सबसे अच्छा समाधान आपकी स्क्रिप्ट फ़ोल्डर में एचटीएसीएएस फाइल के साथ जाना होगा, सभी एक्सेस

+0

कृपया मेरी स्पष्टीकरण देखें। –

संबंधित मुद्दे

 संबंधित मुद्दे