访问public-html

时间:2017-11-09 09:44:49

标签: php

我建议在htdocs之外有一个文件夹(名为 outsidefolder ),并且在public_html之外,在文件夹中有index。php,其中包含指向其他页面的链接,外部文件夹中使用的类文件。在htdocs和稍后的public_html文件夹中,我有一个文件夹(名为folderinside),用于访问public_html之外的outsidefolder。

在folderinside中,我有一个带有样式文件的样式文件夹,js代表 javascript,图像的图像,用于外部文件夹中的所有页面。

示例

    href="http://localhost/folderinside/style/style.css";

在文件夹中,我可以从网站访问login.phpaction_form.phppages.phppagesone.php

login.php

     action ="http://localhost/folderinside/action_form.php 

并且表格有 当发送到action_form.php时,它有以下php代码。

    if (!empty($_POST['i-action']))
    {
       $action = str_replace('.', '', $_POST['i-action']);
       $action = str_replace('/', '', $action);
       if (file_exists("../../outsidefolder/includes/$action".'.php'))
           require_once("../../outsidefolder/includes/$action".'.php');
    }

Login-action.php调用process.php,在outsidefolder和process.php中都是 外部文件夹中的一个类文件,其中处理表单并成功

    include"../../outsidefolder/index.php";

index.php中的链接。

    href="http://localhost/folderinside/pages.php?page=pageaaa" 

等页面= pagebbb等 在pages.php中是以下php代码,例如。

    $allowed = array('pageaaa', 'pagebbb', 'pageccc', 'pageddd'); 
    // the pages
    if ( isset($_GET['page']) ){
         $page = $_GET['page']; 
         if ( in_array($page, $allowed) ){
              include("../../outsidefolder/$page.php");
         }
    }

外部文件夹中index.php中的所有页面都包含链接,并使用folderinside中的pagesone.php对这些链接执行相同操作。 我的问题是;这是安全和实用的

2 个答案:

答案 0 :(得分:0)

没有。这不实用,因为为什么你需要一个项目来拥有自己的一些核心功能?

同样为什么你需要重复? - "外部文件夹中index.php中的所有页面都包含链接,并使用folderinside中的pagesone.php对这些链接执行相同操作。"

它不再是安全性较低的,因为它只是对文件的调用或引用 - 但它完全不切实际,尤其是当网站上线时。请记住,除非另有说明" index"将是您网站上线时打开的第一页。 所以,如果你在外面"文件夹放置在实时托管网站上的public_html内,然后包含真实网站的后续文件夹在该内部或外部,该网站仍将自动加载"索引"而不是" pageone"等

让您自己省去以后排序文件的麻烦,而不是现在智能地构建它们。

答案 1 :(得分:0)

我不了解您的具体方案,但通常情况下,有一个"后端"公共文档根目录外的文件夹,仅公开直接处理公共文档根目录中的Internet请求的文件。在任何体面的系统中,您都有数据库类,模板文件,后台工作者/ cron作业等。这些并不意味着直接访问,因此在任何情况下都不得公开曝光。

通常你可能会这样:

public/
  js/
  css/
  imgs/
  .htaccess
  index.php
app/
  foo/
    bar.php
  baz/
  ...

public文件夹仅包含必须可公开访问的文件,例如Javascript,CSS和图像资源。除此之外,它只包含一个小的bootstrap index.php文件,该文件处理所有请求并根据需要加载类/路由器/控制器,这将进一步处理请求。使用配置合理的Web服务器,您甚至不需要该索引文件,但让Web服务器根据需要调用适当的后端脚本。

公开曝光的表面越小,您邀请的问题就越少。

在使用的URL中不应该有任何痕迹。网址可能为/users/profile,由index.php处理,并在必要时在内部解析。