Безопасно ли хранить пользовательский ввод в сериализованном массиве PHP?

#php #security #serialization

#php #Безопасность #сериализация

Вопрос:

Я беру пользовательский ввод и записываю его в массив:

 $array = (
   'name'=>$_GET['some name'],
   'text'=>$_GET['some text']
);
 

Я сохраняю эти данные:

 file_put_contents($myFile,serialize($array));
 

Мне интересно, поскольку текст и имя генерируются пользователем, какие проблемы безопасности я здесь рассматриваю.

Комментарии:

1. «Обезопасить» каким образом?

2. Мне интересно, может ли пользователь внедрить что-нибудь вредоносное на данный момент.

3. @Howard Zoopaloopa: они не могут (если только в serialize / нет ошибки unserialize , о которой я никогда не слышал)

4. @zerkms, вот что мне было интересно. Я понимаю, что если кто-то может переписать или получить доступ к этому файлу после его записи, могут возникнуть проблемы.

5. @HowardZoopaloopa Или создал файл заранее; запись в файл с file_put_contents помощью не приведет к повторному созданию существующего файла или применению каких-либо стандартных umasks / разрешений. (Кроме того, плохо настроенная или уже скомпрометированная система может применить небезопасную umask при создании.)

Ответ №1:

Если доступ на запись к файлу ограничен только вашим скриптом — это совершенно безопасно.

Комментарии:

1. Что ж, это освежает. Я отмечу вас правильно через (10) мин.. Спасибо.

2. @user2864740: … это другая история. Речь шла бы об утечке конфиденциальной информации (и я уверен, это очевидно для всех).

3. Вот почему этот ответ вводит в заблуждение — поскольку он не является «совершенно безопасным». (Я бы сказал, что вся концепция этого ответа «очевидна для всех», но если бы это было так, то такого вопроса / ответа не существовало бы.)

4. @user2864740: вопрос заключается в безопасности операции сериализации / десериализации. Что является безопасным (если только не существует unserialize уязвимости функции нулевого дня)

5. Заголовок вопроса звучит так: » Безопасно ли хранить пользовательский ввод в сериализованном массиве PHP?» Ни разу ОП не направлял вопрос на эксплойт в процессе десериализации или даже на использование данных.