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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。