阻止CURL访问特定页面

时间:2017-03-11 17:28:08

标签: php html curl

我的index.php通过这种方式包含header.phpfooter.php

define("LEGAL_PATH", TRUE);
include("header.php");
// ...
include("footer.php");

我所包含的每个文件都以:

开头
if (!defined("LEGAL_PATH"))
{
    header("location: index.php");
    exit(0);
}

目前,当我们加载header.php(或footer.php)时,我们会在index.php页面上重定向。当我们尝试卷曲header.php时,它会返回一个空白页面(感谢exit(0))。

问题:

关于坏人,我想生成一个404错误(例如当我们尝试访问efjiozfjoijefiojzeof.php时),即使我们使用curl加载页面:在这种情况下(使用curl命令),标题位置是非正式的。

我的卷曲输出(当没有exit(0)时):

$> curl https://www.mywebsite.com/header.php
NOBODY SHOULD READ THIS DIRECTLY FROM HEADER.PHP FILE

我目前拥有的卷曲输出(当有exit(0)时):

$> curl https://www.mywebsite.com/header.php
$>

我想要的卷曲输出:

$> curl https://www.mywebsite.com/header.php
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /headzefjzefjp.php was not found on this server.</p>
</body></html>
$>

我的想法是包含404页面文件,但是当我处于详细模式时,我仍然有200个错误代码(而不是404):

$> curl https://.../header.php -v
...
> GET /header.php HTTP/1.1
> Host: ...
> User-Agent: curl/7.51.0
> Accept: */*
> 
< HTTP/1.1 200 OK
...

那么,真正忽略header.php文件(来自浏览器,curl等)的好方法是什么?

2 个答案:

答案 0 :(得分:1)

阻止人们访问他们不应访问的页面(如页眉,页脚或某些库)的正确方法是将它们放在文档根目录之外。

例如,您的文件夹结构可能如下:

documentroot/index.php
header.php
footer.php

你的index.php看起来像是:

<?php 
require('../header.php');
echo "some content";
require('../footer.php');

这是阻止用户访问他们不应访问的页面的最简单,最安全的方法,而不是尝试返回404错误。

答案 1 :(得分:0)

您需要手动发送404 Not Found。看到这个答案 How can I create an error 404 in PHP?

此外,如果您要重定向,则需要设置301或302状态。 301 or 302 Redirection With PHP使用“location”标题

时,您正在隐式执行此操作

另一件事是确保cURL不遵循30倍重定向。 (也许你的curl是curl -l的别名) 尝试使用curl --max-redirects=0 https://www.mywebsite.com/header.php查看是否属实。