2012-11-21 77 views
0

我正在實現一個消息系統(如果您願意,可以使用私人消息傳遞),並且希望能夠通過文本鏈接顯示用戶所擁有的消息列表,因此我不需要按鈕即可打開它。 message_id(數據庫中的唯一值)將通過URL傳遞。 (類似www.example.com/message/view/16).Assuming我檢查以確保用戶標識符的會話與消息發送到的用戶標識符相匹配,是嗎?爲了讓它更安全,我可以追加一個隨機數並將其設置爲會話,然後在查看時檢查它。而不是通過URL或POST變量傳遞值?

我應該忘記這個想法,只是堅持提交按鈕來查看消息?

回答

4

POST請求不會提供比GET請求更多的安全性:任何半分式Web調試工具都可以僞造POST請求。你應該永遠不要相信用戶輸入的數據。始終仔細檢查授權以確保安全!

那就是說,GET request semantics match what you're trying to do here

HTTP標準說明GET請求應該是可重複的,不會有任何不重要的後果。例如,對於具有GET請求的數據(並且可能執行諸如遞增計數器之類的小事情,因爲這些是相當微不足道的結果),這是足夠的。實際上,GETHEAD是被認爲是「安全」的兩種請求方法。

另一方面,POST請求預計會有不平凡的後果,如發送消息或下訂單。你不想意外執行兩次的東西。現在大多數瀏覽器也通過警告用戶在重新加載頁面時會引起POST請求被再次執行來尊重這一點。

+0

我應該還是一個隨機字符串追加到尾部,集會議,並在查看時匹配會話/字符串? – user1104854

+0

@ user1104854,我建議用於存儲會話ID的Cookie。隨機字符串會阻止人們合法保存URL。你真正想要的是確保閱讀消息的人真的是消息所屬的人:你應該通過驗證該人的身份與消息的接收者相同來做到這一點,並且你不應該基於數據通過瀏覽器。 (還要記住,_even cookies_可以僞造。) – zneak

+0

這聽起來像它會工作得很好。這不像我存儲銀行賬戶信息,所以cookie會完成這項工作。謝謝! – user1104854

1

使用GET值查看郵件被更好的主意,因爲假設用戶停留登錄,這將讓他們的書籤信息等