apache - 有什么方法可以阻止直接访问 apache 上的文件但允许通过脚本访问它们?
问题描述
如果我在我的服务器目录中输入任何内容的直接路径,我可以在没有登录的情况下查看并下载文件。(例如,我有一个目录 foo,其中有一个文件 bar.jpg。如果我在搜索中输入bar "ip:port/foo/bar.jpg 我可以看到图片而无需浏览我创建的页面)。我知道这将很难访问,但如果它可以发生,它最终会发生。有没有办法允许我的 php 脚本可以访问文件并在网页中显示它们,但在输入时不允许直接访问我的服务器上的内容?我已经尝试过 .htaccess 文件并直接在 apache 中更改服务器配置,我的访问权限如下所示:
<Directory "C:\xampp\htdocs\RootFolder\Login System">
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?Family [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
</Directory>
这里的问题是它随机阻止了我页面中的一些图像,同时允许其他图像通过:
GET http://localhost/Family/IMG_2436.jpg 403 (Forbidden)
我一直在努力尝试让它工作,这样如果有人输入直接链接,他们在通过我的 php 页面访问时会被拒绝访问,只会显示图片或文件。有没有办法做到这一点?ps我使用的是windows基础
解决方案
推荐阅读
- javascript - JSON.stringify 将空对象从 FileList 发送到服务器
- elasticsearch - EKS EFK 日志记录方法
- amazon-web-services - 如何使用 Cloudwatch 将常量值传递给 AWS Step Function
- powershell - 如何从csv文件循环遍历层次结构?
- ruby-on-rails - 重命名rails json api键
- arrays - 由于语法错误,无法返回固定大小的数组:应为 7 个可能的标记之一
- google-analytics - 传单弹出链接中的谷歌分析事件
- azure - 创建后更新 Azure APIM 操作名称
- c# - 如何根据C#中的文本框值更新xml的属性
- amazon-web-services - 使用 Lettuce 连接到 AWS ElastiCache Redis 的 Spring Session