Это известная ошибка, затрагивающая iOS 8.x и 9.x. Вы можете обойти это, создав /usr/lib/swift
каталоги в соответствующем корне времени выполнения симулятора.
Время загрузки загруженного симулятора находится в /Library/Developer/CoreSimulator/Profiles/Runtimes
.
Например, чтобы исправить симулятор iOS 9.3:
sudo mkdir '/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 9.3.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift'
Да. Все, что я должен был бы сделать, отправить "/etc/passwd" или "includes/dbconnection.php" (или что-либо) к Вашей странице, и в зависимости от какой //do some stuff
на самом деле, я мог возможно удалить, изменить или считать уязвимую информацию. file_exists
сама функция не сделает ничего, что Вы не ожидали бы, но можно ожидать злонамеренных пользователей, использующих логику.
Всегда санируйте свой ввод данных пользователем. Всегда. Если Вы ожидаете только захватывать файлы от одной конкретной папки, не позволять.. или / во входе
Отдельно, это выглядит довольно безопасным, но это могло использоваться для раскрытия информации. Это могло позволить нападению проверять на присутствие (или отсутствие) конкретных файлов (например. /etc/passwd
, /proc/*
, и т.д.).
Таким образом в этом примере, необходимо гарантировать это $_POST['brochure']
санирован сначала, чтобы только принять исходные данные тот потенциально правильный файл соответствия имена. Отбросьте любой вход, который содержит ..
, или это запускается с a /
.
Другие функции могли иметь потенциально намного худшие побочные эффекты...
builtins PHP не сделает "неожиданных" вещей на плохом входе (например, file_exists("foo; rm -r /")
скажет "нет, файл 'нечто; комната-r /' не существует")... И если они делают, это - ошибка, которую можно зарегистрировать против Пехлеви.
Конечно, это не мешает людям использовать Ваш код (например, file_exists("../hidden/shell.php")
), таким образом, Вы должны все еще (на самом деле, Вы всегда должны) быть осторожным при раздавании предоставленного пользователями входа.
Необходимо действительно иметь привычку фильтровать весь вход, но Вы хотели бы проверять http://www.hardened-php.net/, который распределяет укрепляющийся патч и 'Suhosin', который находится во многих двоичных дистрибутивах по умолчанию (OpenSUSE, Mandriva и Debian/Ubuntu)
мог 'брошюра' = '../../../../.htaccess'
это - интересный вопрос.
Apache на моем компьютере установлен отрицать перечислять или просматривать .ht* и .ini и .php.inc файлы, но у Вас есть я взволнованный теперь.
То, что необходимо спросить, является ответом. Это не безопасно.
file_exists()
не так плохо как другие, но если Вы не видите исходный код для функции, Вы передаете данные и знаете, как это обрабатывает ввод данных пользователем, затем Вы рискуете.
Это не хорошая идея передать нефильтрованные пользовательские данные в любую php команду файловой системы. Ключ с безопасностью - то, что Вы никогда не позволяете вход контекстному переключению. В этом случае Ваша минимальная санитизация должна удалять символы пути.
Всегда принимайте враждебного пользователя и худшее, которое они могли возможно сделать, если бы они видели Ваш исходный код.
За эти годы уязвимости системы обеспечения безопасности были найдены в источнике самого PHP, такие, что функции были чувствительны к нападениям стиля bufferoverflow, Suhosin является проектом, который исправил PHP для удаления части риска.
Я не доверял бы тем функциям вообще.
Это может окончательно звучать поразительно, однако когда я очень внимательно слежу за людьми и их качеством кода C в фиксациях, возвращается, и т.д. за прошлые восемь лет, я нахожусь только в постоянном страхе.
То, что происходит со строкой базы данных, - то, что она могла получаться и использоваться где-нибудь, который имеет уязвимость. Для ответа на Ваш вопрос думайте об удалении шага, где Вы храните строку и затем получаете ее. Вы используете его сразу же, и у Вас есть те же риски.