一周软件工作室

软件开发、网络技术服务

镜像回源系统

admin    2025-03-13    20

这个程序的主要功能是实现一个镜像回源系统,具体来说,它可以根据用户请求的文件路径,先检查本地是否存在该文件。如果本地文件存在,则直接返回给用户;如果本地文件不存在,则从远程服务器下载文件并保存到本地,然后返回给用户。以下是程序的主要功能总结:

 

1. 路径处理与安全检查

获取用户请求的URI

从 $_SERVER['REQUEST_URI'] 获取用户请求的文件路径(如 /images/logo.png)。

过滤危险字符

使用正则表达式过滤掉非法字符(如 ..\0 等),防止路径遍历攻击。

拼接本地文件路径

将用户请求的路径与本地基础目录拼接,生成完整的本地文件路径(如 /www/wwwroot/123.iyizhou.com/images/logo.png)。

路径安全检查

使用 realpath() 检查文件路径是否在允许的目录范围内,防止越权访问。

 

2. 文件类型限制

检查文件扩展名

只允许下载特定类型的文件(如 jpgpngcssjs 等)。

如果文件扩展名不在允许列表中,返回 403 Forbidden 错误。

 

3. 远程URL验证

检查远程URL的合法性

确保远程URL的域名是允许的(如 img.iyizhou.com)。

如果域名不在允许列表中,返回 403 Forbidden 错误。

 

4. 本地文件检查

检查本地文件是否存在

如果本地文件存在,直接读取并返回文件内容。

如果本地文件不存在,继续从远程服务器下载。

 

5. 远程文件下载

使用cURL下载远程文件

通过 curl_init() 和 curl_exec() 下载远程文件内容。

支持自动跟随重定向(如301、302跳转)。

设置超时时间和文件大小限制(10秒超时,10MB文件大小限制)。

检查HTTP状态码

如果远程文件不存在(返回404状态码),返回 404 Not Found 错误。

 

6. 文件保存与返回

保存远程文件到本地

如果远程文件下载成功,将文件保存到本地路径。

如果目录不存在,自动创建目录并设置权限为 755

设置文件权限

将保存的文件权限设置为 644,确保文件可读可写。

返回文件内容给用户

设置正确的 Content-Type 头(根据文件扩展名获取MIME类型)。

输出文件内容。

 

7. MIME类型处理

根据文件扩展名获取MIME类型

使用预定义的MIME类型映射表,返回文件的MIME类型(如 image/jpegtext/css 等)。

如果扩展名不在映射表中,返回默认的 application/octet-stream

 

8. 错误处理

403 Forbidden

如果路径不安全、文件类型不允许或远程域名不合法,返回 403 Forbidden 错误。

404 Not Found

如果远程文件不存在,返回 404 Not Found 错误。

 

9. 性能与安全性优化

路径安全加固

过滤危险字符,防止路径遍历攻击。

文件类型限制

只允许下载特定类型的文件,防止下载恶意文件。

远程URL验证

确保远程URL的域名是允许的,防止恶意URL注入。

权限控制

确保文件保存到指定目录,并设置安全的文件权限。

 

总结

这个程序的核心功能是镜像回源,即:

优先从本地返回文件,减少远程请求的开销。

如果本地文件不存在,从远程服务器下载并保存到本地,然后返回给用户。

通过严格的安全检查,确保路径、文件类型和远程URL的合法性,防止恶意请求和攻击。

适用于需要缓存远程静态资源(如图片、CSS、JS等)的场景,能够有效提升性能并增强安全性。


本文链接:http://www.iyizhou.com/?id=4

转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源!

 下一篇

相关文章