2014-01-14 3 views
4

Есть ли защищенный способ получить «строку пути» от пользователя, сгенерировать его в корневом каталоге, избегая обхода каталога? какой-то «обеспеченный mkdir()».есть ли защищенная «mkdir()» аналогичная функция в c?

позволяет сказать, корневой каталог> IS- "C:/тест" избежать ситуации, которую пользователь -> "C:/тест /../ окна/abc.exe" спасибо очень много.

+1

+1 Увидев все проблемы безопасности, которые у нас есть сегодня, должен быть один. –

+2

Проблема, с которой вы столкнулись, заключается в том, чтобы решить, какие папки находятся вне пределов, относительный путь «..» является приемлемым и безопасным во многих ситуациях. Это больше проблема для администраторов ограничить доступ к системным папкам (которые вы можете сделать и в Windows!). Я предполагаю, что эта проблема началась с ранних версий окон, которые по умолчанию устанавливались пользователями по умолчанию. – Skizz

ответ

1

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

Если вы работаете под * nix, я бы посоветовал использовать chroot (или эквивалент) для ограничения доступа к файловой системе, к сожалению, Windows этого не поддерживает (за исключением, возможно, как части управляемых приложений Windows 8).

Предполагая, что вы собираетесь самостоятельно его дезинфицировать, не забывайте, что так же, как и обозначения «..», есть также точки соединения (редко используемые реализации символических ссылок ntfs).

+0

Еще лучше начать проект OSS, который собирает такие «невинные» библиотечные функции и обеспечивает безопасность. –

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