मुझे लगता है कि आप जेएसपी का उपयोग कर रहे हैं।
बस के दौरान प्रदर्शित करें। JSTL<c:out>
टैग के लिए बिल्कुल उपयुक्त है। यह डिफ़ॉल्ट रूप से एचटीएमएल इकाइयों से बच निकलता है। प्रत्येक उपयोगकर्ता द्वारा नियंत्रित इनपुट, जैसे अनुरोध URL, अनुरोध शीर्षलेख और अनुरोध पैरामीटर प्रदर्शित करने के लिए इसका उपयोग करें।
उदा।
<input type="text" name="foo" value="<c:out value="${param.foo}" />">
इनपुट के दौरान भागने की आवश्यकता नहीं है। XSS कच्चे जावा कोड और न ही SQL डेटाबेस में नुकसान नहीं पहुंचाता है। दूसरी तरफ, आप डीबी में अनमोडिफाइड डेटा को भी सहेज लेंगे ताकि आप अभी भी देख सकें कि उपयोगकर्ता वास्तव में दर्ज किया गया है, ताकि यदि आवश्यक हो तो आप मेलबस उपयोगकर्ताओं पर सामाजिक कार्यवाही कर सकते हैं।
यदि आप जानना चाहते हैं कि इनपुट के दौरान क्या बचाना है, तो यह SQL injection होगा। ऐसे मामले में नियमित Statement
के बजाय PreparedStatement
का उपयोग करें, जब भी आप किसी भी डेटाबेस में उपयोगकर्ता द्वारा नियंत्रित इनपुट को सहेजना चाहते हैं।
उदा।
create = connection.prepareStatement("INSERT INTO user (username, password) VALUES (?, MD5(?))");
create.setString(1, username);
create.setString(2, password);
create.executeUpdate();
जोएल स्पॉल्स्की * मेकिंग कोड लुक गलत * लेख - http://www.joelonsoftware.com/articles/Wrong.html - इस सटीक प्रकार की समस्या के बारे में है। – mob
मुझे वास्तव में वह लेख पसंद आया :) – Kyle
वास्तव में अच्छा पढ़ा। – pastapockets