我一直在閱讀關於XSS的內容,我用一個文本和提交輸入做了一個簡單的表單,但是當我對它執行<script>alert();</script>
時,沒有任何反應,服務器得到這個字符串,就這些了。是什麼使輸入易受XSS影響?
我必須做些什麼才能讓它變得脆弱? (然後我會學到我不該做的嘿嘿)
乾杯。
我一直在閱讀關於XSS的內容,我用一個文本和提交輸入做了一個簡單的表單,但是當我對它執行<script>alert();</script>
時,沒有任何反應,服務器得到這個字符串,就這些了。是什麼使輸入易受XSS影響?
我必須做些什麼才能讓它變得脆弱? (然後我會學到我不該做的嘿嘿)
乾杯。
事實上,只要讓服務器輸出它,以便輸入字符串可以有效地嵌入HTML源代碼中,並返回給客戶端。
PHP例子:
<!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源代碼中,而只是在輸入時才顯示。
讓服務器將輸入返回給客戶端。
我讀過「讓服務器將輸入返回給客戶端。」,並認爲哇,這是對這個問題最簡單,最死的答案。 – 2010-05-25 15:09:20
您應該「注入」腳本。所以,如果你有一個文本輸入,你應該把形式:
" /> <script>alert();</script>
這樣,您先關閉現有的HTML的屬性,然後注入自己的代碼。這個想法是爲了逃避報價。
這不是他要問的。他知道如何執行攻擊,他問的是什麼使輸入變得脆弱。 – 0112 2017-04-26 16:24:36
三個簡單的事情:
更多資料可在OWASP Top 10 for .NET developers part 2: Cross-Site Scripting (XSS)舉報。
您是否使用任何服務器端語言? – StingyJack 2010-05-25 18:53:28
NET(但不是ASP.NET) – vtortola 2010-05-26 00:00:48