Мне нужно хранить структурированные данные в файле cookie.
избранные страницы некоторых каталогов. данные { {id,type} , {id,type} , ... }
В моем коде мне нужно вернуть его в массив. поэтому я использую функцию unserialize()
для восстановления данных.
Есть ли способ предотвратить инъекцию объекта? любая альтернатива для функции несериализации?Как избежать инъекций объектов из файлов cookie?
ответ
Есть ли способ, чтобы предотвратить введение объекта
Когда вы десериализируются объект, PHP будет вызывать метод __wakeup
в определении класса (это не хранится в куки, но в вашем PHP класс файл на сервере).
Возможно ли, чтобы кто-то изменил класс сериализованного объекта и правильно угадал, вызывая функцию __wakeup
для выполнения какой-либо задачи? Да. Обычно функции __wakeup
просто соединяются с ресурсом, поэтому это может быть или не быть большим делом, но зачем рисковать? Просто сохраните массив как JSON с json_encode($yourdata)
и верните его с помощью json_decode($cookiedata, true)
До тех пор, пока данные, хранящиеся на стороне клиента, не представляют угрозу безопасности (т. Е. Обнаруживают конфиденциальную информацию), это нормально. Сохранение избранных пользователей может быть уместным для этого, особенно если это высокий сайт трафика, и вы не хотите выполнять выборку базы данных или длительные сеансы для этого типа данных.
спасибо. по какой-то причине я не думал об использовании json_decode: -? – yossi
То, как я думаю о том, чтобы зашифровать информацию печенья, чтобы запретить пользователю знать, что, черт возьми, он/она редактирования
Ну, если у вас есть определенная структура, как ваш массив должен посмотрите, тогда просто убедитесь, что строка, которую вы несериализуете, действительно является массивом, когда вы повторяете ее, просто проверьте тип значения (id -> int, type -> string).
Плюс, я думаю, что json_encode будет лучше в вашем случае данных, он будет меньше по размеру и быстрее в декодировании (и вы сможете работать с ним на стороне клиента).
Ничто из этого не останавливает пользователя, редактирующего файл cookie –
. Ничто не мешает клиенту испортить любой куки-файл. Если вы хотите быть уверены, что эти данные не были отредактированы клиентом, сохраните его в сеансе. –
Если вы не хотите, чтобы пользователь мог изменять данные, не предоставляйте данные пользователю в первую очередь. Используйте $_SESSION
, базу данных или напишите информацию в файл на своем сервере.
- 1. Уязвимость для инъекций php cookie?
- 2. Как избежать инъекций mysql с использованием PDO
- 3. Как избежать инъекций SQL в Rails 3
- 4. Чтение файлов cookie cookie из командной строки
- 5. Как избежать перекомпиляции файлов заголовков
- 6. Какой лучший способ избежать PHP-инъекций?
- 7. Как обрабатывать несколько файлов cookie из заголовка Set-Cookie?
- 8. Как избежать объектов HTML?
- 9. Как избежать дублирования объектов?
- 10. Получение файлов cookie из поддомена
- 11. Как удалить информацию из файлов cookie?
- 12. Как получить значение сеанса из файлов cookie
- 13. Как я могу защитить свой сайт от инъекций (редактирование файлов cookie)
- 14. Как избежать блокировки файлов
- 15. Избегайте редактирования файлов cookie
- 16. Как избежать .pyc-файлов?
- 17. Как отличить дубликаты файлов cookie?
- 18. Как избежать SQL-инъекций и XSS-атак, когда на PHP?
- 19. Как я могу избежать SQL-инъекций в моем коде ниже?
- 20. Как избежать анонимных объектов C++
- 21. Написание файлов cookie из CookieContainer в хранилище cookie IE
- 22. Извлеките определенный файл cookie из файлов cookie в Javascript
- 23. Создание файлов заголовков из файлов объектов
- 24. формы django получают значение из файлов cookie
- 25. Piwik: извлечение idvisitor из третьих файлов cookie?
- 26. Чтение файлов cookie из других доменов
- 27. JQuery: извлекать объект из файлов cookie
- 28. Чтение файлов cookie из запроса Splash
- 29. Отобразить 3 значения из массива файлов cookie?
- 30. ASP.NET: чтение файлов cookie из другого приложения
Вы уверены, что cookie - это место для хранения этого? (подсказка: возможно, нет) –