2008-11-27 12 views
9

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

यदि यह किसी की सहायता करता है, तो यह PHP/MySQL में किया जाता है।

+0

हमले की प्रकृति के बारे में अधिक विशिष्ट जानकारी बहुत मददगार होगी .. कुछ छवियों का शोषण है जो लोगों को पता है .. – paan

+0

विशेष रूप से, प्रोफ़ाइल छवियां कहां से आती हैं - क्या उपयोगकर्ताओं को एक यूआरएल प्रदान करना है , या फाइल अपलोड करें? – Rob

+0

उपयोगकर्ता अपनी छवियां और यूआरएल प्रदान कर रहे हैं, और जब लोग उन्हें देखते हैं तो सामान खराब हो जाता है। – watchwood

उत्तर

0

छवि अखंडता को सत्यापित करने के लिए कुछ सबसे आम प्रथाओं में MIME प्रकार, या बाइनरी छवि के पहले कुछ बाइट पढ़ने की जांच शामिल है। हालांकि ये सबसे अच्छे नहीं हैं, लेकिन उनमें से कुछ को रोकने की कोशिश करना उचित है।

+0

मेरी पोस्ट को समझने के लिए देखें कि यह क्यों काम नहीं करेगा। – UnkwnTech

3

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

+0

मेरी पोस्ट को समझने के लिए देखें कि यह क्यों काम नहीं करेगा। – UnkwnTech

0

क्या आप इस मुद्दे के बारे में बात कर रहे हैं जहां आईई एक HTML पृष्ठ के रूप में HTML टैग के साथ एक छवि की व्याख्या करेगा, इस प्रकार उपयोगकर्ता द्वारा सबमिट की गई छवियों से HTML और स्क्रिप्ट इंजेक्शन की अनुमति होगी?

(बग किया जा रहा है कि IE इस भले ही आप इसे बता सामग्री प्रकार है एक छवि/प्रकार। माइक्रोसॉफ्ट 'मददगार' होने का यह प्रयास के साथ अनंत सुरक्षा आपदाओं का कारण है नहीं होगा।)

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

अपने वर्चुअल सर्वर को लॉक करना सुनिश्चित करें ताकि छवि सर्वर और ऐप सर्वर प्रत्येक एक विशेष होस्टनाम से उपलब्ध हो (और ऐप सर्वर आईपी पते के माध्यम से सुलभ नहीं होना चाहिए)।

यह क्रॉस-साइट-स्क्रिप्टिंग समस्याओं को ठीक करेगा। आपके पास अभी भी निपटने के लिए क्रॉस-साइट-अनुरोध-जालसाजी अनुरोध हो सकते हैं, लेकिन यह एक अलग समस्या है और छवि-लिपटे स्क्रिप्ट-इंजेक्शन के बिना इसका शोषण किया जा सकता है।

+0

+1 मुझे उपयोगी जानकारी की तरह लगता है! – alex

6

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

--I एक नमूना
इस छवि मक्खी पर बनाई गई है प्रदान करने का फैसला किया, यूआरएल मैं रहा हूं है: http://unkwndesign.com/profilePic.png:
alt text http://unkwndesign.com/profilePic.png
अब , profilePic.png एक फ़ोल्डर है कि जब अनुरोध प्रदान कर रहा है है index.php, जो जीडी का उपयोग कर रहा है, एसओ लोगो प्राप्त कर रहा है, और इस पर आपका आईपी पता लगा रहा है, यहां बहुत स्पष्ट होने के लिए मैं इसे या किसी अन्य डेटा को नहीं जोड़ रहा हूं index.php का स्रोत है:

<?php 
$image = imagecreatefrompng("http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png"); 
$font_size = 12; 
$color = imagecolorallocate($image, 0,0,0); 
ImageTTFText ($image, $font_size, 0, 55, 35, $color, "arial.ttf",$_SERVER['REMOTE_ADDR']); 
header("Content-type: image/png"); 
imagepng($image); 
imagedestroy($image); 
?> 

चूंकि मैं एक उचित संपादन के साथ एक छवि वापस कर रहा हूं, और उचित माइम-टी हाँ, यह पता लगाने का कोई तरीका नहीं है कि मैं क्या कर रहा हूं। यदि सर्वर ने मेरी छवि डाउनलोड की है और इसे स्थानीय रूप से संग्रहीत किया है तो आईपी पता सर्वर का होगा, जो इसे करने का मजा बर्बाद कर देगा और संभवतः व्यवहार को रोकने के लिए एक हानिकारक कारक साबित होगा।

+0

बहुत बढ़िया हैक! काश मैं उस स्मार्ट था :) –

+0

क्या आप सुनिश्चित हैं कि आपका वेब सर्वर डिफ़ॉल्ट रूप से लॉग इन नहीं कर रहा है? :) – Tom

+1

बेशक मेरा वेब सर्वर इसे लॉग कर रहा है, लेकिन मुझे लगता है कि माना गया था। जैसे ही यह माना जाना चाहिए कि आपके आईएसपी ने भी मेरे सर्वर से कनेक्शन लॉग किया है। – UnkwnTech

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