经济日报
如果下载文件由程序接口动态输出,仅屏蔽文件后缀并不能真正阻止下载,必须同时检查下载接口、文件存储🎵路径、缓存节点和历史链接。HTTP 404 适合隐藏资源是否存在,HTTP 403 更适合明确表示“有资源但无权限访问”,两者不能混用。
防盗链只能减少部分外站嵌入⚡,不能代替访问控制。没有登录校验、可长期复用的直链和公开文件目录⭐,仍然可能被批量下载。
部分文件能返回404而部分文件仍可访问,通常是扩展名清单、目录范📢围或请求路径存在差异。需要把大写后缀、☀️常见压缩格式、无后缀接口和不同存储域名分别列入测试。
文件扩展名规则只匹配请求路径,不一定能识别没有后缀的下载接口。带查询参数的请求通常仍以路📢径参与匹配,因此不能把参数名当成文件类型判断依据。
Nginx 按文件类型拦截适合多个目录都存在安装包或压缩包的站点,下面的扩展名仅作为示例,应根据实际业务增删。
如果站点允许用户上传文件,不能只按文件名后缀判断风🌟险。攻击者可能上传无后缀脚本、伪造 MIME 类型文件或利用程序解析漏洞,上传目录应禁止脚本执行,并配合文件权限和内容校验。
下载拦截规✨则应先明确限制范围,再选择按目录、按扩展名或按接口处理,否则容易误伤网🌟站附件、后台更新包和正常页面资源。
Nginx 📢配置404禁止软件下载时,可以使用目录规则或扩展名规则,并把规则放在实际处理静态文件的服务配置中。
目录路径需要替换为真实的公开下载目录,末尾斜杠和目录层级也要与实际请🌟求保持一致。使用更高优先级的 location 时,应确认没有其他规则提前把请求转发给应用或文件服务。
Apache❤⭐️ 配置404禁止软件下载时,可以在虚拟主机配置或允许使用重写规则的目录配置中处理,不能把 Nginx 语法直接复制到 .htaccess 文件。
Nginx 按下载目录拦截适合资源位置固定的站点,目录内🎯的文件不论后缀是什么都会返回404。
Apache 规则中的路径通常不包含域名和查询字符串,规则顺序会影响最终结果。若站点使用 WordPress、Laravel 或其他前端控制器,应把下载拦截规则放在通用路由规则之前,避免请求先被程序接管。