2012-03-02 78 views
1

我问过这个问题,虽然我提出了几个奖励,但我从来没有得到太多的答案(参见here)。更一般地说,我想知道是否有suPHP的安全概念?什么是自由于这些脚本获得与用户的权限执行要suPHP有没有安全性?

www.example.com/rm-f-r.php 

www.example.com/return_some_iamge.php 

阻止任何人,它的基本保证acesss。


编辑为了详细说明上述情况,我的问题是一个概念上的一个。假设我们在/home/user/test.php有一个文件。让这个文件做任何事情(rm -f -r /,获取并返回一张图片,重启计算机......)如果我将浏览器指向该文件(假设包含的文件夹是Apache下的启用网站),我该如何告诉浏览器只允许该文件的所有者执行它?


编辑2:我从来没有明确说明这是我认为suPHP仅用于与Apache,但我说的是验证Linux用户只用一个浏览器(即Web浏览器)。如果我们没有进行身份验证,那么任何人在技术上都可以访问服务器上的任何脚本(对于网站来说这不是问题,因为他们始终将权限设置为0644,所以基本上整个世界都可以看到。另一方面,有权限一般设置为0700

+0

你的问题还不清楚。服务器程序删除文件或返回图像的内在错误是什么?什么样的访问被“保证”?我无法分辨你想要问什么,建议或防止什么。 – Cheekysoft 2012-03-02 12:21:51

+0

@Cheekysoft我会提出的问题 – puk 2012-03-02 12:44:35

+0

我相当有信心我的问题没有解决方案http://stackoverflow.com/a/9561335/654789 – puk 2012-03-06 04:39:57

回答

4

suPHP会影响PHP运行时的执行权限,用户授权编写.php文件。这意味着PHP程序作者只能读取和写入他自己拥有或以其他方式访问的文件。

如果您在您的网站上放置了一个PHP文件,您可以使任何与您网站相关的人都可以公开运行 - 使用suPHP的不会更改此。如果没有登录到您的网站,所有网络用户都是匿名的,无法可靠地识别个人。 suPHP仅控制脚本执行时的本地权限,它不打算引入任何形式的Web用户身份验证或授权。

如果您想控制哪些用户可以真正运行脚本,您需要实现一些登录功能并强制用户登录到您的站点。然后添加一个检查到敏感的PHP脚本(或Apache配置),如果当前登录的Web用户不是您希望执行该脚本的人,这将使其中止请求。

+0

是的,但我们*如何通过网络浏览器建立所有权?使用linux,您登录并启动会话,是否有相应的浏览器登录? – puk 2012-03-02 12:50:42

+1

您需要在PHP中研究会话和用户身份验证技术。或者为了快速修复,请查看Apache的limit/allow/deny指令和htpasswd控件,例如http://www.yolinux.com/TUTORIALS/LinuxTutorialApacheAddingLoginSiteProtection.html – Cheekysoft 2012-03-02 13:24:46

+0

我将如何中止它?我遇到的概念性问题是,如果我干扰'php'脚本,我冒险改变'php'脚本执行的用户。我猜测apache会捕获所有对'php'文件的请求,并将它发送给一个验证文件,让它叫做validate.php,一旦成功,'validate.php'就会调用原始的'php'文件。但是现在,'validate.php'已经运行,可能是用户'var-www',原始的'php'文件也会运行。 AFAIK suPHP只在一开始就改变用户**一次**。 – puk 2012-03-02 13:27:42