दरअसल बस जाने सर्वर उत्पादन यह इतना है कि इनपुट स्ट्रिंग प्रभावी रूप से 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 क्रमशः के लिए के बीच में हैं प्रस्तुत करना होगा। वे <
, >
और "
<
, >
और "
से प्रतिस्थापित करेंगे ताकि एंडुसर इनपुट HTML स्रोत में सचमुच एम्बेडेड न हो, लेकिन इसके बजाय इसे दर्ज किया गया था।
क्या आप किसी भी सर्वर साइड भाषा का उपयोग कर रहे हैं? – StingyJack
.NET (लेकिन एएसपी.नेट नहीं) – vtortola