2012-04-05 49 views
0

我目前正在構建自己的登錄腳本,並且注意到大多數將會話ID或類似登錄頁面追加爲get變量。爲什麼PHP登錄腳本使用GET ID登出?

他們爲什麼這樣做?

只是破壞logout.php上的會話並且不傳入任何ID,這不僅僅是安全嗎?

+1

你確定他們只在退出時執行此操作嗎?大多數網站將sessid附加到獲取請求上,以確保用戶的會話在他們禁用(或不允許)cookie的情況下永久保存。 – 2012-04-05 16:10:52

+0

如果它不僅僅是註銷頁面,還包括所有頁面,那麼這是緩解跨站點腳本僞造風險的措施。在這裏瞭解更多信息:http://en.wikipedia.org/wiki/Cross-site_request_forgery – Sahand 2012-04-05 16:11:50

回答

1

我想不出爲什麼他們需要添加一個get param只有在註銷時纔有任何理由。

向URL添加一些令牌可以用於prevent abuse或當會話ID被添加到url以使cookie在客戶端出現disbled時也可以工作。

更新

linked article

但是,該文件的快速視圖顯示了一個相當有趣的問題。它要求通過登錄計算的簽名呈現給用戶以提交到登錄頁面。 推測這是作爲CSRF保護的一種形式完成的。 但是,它也泄漏了接收會話給用戶所需的數據。因此,我們來到了我們11 漏洞至今:

UPDATE2

我問ircmaxell in chat。而且這是因爲CSRF保護。

+0

示例將是這個人正在審查的一個: - http://blog.ircmaxell.com/2011/08/security-review -creating-secure-php.html – 2012-04-05 16:15:27

+0

@StephenAdrianRathbone他在[聊天](http://chat.stackoverflow.com/rooms/11/php)中閒置,爲什麼你不直接去源:) – PeeHaa 2012-04-05 16:22:56