2016-05-23 88 views
0

我想熟悉Cross網站腳本,所以我試圖利用他們在課堂上提供給我們的一些易受攻擊的例子。現在,當表單提交時,我有一個表單,其值存儲在PHP的$_REQUEST['in']中,然後在響應返回時在頁面的其他位置打印。要打印其內容,使用另一個變量$var$_REQUEST['in']檢索它,然後使用echo $var使用echo從PHP變量輸出Javascript代碼

現在我的選擇是將JS代碼寫入$_REQUEST['in'],這樣當它返回時它就會打印在HTML文件中並執行。問題是echo正在將字符<>更改爲其等效&lt&gt,這使得JS代碼顯示爲純文本。沒有使用HTML編碼方法,這就是爲什麼我有點困惑。你能給我提示爲什麼會發生這種情況嗎?

這是正在使用$var的文件部分。

<div id="feedback" class="alert alert-warning"> 
    <?php echo $var; ?> 
</div> 

我重新檢查了代碼尋找一些引用方法,但我沒有看到任何。它們包括this JS,但我不認爲編碼是在那裏完成的,因爲它不是直接提供給我們的。

+0

它們可能被編碼以防止該特定的跨站點腳本攻擊。 echo $ var;'在哪裏被使用?這可能提供瞭如何實施攻擊的線索。 –

+0

「問題是回聲正在將字符'<' and '>'改變爲等價的&lt&gt; - 'echo'並不這樣做。這將是以前的一個步驟。阻止XSS是做這件事的重要部分。 – Quentin

+0

你有PHP頁面的源代碼嗎?在那裏必須有一個'htmlspecialchars()'(或'htmlentities()')調用。除非它們在* request *中被「轉換」爲「<'/'>'。 –

回答

1

這聽起來好像在什麼地方最終回聲是htmlentitieshtmlspecialchars

在一個側面說明,回聲並不會讓你扔它,它只是試圖輸出任何東西任何東西任何變化,有時失敗!