Как отказаться от загрузки файлов до завершения передачи данных? - PullRequest
2 голосов
/ 27 февраля 2011

Я создаю приложение Rails с функцией загрузки файлов, и только авторизованные пользователи могут загружать файлы. Форма загрузки файла находится только в зоне для участников, но так как достаточно просто захватить URL загрузки и попытаться опубликовать данные из скрипта, я обеспокоен неавторизованными отправками файлов. Конечно, загрузка будет отклонена, но только после того, как передача данных будет завершена и ценная пропускная способность будет потрачена впустую. Как я могу отклонить загрузку неаутентифицированных файлов до того, как вся форма будет отправлена ​​на мой сервер? Поскольку я не могу контролировать пользователей с помощью сценариев или CURL, для этого потребуется какое-то решение на стороне сервера. Я ценю любые отзывы. Спасибо.

1 Ответ

0 голосов
/ 27 февраля 2011

Это простой псевдокод того, что вы могли бы сделать. Фильтр before_filter выполняется до выполнения действия (upload_form_action - страница формы загрузки, а upload_action - страница, получающая файл

allow_to_upload должен быть помощником / функцией / и т. Д., Который возвращает истину / ложь, если он ложен, он сделает 403 несанкционированными, в противном случае он просто будет экономить.

before_filter :check_upload, :only => [:upload_form_action, :upload_action]

protected
  def check_upload
    render :nothing, :status => 403 and return unless allowed_to_upload
  end
...