2010-05-25 9 views
6

मैं XSS के बारे में पढ़ कर दिया गया है और मैं एक पाठ के साथ एक सरल रूप बना दिया है और इनपुट सबमिट करते हैं, लेकिन जब मैं उस पर <script>alert();</script> निष्पादित, कुछ नहीं होता, सर्वर है कि स्ट्रिंग हो जाता है और इतना ही है।एक्सएसएस के लिए एक इनपुट कमजोर बनाता है?

क्या मैं इसे कमजोर के लिए क्या करना होगा ?? (तो मैं सीख रहा hehe ऐसा नहीं करना चाहिए क्या)

चीयर्स।

+0

क्या आप किसी भी सर्वर साइड भाषा का उपयोग कर रहे हैं? – StingyJack

+0

.NET (लेकिन एएसपी.नेट नहीं) – vtortola

उत्तर

20

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

पीएचपी उदाहरण:

<!doctype html> 
<html lang="en"> 
    <head><title>XSS test</title></head> 
    <body> 
     <form><input type="text" name="xss"><input type="submit"></form> 
     <p>Result: <?= $_GET['xss'] ?></p> 
    </body> 
</html> 

JSP उदाहरण:

<!doctype html> 
<html lang="en"> 
    <head><title>XSS test</title></head> 
    <body> 
     <form><input type="text" name="xss"><input type="submit"></form> 
     <p>Result: ${param.xss}</p> 
    </body> 
</html> 

वैकल्पिक रूप से आप इनपुट तत्वों में मूल्य पुन: प्रदर्शित कर सकते हैं, यह भी अक्सर देखा गया है कि:

<input type="text" name="xss" value="<?= $_GET['xss'] ?>"> 

resp।

<input type="text" name="xss" value="${param.xss}"> 

इस तरह "अजीब" "/><script>alert('xss')</script><br class=" की तरह हमले तार काम करते हैं क्योंकि सर्वर यह सब के बाद

<input type="text" name="xss" value=""/><script>alert('xss')</script><br class=""> 

के रूप में XSS की रोकथाम समाधान दूसरों htmlspecialchars() और fn:escapeXml() PHP और JSP क्रमशः के लिए के बीच में हैं प्रस्तुत करना होगा। वे <, > और "&lt;, &gt; और &quot; से प्रतिस्थापित करेंगे ताकि एंडुसर इनपुट HTML स्रोत में सचमुच एम्बेडेड न हो, लेकिन इसके बजाय इसे दर्ज किया गया था।

19

सर्वर उत्पादन इनपुट वापस ग्राहक के लिए है।

+2

मैंने पढ़ा "सर्वर को इनपुट को वापस क्लाइंट में आउटपुट करने के बाद।", और सोचा वाह, यह सबसे सरल, और इस सवाल का उत्तर देने वाला उत्तर है। –

4

आप "इंजेक्षन" चाहिए स्क्रिप्ट। तो अगर आप एक पाठ-इनपुट है, तो आप के रूप में रखना चाहिए:

" /> <script>alert();</script> 

इस तरह से आप पहले मौजूदा HTML की विशेषता को बंद करने और फिर अपने कोड इंजेक्षन। विचार उद्धरण से बचने के लिए है।

+0

वह यही नहीं पूछ रहा है। वह जानता है कि हमले को कैसे किया जाए, वह पूछ रहा है कि इनपुट कमजोर बनाता है। – 0112

2

गूगल एक सचमुच कमाल ट्यूटोरियल कि XSS और अन्य सुरक्षा कमजोरियों here को शामिल किया गया बनाया है। यह आपको वास्तविक अनुप्रयोगों में इन मुद्दों का शोषण करने के तरीके को समझने में सहायता कर सकता है।

+2

वह लिंक अब मृत है ... – mix3d

1

तीन साधारण चीजें:

  1. आप कुछ बिंदु पर पृष्ठ के लिए अविश्वसनीय डेटा outputting नहीं कर रहे हैं वहाँ XSS के लिए कोई अवसर
  2. सभी अपने untusted डेटा (रूपों, querystrings, हेडर, आदि) श्वेतसूची के विरुद्ध सत्यापित की जानी चाहिए सुनिश्चित करने के लिए वह स्वीकार्य सीमा
  3. स्क्रीन करने के लिए अपने सभी उत्पादन के लिए एक उपयुक्त पुस्तकालय (यानी नेट के लिए विरोधी XSS) उपयुक्त भाषा पर (एचटीएमएल, सीएसएस, जे एस, आदि के साथ endcoded किया जाना चाहिए के भीतर है)। OWASP Top 10 for .NET developers part 2: Cross-Site Scripting (XSS) में उदाहरण के साथ

अधिक जानकारी।

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