客户端可以查看服务器端的PHP源代码吗?

时间:2009-10-13 23:02:49

标签: php security

我正在开发一个PHP应用程序,它必须响应来自多个客户端的请求,我认为“任何客户都可以看到我正在编写的PHP代码吗?”。

7 个答案:

答案 0 :(得分:21)

不,除非

  • 服务器配置错误
  • 有一个不好的回声/包含在某个地方

答案 1 :(得分:11)

没有。除非你在他们实际使用它的地方回应它。

答案 2 :(得分:6)

使用www服务目录下方或外部的包含。 (不能为了Frankie而+1 ..)

不要为http目录使用符号链接。我故意使用它来显示源和执行,具体取决于之前的用户请求路径,但是这需要httpd.conf更改(或配置错误)并且可以在httpd.conf中明确禁用。

如果允许使用fopen下载文件,请不要传递用户创建的任何内容,否则他们可能会弄清楚如何获取它们可以找到的任何文件。 考虑:

fopen('reports/' . $_GET['blah']);

用户传入'../ index.php'

答案 3 :(得分:3)

不,但你应该采取一切措施来阻止它。

你应该总是在你的服务器工作目录(比如/ www)下面的目录中设置你的敏感代码(哎呀,为什么不是全部?),这样如果服务器搞砸了,它就不能显示你的代码到世界,因为该代码将包含在首先不起作用的PHP中。

答案 4 :(得分:2)

如果你的网络服务器设置为服务而不是解析你的PHP是的。但那时客户不会工作。所以除非有任何安全漏洞,否则回答是否定的。

答案 5 :(得分:1)

没有。假设您已正确安装L / UAMP服务器,或者没有打印出来(echo,print_r等)以及代码的内容,PHP将被处理,并且它要输出的逻辑或HTML将是在页面上使用,不可见。

N.B。如果目录中没有“索引”或正确的.htacess文件,Apache服务器将显示目录中的文件列表,可以下载和查看。

答案 6 :(得分:0)

它发生的一个错误是在php字符串中粘贴一个php标签,例如:

$string = "This is the answer: <s><?php echo $answer; ?></s>"; 
echo $string;

这个人做了一个Ctrl + C和Ctrl + V的东西,应该沿着字符串打印,但编码器忘了通过分心删除php标签。