2016-03-11 12 views
1

Я столкнулся с ситуацией, когда файлы загружаются на сервер, у которого есть непечатаемые символы UTF-8 в имени файла. Я знаю, как исправить имена, но я хотел бы иметь возможность создавать файлы для тестирования, и я также хотел бы понять, как люди могут случайно (или намеренно) делать это в первую очередь.Как создать файл с непечатаемым символом в имени?

Итак, с учетом того, каковы возможные способы, которыми человек может создавать имена файлов, в которых есть непечатаемые символы? В этом случае это DELETE (U + 007F), но меня интересует любой непечатаемый символ.

Я ищу методы, которые легко выполнить намеренно в командной строке (linux, unix и DOS), но также и для способов, которыми человек может случайно это сделать с помощью командной строки или графического интерфейса (Windows, OSX, Linux).

+0

Можете ли вы расширить о том, как они время закачанный? Причина, о которой я прошу, заключается в том, что если вы используете HTTP, например, имя файла обычно будет предоставляться как часть запроса с использованием [multipart/form-data] (https://www.w3.org/TR/html401/interact /forms.html#h-17.13.4.2). Браузер будет использовать имя файла выбранного файла. Но если вас интересуют векторы злоупотреблений, то вы должны заметить, что предоставленное значение может быть любым (даже именем, которое не может существовать в данной файловой системе), если запрос построен за пределами браузера. –

+0

@nj_ это хороший момент. В этом случае файлы загружаются через HTTP с использованием multipart/form-data, предположительно через браузер клиента. Меня больше интересуют случайные векторы, чем векторы злоупотреблений, но я был бы рад узнать о возможных сценариях. – thomij

ответ

2

На Un * х/Bash, вы можете создать файл, используя байт литералов, выполнив:

$ touch `echo -e "\x7f.txt"` 

Вы можете проверить его:

$ ls -b 
\177.txt