PHP 后台写了一些功能块,不做权限直接暴露是否有安全问题。

2020-04-13 12:07:37 +08:00
 mostkia

比如:

function AAA(){
	AAA;
}

function BBB(){
	BBB;
}

function CCC(){
	CCC;
}

以上的代码,假设是一些 php 文件的内容 function 里面带有敏感危险的操作,这些 php 文件,可以直接在站点中输入 url 访问,但按照逻辑,直接访问这些文件,里面的 function 并不会主动执行(已确保所有调用的代码都在登录后执行的)。这种情况下这类功能块文件,不做权限是否安全呢?是否有潜在的风险可以激活这些 function 功能块?

1494 次点击
所在节点    问与答
9 条回复
3K1yf6UvnVz5w008
2020-04-13 12:11:42 +08:00
同问
chinvo
2020-04-13 12:12:26 +08:00
理论上 web 入口应该在独立的子目录,这些东西都应该放到非 web 路径里
alex321
2020-04-13 12:42:22 +08:00
你这些 PHP 文件是需要有其他文件来调用执行的吧,这个看下 CI 这类单入口框架的的设计,都有这句:

defined('BASEPATH') or exit('No direct script access allowed');
cydian
2020-04-13 12:44:35 +08:00
@alex321 正解
cydian
2020-04-13 12:46:56 +08:00
从你的描述来看,
不加,问题不大。
因为所有调用的地方都有验证。
用户不可能直接跳过验证去运行函数。
前面已经验证过一次,后面再验证一次,更加安全,更加放心。
后面不验证,我也觉得没有问题。
mostkia
2020-04-13 12:53:04 +08:00
@alex321 好的,是的,作为复用的片段放在文件内的,本身没有执行的需要,谢谢,我会参考一下的
@cydian 嗯,加了感觉比较繁琐,而且真的这样部署,里面也不会放任何涉及数据的敏感的操作,无非是一些复用的功能,但直接暴露不做权限的 php 功能片段总觉得有些怪异,所以探讨一下这方面相关的东西。
mostkia
2020-04-13 13:05:32 +08:00
@chinvo 有时候也迫不得已啊,业务结构不是自己定的。虽然因为业务结构原因,直接忽略也是可以的,但问问清楚更放心,也更负责一些,搞懂了没坏处。
qq292382270
2020-04-13 13:42:36 +08:00
参考 discuz 的代码:
可被访问的文件: define('XXXXXX', true);
模块文件: if (!defined('XXXXXX')) {
exit('请勿单独访问本页面');
}
mostkia
2020-04-13 14:08:52 +08:00
@qq292382270 好的,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/661919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX