![]() |
1
8
不是对你眼前问题的回答,但你应该 从未 在真实的安全环境中使用黑名单。 这是因为你可能会改变目录布局,但忘记更新黑名单,留下你的安全无能为力。 使用白名单,您可以列出允许上传到的位置。如果您更改了布局而忘记更改白名单,那么您的安全性实际上 增加 ,而不是减少。用户的抗议声会提醒你忘记。
在禁止访问较低级别的目录方面,我认为获得真正的路径(包括
我以前做过这种规范化,它基本上包括(从内存):
剩下的通常是安全使用的,尽管根据是否有更多的目录移动命令可用(我已经看到
|
![]() |
2
4
据我所知,最好的方法是让web服务器运行时所用的用户对除了上载目录之外的所有内容都不可编辑。例如,在debian上,apache作为用户运行
如果可能的话,最好将可写目录移到主服务器树之外。如果我控制服务器,我将在
|
![]() |
3
1
即使路径中的最后一个目录还不存在,下面的代码也可以工作。任何违规操作或其他丢失的目录都将返回false。 此函数的限制是,它仅适用于(大多数)已存在的路径和使用标准英文字符(/.hts/,/files.90.3r3/,/my_photos/)的目录名。
|
![]() |
4
-2
就这么简单吗?
每次你需要使用它,你只要使用常量,因为听起来好像只有一个地方你可以上载。那样你就不容易搞砸了。
有时为了保护你自己,你只需要保持警惕。只需确保在所有文件访问之前调用is_sub_dir()。 编辑: 现在问题更清楚了,我觉得我的回答毫无意义。我唯一的建议是重申别人说过的话:消毒,消毒,消毒。 |
![]() |
5
-2
我知道已经有人回答了,但最简单的解决办法是不允许“在路径中”。
|