【问题标题】:Exposed folders in MVC applicationMVC 应用程序中的公开文件夹
【发布时间】:2018-02-10 09:09:19
【问题描述】:

好吧,作为开始,请原谅我的初学者英语..

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

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

如何让访问者隐藏它?

以下是我正在尝试的方法

Apache mod_rewrite ?

我仍然不知道像框架 Codeigniter 一样在每个文件夹中将其设为空 index.html 吗?

用什么来表示什么? 和, ...如何制作?

编辑 我对rewrite_rules略知一二

下面是我的.htaccess

选项 - 多视图 重写引擎开启 重写基础/ligia #RewriteCond %{REQUEST_FILENAME} -f [OR] #RewriteCond %{REQUEST_FILENAME} -l [OR] #RewriteCond %{REQUEST_FILENAME} -d #RewriteRule .+ - #知道了,评论了 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule "^(.+)$" "index.php?uri=$1" [QSA,L]

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

我需要帮助!

【问题讨论】:

  • 如果他们是访客,则不会登录。在网页上显示选项之前测试此值,即 if( user_logged_in ) { show links }
  • 将所有框架代码放在webroot之外。例如,使用典型的 cpanel apache 服务器,将其放在 public_html 之外。只有你的入口点(index.php)和 webroot 中的任何静态资产(css、js、imgages)
  • 在您提出关于 SO 的问题之前,请先了解技术的基础知识并阅读相应的书籍和教程。

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


【解决方案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/,最简单的方法是稍微更改重写规则以将其考虑在内。

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

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

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

L = Last(在此 Rewrite 之后它将停止重写,因此请确保它是您的重写列表中的最后一件事)

QSA = Query String Apend,以防万一您想要保留并传递给 index.php 的末尾有类似 ?like=penguins 的内容。

【讨论】:

  • 查看编辑,感谢分享,我想知道我的应用程序是否仅凭我的知识保持安全
  • @MarceloRafael Security 不能应用于像某些单板这样的应用程序。每种安全问题都以其他方式处理
  • 好吧,在这种情况下,为了保护我的文件夹,这个 apache 工作正常吗?!我说的是 URL 中的直接访问
  • 对不起,我没有正确解释我的问题。但是你们给了我一盏灯,谢谢大家
猜你喜欢
  • 2011-05-06
  • 1970-01-01
  • 2019-01-09
  • 2014-08-14
  • 1970-01-01
  • 2019-02-28
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多