我使用 PHP。我喜欢隐藏我的使用。我以前将所有 PHP 都放在文件中,但坦率地说,我必须重新配置我使用的每个编辑器/工具(实际上指的是 PHP 文件),.html
这很烦人。.html
所以我把它们全部移到了 .php,就像一个成年人一样。
无论如何,扩展都是隐藏的try_files
- 当我第一次出发时我并不知道这一点。
但是用户可以猜测www.domain.com/index.php
,并且鉴于它加载正常,他们就会知道该网站是使用 PHP 构建的。
虽然是小问题,但我想解决它。但该怎么做呢?
server
我天真地尝试了这个,靠近我的街区顶部:
location ~ (\.php$) {
return 404;
}
但网站上的所有内容都变成了 404。我猜是因为位置与实际运行的脚本相匹配,而不是用户地址栏中的内容?
然后我注释掉了 404 行,它产生了一个很棒的 (/s) 效果,将我的后端代码作为下载发送给访问者,连同他们的 404 页面。我想是因为您只能匹配一个位置块,所以它匹配了,但之后什么也不做,只是提供代码?
呃。
在此之前我曾尝试过
if( $request_uri ~ '\.php$' ) { return 404 ; }
在我的server
街区。但那似乎没有任何效果。
鉴于我造成的灾难,我决定向专家请教……
谢谢你!
答案1
不要。有几种方法可以解决这个问题:
- 放弃。让人们做你想避免的事情。缺点可以忽略不计;任何有价值的攻击者都不会被你做的事情打败。
- 用一个URL 重写以重写 URL因此人们在浏览器中看到的内容与文件名不对应。将文件保留为
foo.php
,但将 URL 重写为example.com/foo.html
。
对于 #2,类似
rewrite ^(.*)\.html$ $1.php last;
应该可以工作。