The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (PHP)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Как в PHP полностью корректно экранировать для Shell'а?, Кровосток (ok), 20-Июл-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


2. "Как в PHP полностью корректно экранировать для Shell'а?"  +3 +/
Сообщение от Ann None (?), 20-Июл-22, 16:44 
слава костылям и велосипедам!

п.с. как только ни извратятся, лишь бы имя файла в кавычки не брать...

Ответить | Правка | Наверх | Cообщить модератору

4. "Как в PHP полностью корректно экранировать для Shell'а?"  +2 +/
Сообщение от Кровосток (ok), 20-Июл-22, 16:53 
> слава костылям и велосипедам!
> п.с. как только ни извратятся, лишь бы имя файла в кавычки не
> брать...

Т.е. прямо вот можно файл с абсолютно любым именем просто оформить в виде

ln -s '$srcFile' '$dstFile' 

?

Ответить | Правка | Наверх | Cообщить модератору

6. "Как в PHP полностью корректно экранировать для Shell'а?"  +2 +/
Сообщение от Кровосток (ok), 20-Июл-22, 16:55 
> слава костылям и велосипедам!
> п.с. как только ни извратятся, лишь бы имя файла в кавычки не
> брать...

Спасибо за мысль, подумаю над этим вариантом.

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

7. "Как в PHP полностью корректно экранировать для Shell'а?"  +2 +/
Сообщение от ыы (?), 21-Июл-22, 11:23 
> слава костылям и велосипедам!
> п.с. как только ни извратятся, лишь бы имя файла в кавычки не
> брать...

А если в имени файла уже есть и пути, и кавычки, и точка  с запятой?

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

8. "Как в PHP полностью корректно экранировать для Shell'а?"  +1 +/
Сообщение от Кровосток (ok), 21-Июл-22, 14:33 
>> слава костылям и велосипедам!
>> п.с. как только ни извратятся, лишь бы имя файла в кавычки не
>> брать...
> А если в имени файла уже есть и пути, и кавычки, и
> точка  с запятой?

Вообще чисто с практической точки зрения, попробую сегодня создать такое имя и с ним проверить кавычки на месте. Достаточно ли будет например в исходном имени (пути) заменить все ' на \' и оставить неэкранированные лишь те которые обрамляют аргумент, т.е.

ln -s 'ПУТЬ_\'ЭКРАНИРОВАНЫЙ\'_С_КАВЫЧКАМИ.jpg' 'КУДА_НАДО.jpg'

Но в моём конкретно случае, справедливости ради надо заметить, что в моём случае это будет структура каталогов, и дикий имён для них в БД не предполагается, т.к. это не "сырой пользовательский ввод", а сформированные условно мной данные. Поэтому на всякие совсем уж дикие спецсимволы я поставлю принудительную замену на _ и всё.

Ответить | Правка | Наверх | Cообщить модератору

9. "Как в PHP полностью корректно экранировать для Shell'а?"  +1 +/
Сообщение от Кровосток (ok), 22-Июл-22, 04:29 
> Вообще чисто с практической точки зрения, попробую сегодня создать такое имя и
> с ним проверить кавычки на месте. Достаточно ли будет например в
> исходном имени (пути) заменить все ' на \' и оставить неэкранированные
> лишь те которые обрамляют аргумент, т.е.
>
ln -s 'ПУТЬ_\'ЭКРАНИРОВАНЫЙ\'_С_КАВЫЧКАМИ.jpg' 'КУДА_НАДО.jpg'

Не сработало. Т.е. создав файл с кавычкой в имени, не удаётся это имя ни просто поместить в кавычки, ни даже поместить в кавычки, экранировав "именную" кавычку как \'

Короче видимо можно помещать в кавычки, но вот от жоских экранируемых символов лучше просто предварительно избавляться, чтобы их принципиально в именах файлов и каталогов не было.

Ответить | Правка | Наверх | Cообщить модератору

12. "Как в PHP полностью корректно экранировать для Shell'а?"  +1 +/
Сообщение от Ann None (?), 22-Июл-22, 16:26 
>[оверквотинг удален]
>> с ним проверить кавычки на месте. Достаточно ли будет например в
>> исходном имени (пути) заменить все ' на \' и оставить неэкранированные
>> лишь те которые обрамляют аргумент, т.е.
>>
ln -s 'ПУТЬ_\'ЭКРАНИРОВАНЫЙ\'_С_КАВЫЧКАМИ.jpg' 'КУДА_НАДО.jpg'

> Не сработало. Т.е. создав файл с кавычкой в имени, не удаётся это
> имя ни просто поместить в кавычки, ни даже поместить в кавычки,
> экранировав "именную" кавычку как \'
> Короче видимо можно помещать в кавычки, но вот от жоских экранируемых символов
> лучше просто предварительно избавляться, чтобы их принципиально в именах файлов и
> каталогов не было.

ln -s touch 'bloodstream'\''s file.txt' touch 'bloodstream'\''s link.txt'

Ответить | Правка | Наверх | Cообщить модератору

13. "Как в PHP полностью корректно экранировать для Shell'а?"  +1 +/
Сообщение от Ann None (?), 22-Июл-22, 16:29 
> ln -s touch 'bloodstream'\''s file.txt' touch 'bloodstream'\''s link.txt'

лишнего скопировал. так

ln -s touch 'bloodstream'\''s file.txt' 'bloodstream'\''s link.txt'

Ответить | Правка | Наверх | Cообщить модератору

14. "Как в PHP полностью корректно экранировать для Shell'а?"  +1 +/
Сообщение от Ann None (?), 22-Июл-22, 16:30 
да блин

ln -s 'bloodstream'\''s file.txt' 'bloodstream'\''s link.txt'

Ответить | Правка | Наверх | Cообщить модератору

15. "Как в PHP полностью корректно экранировать для Shell'а?"  +/
Сообщение от Кровосток (ok), 25-Июл-22, 16:53 
> да блин
> ln -s 'bloodstream'\''s file.txt' 'bloodstream'\''s link.txt'

Да, работает. Т.е. условно можно все одинарные кавычки в имени при необходимости заменять на '\'' ?

Спасибо за монетку в копилку знаний :)

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру