загрузка и проверка файлов плохо вписывается в абстрактную модель, поэтому модель обычно содержит только самые общие проверки - передан ли файл и его тип, а непосредственная загрузка и фильтрация файла выполняется в отдельном контроллере/хэлпере. Из-за ограничений по размеру и кол-ву файлов на виртуалках все массовые решения грузят файлы по одному - вначале проряются данные и наличие файлов и создается запись в базе, а уже потом по ее idшнику догружаются файлы.
все те же что и для любого сайта - sql иньекции в первую очередь. но поверь человеку разрабатывающему гос. проекты - если даже мои никто не пытается взломать, то твои вообще нахрен кому сдались.
это разные вещи - чтобы заходить по OAuth через твое приложение оно должно получить подтвержение - client_id/client_secret используются для формирования запроса для пользователей. В общем читай спецификацию OAuth2 или описание к гугловским адаптерам https://code.google.com/archive/p/oauth/
nodejs генерит js, apache(или что там у тебя)/php - php. максимум что ты можешь на dev - это использовать менеджер для сборки(phing, vagrant , ant) и запускать сервера вместе.