Você deve primeiro entender que a segurança é um processo, e você precisa ter isso em mente em todos os estágios, e em todos os níveis, do seu desenvolvimento. Leia e entenda as falhas de segurança do aplicativo OWASP Top 10 e analise seu código pensando neles. globalmente (toda a sua aplicação) e localmente (as partes individuais da sua aplicação). Claro que existem outras falhas de segurança, então você deve se documentar sobre isso.
Não é possível dar bons conselhos sobre este tópico sem nenhum código e com apenas uma descrição muito geral e imprecisa como você está fazendo aqui. No seu caso eu gostaria especialmente de observar a travessia do diretório , XSS, etc, mas lembre-se de que o risco pode vir de qualquer lugar da sua aplicação .
Na prática, você provavelmente quer executar o apache em uma jaula chroot , e eu também Faça o upload das pastas com alguns nomes gerados aleatoriamente, em vez do nome fornecido pelos usuários (aparece a partir das atualizações da sua pergunta que você já está fazendo isso de fato). Ao todo, lembre-se de que apenas fará qualquer falha que você ainda possa ter mais dificuldade de explorar, mas não as impedirá completamente.