Проверка реферера - один из вариантов, но, как вы заметили, они могут быть пустыми или поддельными .
Другая возможность - установить cookie-файл, когда кто-то посещает обычные страницы на вашем сайте, и проверить это, когда пользователь пытается загрузить zip-файл. Это может быть получено (например, с помощью горячего линкера, вставляющего соответствующую страницу установщика печенья в виде изображения 1x1 по размеру горячей ссылки), но с меньшей вероятностью они это поймут. Это также исключит людей, которые блокируют куки, конечно.
Другая возможность заключается в создании URL-адресов с ограниченным временем доступа на странице загрузки, что-то вроде http://example.com/download.php?file=file.zip&code=<i>some-random-string-here</i>
. Ссылка будет использоваться только для небольшого количества загрузок и / или короткого периода времени, после которого она больше не будет работать.