2012-03-25 76 views
1

前一段時間,我注意到有些人在我的論壇上張貼「圖片」,當它們被登錄用戶查看時,他們強迫他們執行在他們可能不想要的網站上採取行動。有問題的操作通常通過簡單的GET請求執行到相關頁面。檢測(並阻止)隱藏在圖像中的GET請求

這已被要求所有不平凡的變化是POST請求修補,但我在想這個問題:

是否有可能在一個瀏覽器期待一個圖像中檢測和阻止PHP腳本從如果是這樣運行?

我最初的嘗試是:

<?php 
    if(isset($_SERVER['HTTP_ACCEPT']) && $_SERVER['HTTP_ACCEPT'] != "" 
    && stripos($_SERVER['HTTP_ACCEPT'],"image/")) die("Insert error message here"); 
?> 

然而,儘管它在IE和Firefox,谷歌Chrome的工作完美(出於某種原因),包括「圖像/ PNG」作爲其接受頭的一部分,導致用戶無法加載任何「受保護」的頁面。

這麼清楚地表明這個想法在理論上是有效的,但實際上它是不可靠的。有沒有可靠的方法呢?

回答

1

這已被要求所有不平凡的變化是POST請求修補

好。 HTTP規範指出,GET請求不應導致不小的更改。

是否有可能檢測瀏覽器期待圖像,並阻止PHP腳本運行,如果是這樣?

不需要。您只需阻止人們向您的網站添加觸發POST請求的內容。

要阻止人們將內容添加到其他網站,使瀏覽器自動進行POST請求網站,實現CSRF protection

0

據我瞭解你的問題,你想保護自己免受CSRF。在wikipedia,你會發現一些想法。

如果你想保護自己免受CSRF,你建議的方式似乎沒有用......根據我的意見。