Думаю, вы не можете сделать поле файла липким.Даже если Rails предоставляет начальное значение, большинство браузеров просто проигнорируют его (или иначе, некоторые умные люди могут установить для файла по умолчанию значение /etc/passwd
, и если вы не обращаете внимания, в следующий раз вы узнаете, что ваш ящик укоренен.
Лучшее, что я могу придумать, это установить флаг, который говорит, что файл уже загружен, поэтому, если пользователь не выбирает другой, используйте тот, который уже отправлен в последнем запросе.
ОБНОВЛЕНИЕ: Вы будете удивлены, как много людей вообще не имеют навыков безопасности. Я знаю людей, использующих браузер как root
. Однако, «почему» не совсемпроблема - важный момент, который я пытался подчеркнуть, заключается просто в том, что это не вина Rails, скорее всего, проблема заключается в поведении браузера.
Вы можете прочитать статью , в которой говорится, что лучше, чемЯ могу ...
ОБНОВЛЕНИЕ 2:"Ваша коробка имеет права root" должна сказать "поле пользователя имеет права root". Я описываю следующий сценарий: пользователь отправляет файл innocent.txt
и капчу. MaliciouСервер отвечает, что CAPTCHA неверно, введите его снова, и скрытно изменяет файл с innocent.txt
на ~/.ssh/id_rsa
.Пользователь не смотрит на поле файла (он уже указал правильное значение), поэтому просто повторяет CAPTCHA и нажимает submit.Теперь на сервере есть личный SSH-ключ пользователя.