में इनपुट को स्वच्छ करने के लिए सबसे अच्छा तरीका हम js, servlets, bes का उपयोग mysql डेटाबेस के साथ करते हैं। हम फॉर्म फ़ील्ड पर उपयोगकर्ताओं द्वारा दर्ज वर्णों को प्रतिबंधित नहीं करना चाहते हैं। तो मैं इनपुट को कैसे स्वच्छ कर सकता हूं और यह सुनिश्चित करने के लिए कि दुर्भावनापूर्ण गतिविधियों के लिए आउटपुट क्यों नहीं बदला जाता है। आउटपुट भेजने के दौरान कोई रास्ता है, मैं जांच सकता हूं कि अतिरिक्त कोड भेजा गया है या नहीं। मान लीजिए कि खोज इनपुट फ़ील्ड है - उपयोगकर्ता <script>alert("I am here")</script>
जैसा कुछ देता है। क्या वैसे भी मुझे पता चलेगा कि यह एक HTML टैग है। यदि उपयोगकर्ता किसी लिंक फ़ील्ड में अतिरिक्त पैरामीटर जोड़ता है, तो पहले और बाद में चेक की तरह मैं दस्तावेज़ के लिए एक अतिरिक्त लिंक फ़ील्ड महसूस कर सकता हूं।जावा वेबपैप
उत्तर
आपको हमेशा उपयोगकर्ता इनपुट या डेटाबेस जैसे अमान्य वर्णों वाले स्रोतों से लिया गया डेटा से बचने के मूल HTML-escaping करना चाहिए। <c:out>
जेएसपी टैग यह उदाहरण के लिए करता है। इस तरह यदि उपयोगकर्ता किसी क्षेत्र में "<script> ..."
में प्रवेश करता है और आप इसे फिर से प्रिंट कर रहे हैं, तो इसे HTML पर "<script> ..."
के रूप में मुद्रित किया जाएगा।
आपको वास्तव में उपयोगकर्ताओं को जितना संभव हो सके HTML और/या जावास्क्रिप्ट के रूप में इनपुट करने की अनुमति देनी चाहिए। इस सामान को वैध और स्वच्छ करने का एक अच्छा समाधान OWASP AntiSamy जैसे तैयार पुस्तकालय का उपयोग करना है।
साथ ही, डेवलपर को एक सुरक्षित वेब एप्लिकेशन बनाने की आवश्यकता वाले सुरक्षा विधियों के संग्रह के लिए OWASP Enterprise Security API पर एक नज़र डालें।
jsoup
इस के साथ आपकी सहायता करने के लिए एक जाएं। आप जो भी करते हैं, रेगेक्स या कुछ का उपयोग करके इसे हैक करने की कोशिश न करें, क्योंकि तब आपको 2 समस्याएं होंगी। :-)
jsoup
के साथ, आप सभी की जरूरत कोड का एक लघु स्निपेट है:
String safe = Jsoup.clean(unsafe, Whitelist.basic());
आप टैग जोड़ सकते हैं और काफी आसानी से हालांकि मैं यह नाम स्थान टैग का समर्थन नहीं करता पाया Whitelist
को जिम्मेदार बताते हैं, कर सकते हैं।
कृपया अपने प्रश्नों का नाम बदलने के लिए "जावा में इनपुट को स्वच्छ करने के लिए सबसे अच्छा तरीका" पर विचार करें - आपका प्रश्न शीर्षक भविष्य में समान उत्तरों की तलाश करने वालों की सहायता नहीं करेगा ... – razlebe
वाह, जब आप प्रश्न को पुनः प्राप्त करने के लिए जाते हैं, तो प्रश्न में जावास्क्रिप्ट निष्पादित करता है! खराब stackoverflow, बुरा! –
@robhruska: अच्छा लगता है! – Adnan