thinkcmf默认情况下,自带了两个模板,一个是用于前台的模板simpleboot3,另外一个是用于后台的模板admin_simpleboot3。在最开始的文章中,苏南大叔表述了:如果服务器设置不当的话,会存在导致页面逻辑丢失的隐患。而且这些不可被用户访问的模板页面,却混杂着必须能够被用户访问的静态资源文件(js/css/img),所以,苏南大叔觉得这些模板文件的位置不是很合适。thinkcmf的搭建经验文章:https://newsn.net/say/nginx-thinkcmf.html

官方解决方案

官方的解决方案也是蛮简单的,官方在themes文件夹下面增加了个.htacess文件,用于防止非法访问模板文件。但是这个设置能够ok的前提是使用apache服务器。

苏南大叔:thinkcmf高级应用之自定义模板位置 - 02
thinkcmf高级应用之自定义模板位置(图7-1)

but,大多数人使用的是nginx服务器,官方给出的nginx的配置范例中,却没有解决这个问题。也就是说,如果您使用的是官方推荐的nginx配置的话,很有可能存在着,模板文件被非法访问的问题哦。

苏南大叔:thinkcmf高级应用之自定义模板位置 - 01
thinkcmf高级应用之自定义模板位置(图7-2)

当然,苏南大叔也给出了个治标不治本的nginx方案。

server {
    ## 这里请替换为原来的配置
    location ~* ^\/upload\/.+\.(html|php|json)$ {
        return 404;
    }
    location ~* ^\/plugins\/.+\.(html|php|json)$ {
        return 404;
    }
    location ~* ^\/themes\/.+\.(html|php|json)$ {
        return 404;
    }
}

当然,如果把这些html文件的后缀都改成php。也许是个解决方案。不过,苏南大叔不喜欢这个方案,所以没有实验。thinkphp官方推荐的后缀是tpl。额,苏南大叔觉得tpl后缀也不是很好,毕竟不是标准可识别的文件,不确定性较多。您说对不对?

相关链接

结论

上述这几步设置之后,就可以完全不必担心,模板的php逻辑会暴露在互联网上了。好开心不是?也不必担心:运维人员会因为不懂代码结构,而设置nginx配置错误而导致遗留漏洞。

更多由苏南大叔带来的thinkcmf的经验文章,请点击这里查看。https://newsn.net/tag/thinkcmf/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   php    theme

本站的忠实读者小伙伴,正在阅读下面这些文章: