ds211107 2017-03-11 17:28
浏览 194
已采纳

阻止CURL访问特定页面

My index.php includes header.php and footer.php by this way:

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

And each of my included files begins with:

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

For the moment, when we load the header.php (or footer.php), we are redirected on the index.php page. When we try to curl the header.php, it returns a blank page (thanks to the exit(0)).

Question:

Regarding bad people, I would like to generate a 404 error (as when we try to access to efjiozfjoijefiojzeof.php for instance) even if we load the page with curl: in this case (with a curl command), the header location is nonfonctionnal.

The curl output which I had (when there is no exit(0)):

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

The curl output which I currently have (when there is the exit(0)):

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

The curl output which I would like to have:

$> 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>
$>

My idea was to include the 404 page file, but when I curl in verbose mode, I still have a 200 error code (and not a 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
...

So, what is the good way to really ignore the header.php file (from browsers, curl, etc)?

  • 写回答

2条回答 默认 最新

  • douduoquan2824 2017-03-11 18:21
    关注

    The correct way to prevent people from accessing pages they are not supposed to access (like your header, footer or some libraries) is to put them outside of your document root.

    For example your folder structure could be like:

    documentroot/index.php
    header.php
    footer.php
    

    And your index.php would look like:

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

    Instead of trying to return a 404 error, this is the easiest and most secure way to prevent users from accessing pages they are not supposed to access.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛