我回过头来问这个问题,即使我拿出了几个赏金,但我从来没有得到过多的回答(见here)。更一般地说,我想知道suPHP是否存在任何安全概念?什么阻止任何人前往
www.example.com/rm-f-r.php
或
www.example.com/return_some_iamge.php
因为这些脚本是以用户的权限执行的,所以它基本上可以保证成功。
编辑为了详细说明上述内容,我的问题是概念问题。假设我们在/home/user/test.php
有一个文件。让这个文件做任何事情(rm -f -r /
,获取并返回一张图片,重新启动计算机......)如果我将浏览器指向该文件(假设包含的文件夹是Apache下的启用站点)我该怎么告诉浏览器只让该文件的所有者执行它?
编辑2:我从未明确说过这一点,因为我认为suPHP仅用于apache(即网络浏览器),但我说的是仅用浏览器验证linux用户。如果我们不进行身份验证,那么任何人在技术上都可以访问服务器上的任何脚本(对于网站来说这不是问题,因为他们总是将权限设置为0644
,所以基本上整个世界都可以看到。另一方面,权限通常设置为0700
)
答案 0 :(得分:4)
suPHP的作用是PHP运行时在创作.php
文件的用户的许可下执行。这意味着PHP程序作者只能读取和写入他自己拥有或以其他方式访问的文件。
如果您在自己的网站上放置了一个PHP文件,那么任何访问您网站的人都可以将其公开运行 - 使用suPHP不会更改此。如果不登录您的站点,所有Web用户都是匿名的,无法可靠地识别个人。 suPHP仅控制脚本执行时的本地权限,它不打算引入任何形式的Web用户身份验证或授权。
如果您希望控制哪些用户可以实际运行脚本,则需要实施一些登录功能并强制用户登录您的站点。然后在敏感的PHP脚本(或Apache配置)中添加一个检查,如果当前登录的Web用户不是您希望执行该脚本的那个,则会使其中止请求。