当一个页面被设计为抛出一个 时,是否可以确定它确实存在404 NOT FOUND
?
在我的服务器上,当在传递无效参数时发出对脚本的请求时,我会抛出 404 http 状态代码,因为我不希望那些不了解系统的人知道页面(公共 URL)存在。我希望抛出 404 会让攻击者认为脚本不存在。服务器本身没有资源实际上直接指向脚本,它都来自外部请求。
我真正想知道的是,仅从响应中,有人能够分辨出不存在的页面和配置为返回 404 的页面之间的区别吗?
向脚本发出无效请求时的响应标头确实指示http 状态为 404,而不是显示 404 页面的 http 状态为 200。
以下是我发出无效请求时得到的响应标头。
HTTP/1.1 404 Not Found
Date: Fri, 27 Jan 2017 23:32:28 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN
X-Powered-By: PHP/5.4.16
X-XSS-Protection: 1; mode=block
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
编辑: 下面是当我点击一个真正不存在的页面时得到的响应标题。
HTTP/1.1 404 Not Found
Date: Tue, 31 Jan 2017 19:08:06 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN
Content-Length: 203
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1