跟老姚学前端,课程体系更完善,10%基础 + 90%实战演练,快人一步学编程

扫一扫浏览

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

未结贴
0 5490
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
【全套视频】thinkphp5视频教程 85807
父元素flex之后,子元素高度自适应问题 10857
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)php实现 9851
thinkphp5隐藏默认模块的一些问题 9321
api接口文档插件easydoc的基本用法,快速搞定接口文档 9270
omnicore rpc api中文手册【usdt】 9090
PHP如何判断字符串是否为json格式 9006
教你如果处理高并发数据不同步的问题php篇 8945
关于thinkphp5.0.x getshell漏洞的说明 8671
使用宝塔linux面板创建FTP无法连接的解决办法(阿里云或腾讯云) 8442
月度热议HOT COMMENTS
【全套视频】thinkphp5视频教程 70
tpframe 后续版本你希望有的功能是什么(分享贴) 12
权限那里怎么一登录别的账号就报错啊 9
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
基于tpframe v3.x 的微信公众号插件已批量上线 5
tpframe插件tcms插件v2.2已发布上线,欢迎下载使用 5
tpframe6.0马上就要跟大家见面了,一次全新的升级 5
透析thinkphp5升级版开发框架tpframe 3
新增的管理员没有权限操作CMS模块。 3
爆料早知道: