因此,我希望用户能够为“foo.php”脚本运行 write “foo.phps”,以显示该文件的源代码。
我只想在一个目录中执行此操作(因为它存在安全风险)。我可以使用 .htaccess 吗?
我在目录中添加了一个 .htaccess 文件并在其中写了这个:
AddType application/x-httpd-php-source .phps
然后重新启动Apache,但我无法在文件中添加“s”来获取源代码。我还需要用 PHP 做些什么吗?
因此,我希望用户能够为“foo.php”脚本运行 write “foo.phps”,以显示该文件的源代码。
我只想在一个目录中执行此操作(因为它存在安全风险)。我可以使用 .htaccess 吗?
我在目录中添加了一个 .htaccess 文件并在其中写了这个:
AddType application/x-httpd-php-source .phps
然后重新启动Apache,但我无法在文件中添加“s”来获取源代码。我还需要用 PHP 做些什么吗?
如果您想知道是否可以在 .htaccess 中使用指令,您可以随时查阅文档。对于 Apache 2.0,请参阅:
http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addtype
特别看一下“上下文:”部分。
在这种特定情况下,是的,您可以。您只需要确保允许在该特定目录上覆盖 FileInfo:
例如
您还需要确保文件存在。如果你有一个名为 test.php 的文件,你不能只是神奇地请求 test.phps
为了解决该问题,您可以使用 mod_rewrite 强制处理程序。例如,此规则在 mod_rewrite 文档中作为更改 mod_rewrite 中的处理程序的一个很好的例子
或者您可以创建一个符号链接,但您需要为每个文件手动(或编写脚本)和新文件执行此操作。
从php 文档中,您需要使用
SetHandler
解决此问题的一种方法是您将需要一个额外的脚本来简单地输出指定文件的源。然后你可以写一个重写规则来重写
进入
与此相关的一个主要问题是安全性。确保您只能输出所需的文件而不是任何文件(如 /etc/passwd)!