MVC应用程序中的暴露文件夹

时间:2017-09-01 10:09:30

标签: php security mod-rewrite model-view-controller

嗯,首先请原谅我的初学英语..

  

我想更多地了解PHP MVC应用程序中的安全性

我创建了自己的MVC,但我还没有完成它 我的应用程序目录通过带子元素的URL访问公开。

  

如何让访客隐藏此内容?

以下是我正在尝试

Apache mod_rewrite?

我仍然不知道在每个文件夹中将它作为空的index.html,如框架Codeigniter?

用什么东西来表示? 和, ......怎么做?

修改 关于rewrite_rules

,我知道一些事情

以下是我的.htaccess

    Options -MultiViews
    RewriteEngine On
    RewriteBase /ligia

    #RewriteCond %{REQUEST_FILENAME} -f [OR]
    #RewriteCond %{REQUEST_FILENAME} -l [OR]
    #RewriteCond %{REQUEST_FILENAME} -d
    #RewriteRule .+ -
    #I know, it is commented

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule "^(.+)$"    "index.php?uri=$1"   [QSA,L]
  

但我担心这是否是保存我的MVC应用程序的最佳方式   安全!?

我需要帮助!

1 个答案:

答案 0 :(得分:1)

首先确保您的.htaccess文件位于您的文档根目录(与index.php相同的位置),否则它只会影响它所在的​​子文件夹(和其中的任何子文件夹 - 递归地。)

接下来对您的规则稍作修改,使其看起来像:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]

目前你只是匹配。这是任何字符的一个实例,至少需要。*来匹配任何字符的任意数量的实例。

如果您希望将整个shebang安装在子目录中,例如/mvc//framework/,则最简单的方法是稍微更改重写规则以将其考虑在内。< / p>

RewriteRule ^(.*)$ /mvc/index.php?path=$1 [NC,L,QSA]

确保index.php位于该文件夹中,而.htaccess文件位于文档根目录中。

NC =无大小写(不区分大小写,因为模式中没有字符,所以没有必要)

L =最后(在重写之后它会停止重写,所以请确保它是重写列表中的最后一件事)

QSA =查询字符串Apend,以防万一你想要保留并传递给index.php的类似= like = penguins。