扫一扫浏览

防止别人通过路径查看你的模板文件方法汇总apache篇

未结贴
0 2996
yaosean未认证 2018-12-26 14:04:54
收藏

很多时候我们写完代码只关心功能的问题,却忽略一些细节的小问题,今天我给大家分享一个禁止用户直接访问模板的问题

一般普通用户是不会做这种事情的,但万一别个也是做程序的人,就有可能知道你模板路径的情况下直接访问你的模板,例如:后台的这样一个模块

tpframe 后台模板

别人就可以通过http://你的域名/theme/backend/menu/index.html 而查看你的模板文件,不须要任何验证,然后像查看普通html源码那样查看到你的模板文件代码

tpframe 后台模板源码

不管是什么框架,都有可以存在这样的问题,那么通过哪些方法可以避免这些问题呢,下面给大家分享几点办法,部分内容来自互联网收集

1、在文件夹下面用.htaccess文件(apache)配置限定

<FilesMatch ".(html|php|exe)$">
order allow,deny
deny from all
</FilesMatch>

就上面的这种情况就在theme下面创建.htaccess文件加入上面的内容即可

当然你可以在具体的html模板所在访目录,例如\theme\backend\menu\里面添加.htaccess文件加入上面的代码,但这样写要在每一个模板里面加,显示有得麻烦,所以我就直接在最上层模板目录里面统一加了,上面的的意思表示禁止访问以html、php、exe结尾的文件,当然你不能禁止所有,因为图片跟css是须要能访问的

2、配置.htaccess文件

还可以通过另外的一种配置方式RewriteRule来达到目的

注意:此时的.htaccess文件是在根目录里面配置,配置内容例如:

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule theme/(.*).(html)$ – [F]
</IfModule<

关键代码RewriteRule theme/(.*).(html)$ – [F],表示禁止访问theme下面的所有.html文件

3、调整目录位置

把模板或不能让用户直接访问的文件放到WEB目录外面

你们下载的thinkphp5.x版本可以看到,里面有一个public文件夹,默认入口文件就是放到这个文件夹(index.php)里面,因此很多用户习惯配置文件根目录在上级目录,这种情况你访问网站就是这样访问的:http://你的域名/public/index.php,这路径明显多了一个public,你看着肯定很不舒服吧,因此正确的配置网站根目录应该指定到public文件夹

thinkphp 目录结构

这样你就可以直接通过你的域名直接访问了http://你的域名/index.php

该文章由tpframe发布,禁止转载

如果你有更好的办法,欢迎在下方留言讨论

最近热帖 HOT TOPIC
父元素flex之后,子元素高度自适应问题 5077
thinkphp5隐藏默认模块的一些问题 4740
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)php实现 4386
关于thinkphp5.0.x getshell漏洞的说明 4101
tpframe新建主题 4070
教你如果处理高并发数据不同步的问题php篇 4057
移动web资源整理,你值得收藏的干货 3926
【全套视频】thinkphp5视频教程 3905
omnicore rpc api中文手册【usdt】 3877
2018最新版PHP视频教程-ThinkPHP5商城系统+项目实战 3789
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 12
权限那里怎么一登录别的账号就报错啊 9
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
基于tpframe v3.x 的微信公众号插件已批量上线 5
tpframe插件tcms插件v2.2已发布上线,欢迎下载使用 5
tpframe6.0马上就要跟大家见面了,一次全新的升级 5
新增的管理员没有权限操作CMS模块。 3
api接口文档插件easydoc的基本用法,快速搞定接口文档 3
thinkphp5自动完成操作,两次运行的详解 2