Al volo mi viene in mente questo:

Metti i file in una cartella con un nome lungo (molto) e strano, insomma che funga da password.
Ovviamente deve essere settato apache che non sia possibile leggerlo... e comunque mettendo un index.html vuoto nella cartella superiore (se non ce n'è già uno pieno) dovresti risolvere...
Quindi metti i link per lo scarico in una pagina accessibile solo dagli utenti... poi potresti far copiare il file in una cartella temp (per il download) con il file che si cancella dopo un tot... in questo modo neanche gli utenti possono conoscere la cartella segreta... se ne banni uno non potendo entrare alla pagina dei link non può accedere più ai file (che non ha già scaricato ovviamente)

Faresti prima ad inserire i file in db... ma se non puoi (o non vuoi appesantirlo, o se sono file enormi) dovrebbe funzionare



Magari ho scritto stupidaggini... non ho verificato, fai delle prove