| Profilo di Fwolf温暖的耗子窝BlogElenchi | Guida |
|
04/07/2009 Curl奇怪的403错误自己用的小PHP应用,使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果设置为不使用proxy则都能正常访问。 难道google baidu就不让用proxy连接么?显然不可能,所以打开curl的信息输出(
可以看到proxy服务器工作正常,的确是baidu返回了403错误,但原因肯定还在我这边。终于,从网上(1of2, 2of2)得到了点启发──我使用的是proxytunnel而非proxy。 在代码中,有这么一句: curl_setopt($this->mSh, CURLOPT_HTTPPROXYTUNNEL, true); curl_setopt($this->mSh, CURLOPT_PROXY, $phost); php文档中没有详细说明,不过 禁用掉上面2行代码的第一句后,curl访问恢复正常。 比较奇怪的是,几种操作系统下还不一样,一台MAC OSX就要显式的禁用proxytunnel才可以,curl版本:
而另外一台ubuntu则完全不受影响,怎么都能用,curl版本:
MT主机上的centos也没事,curl版本:
看来不完全是curl版本问题,MAC OSX的确与众不同啊。 还有一个原因也会导致curl返回403错误,如果设置了: curl_setopt($ch, CURLOPT_NOBODY, true); 则需要紧跟着设置: curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); 不然会因为http服务器不允许 HEAD 命令而返回403错误。参考:Trouble with a cURL request in PHP。MAC OSX上curl之所以特殊,也不排除是这种原因吧。 Tags: 403, curl, error, http, PHP, proxy, tunnelRelated posts配置安全的共享web服务器(抛砖引玉)本文所讲的共享web服务器,并非共享文件的服务器,而是多人一起使用的web服务器,各有各自的网站、管理自己的文件,互不干涉,且对系统无影响。鉴于功力较浅,只敢对较信得过的朋友开放这种账号,本文涉及的范围也有限,所以安全漏洞可能还有,请诸位切勿直接用于生产环境。 服务器环境:Ubuntu 8.10, OpenSSH_5.1p1 Debian-3ubuntu1, Apache 2.2.9, PHP 5.2.6-2ubuntu4 登录 - SFTP传统的 FTP 肯定是不如这个安全,telnet 更不用说了。使用 SFTP 还有一个起始想法是想配置证书自动登录,后来发现 SFTP 客户端(FileZilla)没这功能,就没再作下去,命令行下 scp 的自动登录倒是 和 ssh 的一样很好配置。 网上很多文章介绍把 sftp 用户限制在 创建一个用户组,作为所有 sftp 用户的用户组:
创建用户,设置密码,并归入 sftp 组:
为了进一步增强安全性,还可以将用户的登录 shell 设置为
下来就要配置 sshd 了,编辑配置文件
然后在此配置文件末尾添加:
配置含义大概为:凡是 sftp 组的用户,关闭 X 转发,chroot 到 现在,重启 ssh 服务,用户就只能通过 sftp 访问 PS: 我发现 sshd 如果配置错误,在 restart 服务的时候会先检查,而不是直接 stop 服务然后在 start 的时候出现错误,搞得服务启不来。大概是考虑到很多人都是远程 ssh 上来进行维护,服务 down 了以后就麻烦了,很贴心的设置。 Apache & PHPApache 配置简单,创建 但有一个极大的安全隐患需要堵上,用户可以通过编写 PHP 程序,读取系统中任何 www-data 用户有权限访问的文件,包括系统的 shadow 文件,包括 其它用户的网站文件等等。解决这个问题,一种是开启 PHP 的 safe_mode ,安全模式下 PHP 将只能访问 owner 为自己(也就是 www-data)的文件;另外一种是使用 open_basedir,这将限制 PHP 只能打开某一目录树下的文件,并且不可能通过符号链接避开此限制。显然 safe_mode 的副作用太多,后一种方法更适合我的这种情况,配置写到 Apache 的 conf 里就行了:
注意open_basedir 后面的参数只代表文件路径的前缀,所以要带上末尾的斜杠,明确指出是目录。 不使用 safe_mode 的另外一个原因是在未来的 PHP6 里就要删掉它了。 缺点最大的缺点就是 sftp 用户无法自己更改密码,除非自己写个守护程序啥的。这个程序在写的时候要非常小心,因为操作的是系统用户文件,如果遗留有安全漏洞可能会使别人获得其它用户权限。一个折中的方法是写个程序,定期更改密码并通过邮件告知用户,虽不方便但安全性要好一些。 Tags: Apache, PHP, safe, security, sftp, sshRelated posts
|
|
|