应用程序按用户生成数据。每个用户都具有唯一的用户id和相关联的唯一文件权限。用户文件存储在各个目录中,每个目录上都有关联的用户权限。
这些要求是提供安全的个人用户访问只通过门户用户的文件,假设PHP。正在考虑的一种设计是模拟门户环境中的目录结构和权限。如果可以以用户身份运行PHP,则可以使用系统权限访问安全性。(这会将安全实现的范围限制到登录过程,而不是应用程序。)
问:是否可以以用户身份运行PHP并假定用户的文件权限?
研究已经发现了一些类似的问题,但不是以单个用户的身份运行PHP的直接问题。
发布于 2020-06-06 03:57:17
从最好到最差,有几种解决方案:
的配置/管理噩梦
posix_seteuid()和posix_setegid()更改正在运行的进程的有效UID和GID。“等等!”我听到你说,“最后一个选项似乎正是我需要的!为什么它是最糟糕的?”
因为为了更改进程的UID或GID,该进程必须首先以被允许这样做的用户身份运行。该用户是root用户。
以根用户身份运行PHP是一个巨大的安全漏洞,即使只是为了跳转到不同的UID/GID。即使是最小的bug或缺陷现在也已经结束了,如果你正在编写一个文件管理器,这一点就会成倍增加。
“这很好,”您反驳说,“这只供受信任用户内部使用,所以我不担心安全性。”
不是的。坏的。用卷起来的报纸砸你
绝不可能。信任。用户。
充其量他们永远不会故意破坏或损害你的应用程序,但是:
这份清单还在继续。
TL;DR:,除非您正在设置每个用户的vhosts/站点/应用程序。将文件存储在docroot之外,并使用选项#2通过PHP访问。如果有人抓到您以root身份运行PHP,您将会有一段很糟糕的时间。
https://stackoverflow.com/questions/62222849
复制相似问题