2010-07-05 15 views
16

एक recient पीसीआई लेखा परीक्षा के दौरान लेखा परीक्षक ने कहा कि हम प्रमुख सुरक्षा जोखिम था, क्योंकिजावास्क्रिप्ट टिप्पणियां सुरक्षा जोखिम हैं?

  1. यह ऐसी छवियों सीएसएस और जावास्क्रिप्ट पूर्व प्रमाणीकरण के बिना के रूप में हमारी वेबसाइट से निश्चित संसाधनों डाउनलोड करने के लिए संभव था।
  2. हमारे जावास्क्रिप्ट में इसमें टिप्पणियां थीं।

व्यक्तिगत रूप से मुझे लगता है कि यह एक सुरक्षा जोखिम नहीं है। छवियों सीएसएस और जावास्क्रिप्ट जहां गतिशील रूप से नहीं बनाया गया है और उनमें हमारे बैकएंड, हमारे ग्राहक विवरण और तंत्र पर कोई डेटा नहीं है।

जावास्क्रिप्ट के भीतर टिप्पणियां बस यह बता रही थी कि जावास्क्रिप्ट फ़ाइल में क्या तरीके हैं। जो भी जेएस पढ़ता है वह वैसे भी पता चला होगा।

यह कैसे दिखाता है "information leakage"?

जावास्क्रिप्ट के भीतर टिप्पणियां वास्तव में सुरक्षा जोखिम हैं?

+0

पहला बिंदु एक सुरक्षा जोखिम है, लेकिन मैं इसे प्रमुख नहीं कहूंगा। दूसरी तरफ जावास्क्रिप्ट टिप्पणियां, सुरक्षा जोखिम? इससे मुझे वास्तव में हंसते हैं। यह इष्टतम नहीं है, यह निश्चित रूप से है, लेकिन सुरक्षा जोखिम नहीं है। आगे बढ़ें और http://developer.yahoo.com/yui/compressor/ का उपयोग करें, यह टिप्पणियां, और सभी अनावश्यक सफेद रिक्त स्थान हटा देगा। – AlexanderMP

+3

यहां महत्वपूर्ण बात यह है कि क्या टिप्पणियों में कोड से कुछ भी कटौती नहीं होती है? जैसे आंतरिक सर्वर व्यवस्थित होते हैं (एक अलग डेटाबेस सर्वर का कोई नोट, सर्वर नाम, या ऐसा कुछ भी), सुरक्षा जोखिम उत्पन्न कर सकता है। फिर फिर, कोड स्वयं ही हो सकता है, अगर यह आपको ऐसे निष्कर्ष निकालने देता है। – falstro

+0

@roe: जैसे इस तरह? =) http://thedailywtf.com/Articles/Client-side_PHP.aspx –

उत्तर

16

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

जावास्क्रिप्ट में टिप्पणियां हटाने की तरह कोड को खराब करना है: यह थोड़ा कठिन बनाता है, लेकिन यह समझना असंभव नहीं है कि क्या हो रहा है। जावास्क्रिप्ट को केवल वैसे ही बढ़ाने के रूप में देखा जाना चाहिए, आपकी सभी सुरक्षा सर्वर-साइड पर (डुप्लिकेट) होनी चाहिए। किसी को यह समझने के बाद कि जेएस को जोखिम नहीं माना जाना चाहिए।

+0

मैं गतिशील निर्मित संसाधनों (ग्राफ इत्यादि) की सुरक्षा से सहमत हूं लेकिन यह मामला यहां नहीं है। हम पृष्ठभूमि छवियों लोगो आदि के बारे में बात कर रहे हैं – Wes

+0

@Wes; वैसे भी प्रमाणीकरण पृष्ठ के लिए जरूरी नहीं होगा? :) – falstro

+1

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

4

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

, मुझे नहीं लगता कि जेएस टिप्पणियां बिल्कुल जोखिम हैं, हर वेबसाइट सामग्री (स्थैतिक) प्रमाणीकरण के बिना डाउनलोड की जा सकती है। (अन्यथा परिभाषित किए जाने तक)

+0

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

+0

मेरा मतलब यह नहीं था कि कोई भी कोड को पढ़ने में सक्षम नहीं होगा, यह सभी टिप्पणियों को हटाने और इसे एक नज़र से कम पढ़ने योग्य बनाने का एक तेज़ तरीका है, और तब और आपको इस प्रक्रिया से अधिक उम्मीद नहीं करनी चाहिए । – KensoDev

4

नहीं, अगर वे केवल यह बताते हैं कि कोड कैसे काम करता है। किसी भी पर्याप्त रूप से निर्धारित व्यक्ति को वैसे भी मिल सकता है।

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

+0

+1। मुझे सही दो अंक –

+0

पर हराया, लेकिन टिप्पणियां सामान्य रूप से यह नहीं बतातीं कि कोड कैसे काम करता है। कोड यही है। उन्हें कहना चाहिए कि कोड ऐसा करता है जो यह करता है। –

+0

मैं सहमत हूं लेकिन मेरा मानना ​​है कि खनन के लिए मुख्य कारण बैंडविड्थ को नहीं बचा है क्योंकि अधिकांश वेबसर्वर अब सामग्री को gzipped की सेवा करते हैं, बल्कि ब्राउज़र में पार्स टाइम को कम करने के लिए। – Wes

3

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

इसे हटाने के अन्य कारण भी हैं, जैसे फ़ाइल आकार, और परिणामस्वरूप डाउनलोड आकार।

उपकरण ऐसे asd JSMin कोड को हटाने और कोड के कच्चे अपवित्रता से बचने में आपकी सहायता कर सकते हैं।

+0

मैं जेएसएमआईएन से सहमत हूं और मैं इसे अपने निर्माण में बनाना चाहता हूं हालांकि इस मामले में यह मुद्दा नहीं है। हां फाइलें वर्बोज़ पर हैं और इसे छोटे और प्रभावशाली तरीकों से दोबारा क्रियान्वित किया जा सकता है।(मेरा कोड नहीं) लेकिन दिन के अंत में हम सभी के ऊपर सुरक्षा के बारे में परवाह करते हैं। – Wes

15

यह टिप्पणी की सामग्री पर निर्भर करता है। क्योंकि मानव हस्तक्षेप के बिना, टिप्पणियों की सामग्री की जांच करने के लिए कोई रास्ता नहीं है, यह निर्धारित करने के लिए कि वे जोखिम भरा हैं या नहीं, इसका ऑडिट करने का सबसे प्रभावी तरीका क्लाइंट-फेस स्रोत कोड में सभी टिप्पणियों को जोखिम भरा होने के लिए घोषित करना है।

निम्नलिखित संभावित जोखिम भरा टिप्पणियों के उदाहरण हैं।

// doesn't really authenticate, placeholder for when we implement it. 
myServer.authenticate(user,pass); 

या

// don't forget to include the length, 
//the server complains if it gets NaN or undefined. 
function send_stuff(stuff, length) { 
... 
} 

या

function doSomething() { 
    querystring = "" 
    //querystring = "?TRACING_MODE=true&" 
    ... 
    //print_server_trace(); 
} 

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

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

+0

महान उदाहरण। इन्हें जोड़ने के लिए धन्यवाद। –

+0

इसे फिर से पढ़ें। असल में आपका तर्क यह है कि यदि टिप्पणियां सर्वर कार्यान्वयन के बारे में कुछ भी बताती हैं तो उनका जोखिम होता है। समझ में आता है। या दूसरे शब्दों में यदि टिप्पणियों में सूचना है जो क्लाइंट साइड कोड से प्राप्त नहीं किया जा सकता है। – Wes

+0

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

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