簡體   English   中英

POST 和 Cookie 一樣安全嗎?

[英]Is POST as secure as a Cookie?

在實現基於閃存的上傳器時,我們遇到了一個問題: Flash 沒有提供正確的 cookies 我們需要通過 POST 變量傳遞我們的 PHP Session ID。

我們提出並實施了一個功能性解決方案,檢查 POST PHPSESSID。

發布 Session ID 是否與在 cookie 中發送一樣安全?

可能的原因:因為兩者都在 http header 中,並且同樣可能由客戶偽造。 反對的可能原因:因為偽造 POST 變量比偽造 Cookie 更容易。

它和 cookie 一樣安全——偽造 POST 和 cookie 一樣容易。 這些都是通過簡單地在 cURL 中設置標志來完成的。

話雖如此,我認為您也有一個很好的解決方案。

如果您能夠從活動內容中獲取 session ID 以便發布它,這可能意味着您的 session cookie 未標記HttpOnly ,我們的一位主機聲稱這是防御跨站點腳本攻擊的好主意

相反,考慮一個基於 JavaScript 甚至基於刷新的上傳器監視器,它應該與其他所有東西很好地集成,cookie 可以是 HttpOnly。

另一方面,如果您的站點不接受第三方內容,跨站點腳本攻擊可能不會有任何問題; 在這種情況下,POST 很好。

我認為通過 GET 發送它也可以正常工作,因為你在 HTTP 請求中偽造任何東西(使用 curl 甚至閃存)。 重要的是在你的 cookie/post/get 參數中加密了什么,以及它是如何在服務器端加密和檢查的。

真的,如果您擔心哪個更容易偽造,那么您擔心的是錯誤的事情。 簡而言之,對於有經驗的攻擊者來說,兩者都是微不足道的。 您可能會通過選擇一個而不是另一個來避開“腳本小子”,但這些人並不是您需要擔心的人。 您應該問自己的問題是“您對偽造身份的人有什么防御措施?” 它會發生。 如果您的 id 未加密且容易猜到,那就有問題了。 它會被黑客入侵。 既然你問哪個更安全,我會說你很擔心。

還有一點需要考慮,因為你的應用程序是 flash,它很容易被修改(就像 javascript HTML 代碼一樣),因為編譯的代碼在攻擊者機器上。 他們可以查看二進制文件並弄清楚代碼是如何工作的,以及它需要從服務器檢索什么。

POST data is not an HTTP header, but it is sent as part of the TCP stream which makes it just as easy to read/forge as an HTTP header. 如果你截獲了一個 HTTP 請求,它看起來像這樣:

POST /path/to/script HTTP/1.1
Host: yourdomain.com
User-Agent: Mozilla/99.9 (blahblahblah)
Cookie: __utma=whateverthisisacookievalue;phpsessid=somePHPsessionID

data=thisisthepostdata&otherdata=moredummydata&etc=blah

正如其他人所說,POST 和 cookies(以及 GET 數據,即查詢字符串)都很容易被欺騙,因為它們都只是同一個 HTTP 數據包中的文本。

我只想重申 Cookie 和 Post 都同樣不安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM