2012-04-23 5 views
9

आज सुबह मैं अपनी परियोजना पर एक जावास्क्रिप्ट अलर्ट तक जाग गया जो KnockoutJS, jQuery, और Underscore.js चलाता है। यह कहता है "मैं अपने उपयोगकर्ताओं के ब्राउज़र पर अपनी पसंद के किसी भी जावास्क्रिप्ट को चला सकता हूं"। मैं डाउनलोड कर रहा हूं केवल एकमात्र तृतीय पक्ष जावास्क्रिप्ट Typekit है, और इसे हटाने से यह दूर नहीं जाता है। मैंने अपनी जावास्क्रिप्ट और विक्रेता जावास्क्रिप्ट की खोज की है और यह स्ट्रिंग किसी भी चीज़ से मेल नहीं खाती है।मुझे अपने प्रोजेक्ट में एक जावास्क्रिप्ट अलर्ट मिल रहा है जिसे मैंने नहीं बनाया, मुझे धमकी दी?

आप इस समस्या का निवारण कैसे करेंगे और/या ऐसा कुछ है जो होने के लिए जाना जाता है?

+11

यह आपके जेएस में नहीं बल्कि आपके डीबी में इंजेक्शन है :) आपने उपयोगकर्ता के इनपुट डेटा को sanitize नहीं किया – fl00r

+1

क्या आप कोई विज्ञापन या ऐसा कुछ आयात कर रहे हैं? वास्तव में साइट पर देखे बिना कहना असंभव है। – Pointy

+7

अपने आप को भाग्यशाली मानें कि वे इसके बारे में अच्छे थे, –

उत्तर

14

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

आखिरी जगह रूबी कोड को देखने के लिए होगी कि किसी भी तरह से एक दुर्भावनापूर्ण उपयोगकर्ता ने आपके स्रोत को संशोधित किया है या नहीं।

+4

यह एसक्यूएल इंजेक्शन भी नहीं हो सकता है, केवल असुरक्षित एचटीएमएल इंजेक्शन। – JayC

+1

@JayC - जब आपने टिप्पणी की थी तो इसे संपादित करने की प्रक्रिया में था। किसी कारण से, मैं यह नहीं समझ सका कि वेक्टर को क्या कहना है। धन्यवाद। –

+0

आह ठीक है, धन्यवाद दोस्तों –

0

यह आपकी साइट पर हैक प्रयास की तरह लगता है। किसी भी डेटाबेस, टेक्स्ट फाइल इत्यादि की जांच करें जिनका प्रयोग किया जा रहा है जो उपयोगकर्ता इनपुट प्राप्त कर रहे हैं। ऐसा लगता है कि आप यह जांच नहीं रहे हैं कि आपके सर्वर पर क्या पोस्ट किया जा रहा है, मैं अनुमान लगा रहा हूं।

3

आप स्पष्ट रूप से उपयोगकर्ता से इनपुट लेते हैं और फिर इसे उद्धृत या स्वच्छता के बिना HTML के हिस्से के रूप में वापस आउटपुट करते हैं। करने के लिए दो त्वरित जांच हैं:

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

भविष्य के लिए: हमेशा HTML पृष्ठ में यह डालने से पहले अपने इनपुट (हटाने HTML टैग) स्वच्छ या मानकों के अनुसार संस्थाओं के रूप में प्रतीकों से बचने या स्पष्ट रूप से इलाज डोम में पाठ नोड के मूल्य के यह बताए द्वारा एक सादा पाठ है।

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