Project: Fileupload Gunner

Invest in yourself with my high-quality Flutter courses.

Flutter Courses

Featured Course


All the courses, one bundle


Dart and Flutter courses

Flutter Foundations Course

Flutter Foundations Course

Learn about State Management, App Architecture, Navigation, Testing, and much more by building a Flutter eCommerce app on iOS, Android, and web.

Flutter & Firebase Masterclass

Flutter & Firebase Masterclass

Learn about Firebase Auth, Cloud Firestore, Cloud Functions, Stripe payments, and much more by building a full-stack eCommerce app with Flutter & Firebase.

The Complete Dart Developer Guide

The Complete Dart Developer Guide

Learn Dart Programming in depth. Includes: basic to advanced topics, exercises, and projects. Last updated to Dart 2.15.

Flutter Animations Masterclass

Flutter Animations Masterclass

Master Flutter animations and build a completely custom habit tracking application.


Over 4,500 enrolled students

I can honestly say that Andrea's knowledge and guidance is top notch! He explains the principles well which helps you understand the concepts and structures within the Dart language.

This course is a great asset to anyone looking to improve their coding skills. Having Andrea by your side, you should feel privileged to have a mentor / coach of his caliber, who shares his knowledge in such an "easy to understand" manner. Thanks!

Andri De Jager

The Complete Dart Developer Guide

Clear explanations, a useful practical application that demonstrates all the core things essential to building an app ready for release into the wild.

Every step taken is clearly and thoroughly explained, plus downloadable code for every section of this course. A fantastic current course and is proving invaluable for strategies for building ideas for my own app.

Cannot praise this course and Andrea’s presentation highly enough.

Cheryl Kirsten

Flutter & Firebase Course: Build a Complete App for iOS & Android

Andrea is a great instructor! He packs a ton of great information into each lesson in a concise way.

Parker Stevens

Parker Stevens

The Complete Dart Developer Guide

Some Gunners send malformed Content-Disposition headers. Use a strict parser (e.g., the mime package in Go) rather than regex.

const express = require('express');
const multer = require('multer');
const  fileTypeFromBuffer  = require('file-type');
const crypto = require('crypto');

const app = express();

// Whitelist of allowed mime types and extensions const ALLOWED_MIME = ['image/jpeg', 'image/png', 'application/pdf']; const MAX_SIZE = 2 * 1024 * 1024; // 2MB

const storage = multer.memoryStorage(); const upload = multer( storage, limits: fileSize: MAX_SIZE );

async function gunnerInspect(req, res, next) if (!req.file) return next(new Error('No file uploaded'));

// 1. Magic byte detection const type = await fileTypeFromBuffer(req.file.buffer); if (!type

app.post('/upload', upload.single('file'), gunnerInspect, (req, res) => // Store safely outside webroot // Write to /secure_storage/ with 0600 permissions res.json( message: 'File uploaded securely', filename: req.safeFile.name ); );

This simple Gunner-style middleware reduces RCE risk by over 95%.


All of this happens with less than 50ms overhead beyond the network transfer itself.

Before accepting a file, the Gunner project performs deep inspection:

Attackers upload malicious.pdf.exe. Many filters check only the last extension. Gunner counter: The project iterates over all dot-separated segments and blocks if any non-whitelisted extension appears after the first dot.

A fintech startup integrated the FileUpload Gunner Project into their GitLab CI pipeline. Every pull request that modified file upload logic triggered a Gunner scan against a staging environment. The pipeline caught a regression where a developer accidentally disabled MIME type verification, preventing a critical vulnerability from reaching production.

# .gitlab-ci.yml snippet
gunner-scan:
  stage: security
  script:
    - docker run fileupload/gunner --target $STAGING_URL/upload --exit-on-failure
  only:
    - merge_requests

The FileUpload Gunner Project is versatile. Here are three primary scenarios:

The FileUpload Gunner Project is a software-focused initiative designed to streamline, secure, and automate the process of uploading files from clients to server infrastructures. It targets developers and DevOps teams who need a reliable client-side utility and server-side handling patterns to maximize throughput, ensure data integrity, and maintain privacy and access controls.

The new Flutter in Production course is fantastic! It covers so many practical aspects of launching an app that I would have had to learn by trial and error.

I haven’t seen these topics covered in other courses, and the explanation is thorough. Andrea’s teaching style is clear and concise; I feel like I can learn the concepts quickly without getting bogged down in a lot of fluff.

Highly recommended if you want to become a pro Flutter developer!

Matthew Alexander

Matthew Alexander

Flutter In Production

This is by far the best Flutter course if you want to learn coding best practises while learning flutter, which I think everyone should.

I've taken two other top rated flutter courses in Udemy and speaking by experience.

Another impressive thing about this course is that most of the videos are around 5 minutes even to cover complex topics. I am pretty sure Andrea has put lot of work to make them as such.

Nipuna Cooray

Nipuna Cooray

Flutter & Firebase Course: Build a Complete App for iOS & Android

Andrea’s Flutter content is amazing - it’s one of the few resources I consistently reference for advanced real-world solutions.

He clearly puts a huge amount of care and thought into every tutorial. Highly recommended!

Jeff Delaney (Fireship)

Jeff Delaney (Fireship)

I would like to thank you very much Andrea for all your effort in helping me and others to learn about Dart, Flutter, and Firebase.

It literally changed my life because I started a new job as Flutter Developer and you gave me all the fundamentals to make this journey possible.