我需要將結構化數據存儲在cookie中。
某些目錄頁面的最愛。數據是{ {id,type} , {id,type} , ... }
在我的代碼我需要把它放回到一個數組。所以我使用unserialize()
函數來恢復數據。
有沒有辦法來防止對象注入?反序列化函數的任何替代方法?如何避免cookie的對象注入?
回答
有沒有一種方法,以防止物體注入
當你反序列化對象時,PHP會調用這個類的定義__wakeup
方法(這不是存儲在cookie中,但在你的PHP類文件在服務器上)。
有沒有可能有人更改序列化對象的類和猜測正確造成__wakeup
函數來執行某些任務嗎?是。通常__wakeup
函數將簡單地重新連接到一個資源,所以這可能會或可能不是一個大問題,但爲什麼會冒這個風險呢?只需將數組存儲爲JSON並使用json_encode($yourdata)
並將其返回即可json_decode($cookiedata, true)
只要存儲在客戶端的數據不會構成安全風險(即顯示敏感信息),就沒有問題。存儲用戶的收藏夾可能適合於此,特別是如果它是一個高流量站點,並且您不想爲此類型的數據執行數據庫提取或長時間會話。
謝謝。由於某種原因,我沒有想過使用json_decode: - ? – yossi
我正在考慮將cookie信息進行加密,以防止用戶知道到底是他/她編輯
好吧,如果你有一個定義的數組你應該如何結構的方式看,然後只要確保你反序列化的字符串真的是一個數組,當你迭代它時,只需檢查值類型(id - > int,type - > string)。另外,我認爲json_encode在你的數據情況下會更好,它的體積更小,解碼更快(並且你可以在客戶端使用它)。
這一切都不停止用戶編輯餅乾 – 2013-09-24 22:35:13
沒有與任何的cookie搞亂停止客戶端。如果你想確保這些數據沒有被客戶端編輯過,請保存在會話中。 –
如果您不希望用戶可能修改數據,那麼不要首先將數據提供給用戶。使用$_SESSION
,一個數據庫,或將信息寫入服務器上的文件。
- 1. 避免SQL注入
- 2. 如何避免codeigniter中的sql注入
- 3. 如何避免easyhook多次注入dll?
- 4. 如何使用sp_executesql避免SQL注入
- 5. MongoDB如何避免SQL注入混亂?
- 6. 使用全局對象避免角度依賴注入
- 7. 避免MySQL注入Zend_Db類
- 8. Spring(MVC)SQL注入避免?
- 9. Guice:避免懶惰注入
- 10. 避免MySQL注入和XSS
- 11. 避免cookie編輯
- 12. 如何避免不設置到對象
- 13. 如何避免在NSArray中插入重複的對象?
- 14. YII一堆插入 - 避免SQL注入
- 15. Zend公司Db的避免SQL注入
- 16. 避免注入MongoDB和PHP的風險
- 17. PHP - MySQL的避免SQL注入
- 18. 避免代碼注入與MongoDB的
- 19. 避免對「專注」或「的onclick」事件
- 20. 測試春:避免注射到嘲笑的對象與
- 21. 避免在NSManagedObjectContext中註冊的對象堆積(memleak)
- 22. ObjectMapper避免註釋
- 23. 如何避免修改ArrayList對象,即避免添加和刪除其內容?
- 24. 如何使避免注入的SQLite查詢?
- 25. 如何避免網址中的代碼注入
- 26. 如何在沒有PreparedStatements的情況下避免SQL注入
- 27. 如何清理php中的數據以避免SQL注入?
- 28. 如何避免用於依賴注入的衝突PHP特性
- 29. 如何避免JavaScript文本字段中的SQL注入?
- 30. 如何避免Django中的依賴注入?
你確定cookie是存放這個的地方嗎? (提示:可能不是) – 2013-09-24 22:24:28