我正在构建一个允许登录用户上传产品图片的小型网络应用程序。我正在尝试正确构建,并且在过去一些天真的实施之后,决定将所有上传的内容添加到我的公共文件夹中。
\app (public folder)
-\index.php
\includes
\config
\uploads
这将使得如果恶意用户设法上传 PHP 文件,服务器将无法访问或提供该文件。
话虽如此,我将如何在网页上提供这些图片?做这个的最好方式是什么?过去,我使用了一个 getImage.php 文件,该文件将采用一个 ID 参数(以及一些生成值的哈希值以避免用户只是猜测 ID),它看起来像“getImage.php?id=555&c=44j54k3h5”。服务器抓取数据库中的图像信息(真实路径)并加载内容,重建头部,并发送图像。
这种方法是否存在任何安全问题?有没有办法让它更漂亮?有一个查找 /images/imagename.jpg 并将它们发送到我的 getImage.php 文件的 htaccess 重写规则会添加安全漏洞吗?任何关于最佳实践的建议将不胜感激。