我試圖在教程網站上執行Reflective XSS攻擊。該網頁基本上由帶有輸入字段和提交按鈕的表單組成。提交表單時,輸入字段的內容顯示在同一網頁上。瀏覽器如何在一個編碼標籤內渲染這個內嵌JavaScript?
我發現該網站是黑名單腳本標記和一些JavaScript方法,以防止XSS攻擊。所以,我決定編碼我的輸入,然後嘗試提交表單。我嘗試了2個不同的輸入,其中一個工作,另一個沒有。
當我想:
<body onload="alert('Hi')"></body>
它的工作,並顯示一個警告框。但是,當我在HTML標記中編碼一些字符時,如:
<body onload="alert('Hi')"></body>
它沒有工作!它只是打印<body onload="alert('Hi')"></body>
,因爲它在網頁上!
我知道瀏覽器在解析HTML文檔時執行內嵌JavaScript(請糾正我,如果我錯了)。但是,我無法理解瀏覽器爲什麼會針對我提到的不同輸入顯示不同的行爲。
---------------------------------------------- - - - - - - - -編輯 - - - - - - - - - - - - - - - - - -----------------------
我厭倦了一個沒有XSS保護的更基本的XSS教程。再次:
<script>alert("Hi")</script>
- >工作!
<script>alert("Hi")</script>
- >沒有工作! (在網頁上打印爲字符串)
所以基本上,如果我在JavaScript中編碼任何東西,它的工作原理。但是,如果我編碼任何HTML,它不會執行該HTML內的JavaScript!
*「我知道瀏覽器在解析HTML文檔時執行內嵌JavaScript」*這是正確的,但是您的內容不是內嵌JavaScript,它是一個onload事件。 ''會內嵌javascript。屬性確實被轉換爲一個字符串,其中的html實體替換爲實際的字符,這就是爲什麼您的頁面加載時的警報有效。 –
啊!我明白。感謝您的澄清。 –
-1 ?!太寬泛?!認真?我不認爲這個問題太寬泛。我只需要回答這個問題中提到的案例。我沒有要求完整的渲染過程! –