Пожалуйста, имейте в виду, кондуктор не сообщать об ошибках [0], он сообщает предупреждения. Он генерирует предупреждения о потенциальных проблемах в приложении. Другими словами, он предупредит вас о вещах, которые вы, как человек, будете судить не о реальных проблемах. Практически невозможно, чтобы инструмент обеспечения чистого статического анализа никогда не сообщал ложные срабатывания.
Вы действительно не задавали вопрос, поэтому я предполагаю, что вы либо хотите знать, почему было предупреждено об этом предупреждении, и/или как его исправить. Если ни один из них не является вашим вопросом, пожалуйста, уточните.
Brakeman знает AssetFile
является моделью (скорее всего, потому, что она определена в каталоге app/models
). Он знает, что send_file
разрешает доступ к файловой системе. Когда он видит send_file AssetFile.find(params[:id]).uploaded_file.path
, он интерпретирует это как атрибут модели (вероятно, значение из базы данных), которое может быть под контролем пользователя. Поэтому он генерирует предупреждение File Access
, позволяющее вам знать, что код может позволить злоумышленнику получить доступ к произвольным файлам на сервере.
Я полагаю, следующий вопрос: почему Brakeman сообщает об этом, когда вы используете paperclip
, и поэтому это, вероятно, безопасно. Хорошо, потому что Brakeman ничего не знает о paperclip
. Однако это вызвало много раз, поэтому я рассмотрю, безопасно ли это или нет, и посмотрите, как это использовать.
Для второго вопроса о том, что с этим делать - вам не нужно ничего делать. В то время как ноль предупреждений Бракемана является благородной целью, всегда будут ложные срабатывания. Для этого конкретного предупреждения вы ничего не можете сделать, чтобы этот код казался более безопасным для Brakeman без изменения самого Brakeman.
Если целью этого сообщения было на самом деле сообщить о ложном положительном результате, было бы лучше, чтобы open an issue for Brakeman.
[0] Я предполагаю, что технически он сообщает свои собственные ошибки в таблице исключений, которые можно увидеть на скриншоте. Вероятно, было бы полезно сообщить об этом проекту Brakeman, чтобы узнать, могут ли они быть исправлены.