表达可能有点问题😂 , 大概就是正常对外使用 yuming.com/A/index.php , 但是有部分 js/css/jpg 以及 html 文件实际都在 /B 目录下的, nginx 能否实现: 只允许通过 yuming.com/A/index.php 这样的方式访问,用户手工构建 yuming.com/B/style.css 或者其他 B 目录下的内容,都直接 404 ? 这个思路假如不行( js/css 都得用户前端执行),那么能否将 yuming.com/B/style.css 输出为 fake.com/B/style.css 即 这不是我 yuming.com 加载给你的? 总的大概意思就是你好好按照 yuming.com/A/ 访问,没问题,你跑来猜测我 /B 的静态内容,要么给你 404 要么给你 按 fake.com/B 去给你执行, 谢谢大家😂。
1
owltacklejaguar 2023-08-19 14:28:05 +08:00
```
server { listen 80; server_name yuming.com; location /A/ { if ($http_referer !~* "^http://(www\.)?yuming\.com/") { return 404; } # 允许访问 /A/ 下的资源 # 配置 proxy_pass 到相应的后端服务 } location /B/ { return 404; } # 其他配置... } ``` 即第二种办法 |
2
owltacklejaguar 2023-08-19 14:32:50 +08:00
当然 referer 是可以伪造的,静态资源不给正常访问,给 404 有什么意义吗
|
3
justfun 2023-08-19 15:17:39 +08:00
只能通过 Referer 判断 但是没有意义 禁止不了的
|
4
klo424 2023-08-19 15:17:59 +08:00
不懂就问。php 引入 js 和 css 的方式也是文件引入吧?在浏览器里面的请求会自动寻找 B 吧?那么跟用户手动构建 B 是不是就没有区别了?
|
5
Pastsong 2023-08-19 18:29:52 +08:00
为了达成什么目的呢
|
6
Pastsong 2023-08-19 18:31:16 +08:00 1
JS/CSS 地址是 PHP 输出字符串给浏览器,浏览器访问的,不是 PHP 程序加载的
|
7
flyqie 2023-08-19 19:12:23 +08:00
你反正也没开列目录,这么折腾有啥意义吗。。。
理解不了,绕了一大圈啥用都没有。 |
10
flyqie 2023-08-19 19:17:17 +08:00
想了下,你要真不想让用户直接访问的话。。
可以尝试从 header 头或者一次性防盗链入手,但终究还是没啥实际意义。。 |
11
neos2014 OP 谢谢大家,说下目的吧:
1 、就是让真正使用的朋友正常使用 2 、想窥探目录结构以及静态代码的,返回 404 。不过说实话,静态资源 404 不太可能了似乎😂,那么 我把静态资源重定向到 fake.com/xx00/去怎么样呢? 也就是说,js /css/jpg 挡不住你要看,那就重定向到另外一个域名+目录上,这样干扰对方的判断,我觉得这个也是可行的吧?😂 |
13
neos2014 OP @owltacklejaguar 谢谢大佬,我也想明白了,不需要非跟静态资源 404 较劲,重定向别的目录干扰结果也应该可行
|