我正在构建一个CMS,并且主页面(index.php
)由CMS目录中的很多小文件构建而成。例如,该结构可以是这样的:如何使某些文件仅适用于PHP脚本?
index.php
menu/admin/content.php
config.php
requests.php
menu/tools/content.php
config.php
requests.php
menu/users/content.php
config.php
requests.php
当我在根目录访问index.php
,我得到一个基于$_GET
参数不同的结果。例如,当我访问index.php?section=tools
时,索引文件会从menu/tools/
文件夹中加载content
,cofnig
和requests
文件。
现在来解决问题。 index.php
页面本身仅供登录用户访问,但出于安全原因,我想要禁用menu
文件夹中的所有内容,而不是通过其他任何方式访问,而不是通过php的include功能访问。
为了证明会发生什么:如果我要删除的东西,我用index.php?section=tools&delete=5
,并在menu/tools/requests.php
文件,如果$_GET['delete']
设为我会检查,然后从数据库中删除的5号。现在的问题是,如果有人知道实际结构,他可以像这样访问requests.php
文件:site.com/admin/menu/tools/requests.php?delete=5
,然后用这种方法破解网站。
有没有办法来防止这种可能的攻击?有些东西拒绝访问菜单文件夹中的文件,但仍然让他们从我的index.php文件访问? Htaccess也许?我真的不想在“菜单”文件夹中对每个文件都进行检查(如果设置会话/ cookie),尽管这可能是一个可行的解决方案。
index.php?section = tools&delete = 5本身就是一个坏主意。我现在找不到这个参考资料,但是有一个案例我读到了整个网站被一个仁慈的机器人销毁的地方,因为每个项目都有一个“删除”链接。改为使用POST请求。 – TecBrat 2014-06-16 14:24:43