से एचटीएमएल इंजेक्शन करने वाले हैकर्स को रोकने के लिए पर्याप्त नहीं है मेरे पास एक टेक्स्ट बॉक्स के साथ एक फॉर्म है जो एक php फ़ाइल में डेटा पोस्ट करता है जो "मालिकों" के फ़ंक्शन का उपयोग करता है ताकि यह वेबसाइट स्वामी को ईमेल करने के लिए सुरक्षित हो सके।PHP htmlentities फॉर्म
समस्या यह है कि कोई व्यक्ति टेक्स्ट में हाइपरलिंक प्राप्त करने में कामयाब रहा है और htmlentities() इसे हटा नहीं देता है।
यह मेरा पाठ बॉक्स एचटीएमएल है:।
<input name="usertext" type="text" />
यह मेरा PHP कोड उस पोस्ट डेटा (क्योंकि है कि समस्या नहीं है मैं ईमेल कोड बाहर छोड़ दिया मैं बदल यह सिर्फ प्राप्त डेटा तो प्रतिध्वनित करने के लिए प्राप्त करता है मैं क्या हैकर किया दोहराने के लिए कोशिश कर सकते हैं मुझे पता है वह यह कैसे किया, मैं ऐसा होने से इसे रोकने के लिए एक तरह से) पा सकते हैं:।
echo trim(htmlentities($_POST["usertext"], ENT_QUOTES));
अब हैकर कुछ डेटा भेजने और इस परिणाम एचटीएमएल था (स्रोत कोड - इसका मतलब है कि यह ब्राउज़र में एक सामान्य लिंक दिखाता है):
<a target="_blank" href="mailto:[email protected]">[email protected]</a>
मैंने सोचा कि htmlentities() किसी को भी किसी भी प्रकार के एचटीएमएल दर्ज करने में सक्षम होने से रोक देगा। अगर मैं इस तरह के रूप हाइपरलिंक दर्ज करें:
<a href="aaa" />
मैं:
<a href="aaa" />
लेकिन हैकर का पाठ उस तरह एनकोड नहीं किया गया था।
तो मेरी प्रश्न हैं:
- कैसे हैकर html टैग में प्रवेश किया था ताकि htmlentities() फ़ंक्शन यह करने के लिए कुछ नहीं किया?
- मैं इसे परीक्षण के लिए कैसे दोहराऊंगा? (उपरोक्त प्रश्न द्वारा उत्तर दिया जा सकता है)
मैंने कुछ शोध किया और यह संभव है कि हैकर ने यूटीएफ -7 या कुछ में अपना टेक्स्ट एन्कोड किया हो?
मुझे पहले से ही इन लिंक के साथ कुछ ईमेल प्राप्त हुए हैं। यह हैकर स्पष्ट रूप से मेरी वेबसाइट का परीक्षण कर रहा है यह देखने के लिए कि क्या वह एक्सएसएस या कुछ कर सकता है।
जमा होने पर $ _POST ["usertext"] फ़ील्ड की सामग्री के साथ कच्चे अनुरोध को लॉग करें। आप htmlentities में एन्कोडिंग भी जोड़ सकते हैं जो सामग्री के एन्कोडिंग से मेल खाना चाहिए। – MatsLindh
क्या आपने कहीं भी जावास्क्रिप्ट को शामिल किया था, शायद यह गतिशील रूप से बनाया गया है? – martinstoeckli
क्या आप भेजने से पहले अपनी एचटीएमएल सामग्री को ठीक से एन्कोड कर रहे हैं? – inhan