2016-12-31 2 views
0

Например:»»> SOMETEXT < .txtМожно ли сохранить файл с именем, содержащим ««>() =,

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

+0

В какой системе вы работаете? На какой серверной платформе вы нацеливаетесь? – Dai

+0

^На ваш вопрос не хватает подробностей. Пожалуйста, обновите свой вопрос. – thedeliciousmuffin

ответ

2

Windows (но не обязательно NTFS) запрещает следующие символы в именах файлов: \/:*?"<>|, что исключает символы, необходимые для большинства атак XSS (<>"). Windows также запрещает зарезервированные имена файлов устройств DOS, такие как COM, NUL и т. Д. (Хотя можно создать файл с этим именем, это невозможно сделать с использованием обычного API-интерфейсов Win32).

Linux (и UNIX и POSIX в целом) является более снисходительным: каждый символ разрешен в имени файла для / (каталог разделителя символов) и \0 (NULL, сырой ноль), за исключением.

Я предполагаю, что небезопасное веб-приложение, которое сохраняет загруженные файлы с именами файлов без изменений и без дезинфицированных имен файлов, вероятно, будет поддаваться атаке XSS - если они также не будут осторожны, чтобы никогда не выводить HTML-код.

+0

Hm так что это невозможно сохранить, как как имя файла? Потому что windows/unix не позволяет использовать эти символы? Существует ли другой способ, что имя файла не имеет «правила», как оно сохраняется? –

+1

@TiZaLjubavNisiRodjena Некоторые приложения (в том числе некоторые из них я разработал сам) хранят файлы в базе данных или «разгруженные» хранилища, такие как Azure Blob Storage, где имена файлов хранятся как произвольные строки без каких-либо ограничений, но я всегда предоставляю пользовательские значения после ' HtmlEncode() 'для предотвращения XSS в любом случае :) – Dai

0

Windows запрещает эти символы. Но вы могли бы попробовать Azure Blob Storage

 Смежные вопросы

  • Нет связанных вопросов^_^