我想熟悉Cross網站腳本,所以我試圖利用他們在課堂上提供給我們的一些易受攻擊的例子。現在,當表單提交時,我有一個表單,其值存儲在PHP的$_REQUEST['in']
中,然後在響應返回時在頁面的其他位置打印。要打印其內容,使用另一個變量$var
從$_REQUEST['in']
檢索它,然後使用echo $var
。使用echo從PHP變量輸出Javascript代碼
現在我的選擇是將JS代碼寫入$_REQUEST['in']
,這樣當它返回時它就會打印在HTML文件中並執行。問題是echo
正在將字符<
和>
更改爲其等效<
和>
,這使得JS代碼顯示爲純文本。沒有使用HTML編碼方法,這就是爲什麼我有點困惑。你能給我提示爲什麼會發生這種情況嗎?
這是正在使用$var
的文件部分。
<div id="feedback" class="alert alert-warning">
<?php echo $var; ?>
</div>
我重新檢查了代碼尋找一些引用方法,但我沒有看到任何。它們包括this JS,但我不認爲編碼是在那裏完成的,因爲它不是直接提供給我們的。
它們可能被編碼以防止該特定的跨站點腳本攻擊。 echo $ var;'在哪裏被使用?這可能提供瞭如何實施攻擊的線索。 –
「問題是回聲正在將字符'<' and '>'改變爲等價的&lt&gt; - 'echo'並不這樣做。這將是以前的一個步驟。阻止XSS是做這件事的重要部分。 – Quentin
你有PHP頁面的源代碼嗎?在那裏必須有一個'htmlspecialchars()'(或'htmlentities()')調用。除非它們在* request *中被「轉換」爲「<'/'>'。 –