1

我的网络根文件夹中有一个用于存储图像的文件目录,我想知道如何保护该文件夹。我阻止人们将脚本上传到该文件夹​​,我检查文件扩展名,如果它不是图像,那么它将不会保存到该文件夹​​。

但是伪造扩展很容易,如果有人设法将脚本上传到我的文件目录并从浏览器访问它会发生什么

所以我需要一种方法来防止脚本在该文件夹中运行并且只允许图像运行。

我知道 htaccess 可以做到这一点,但我不知道如何设置它。我的 .htaccess 文件是这样的:

AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI
ForceType application/octet-stream
<FilesMatch "(?i)\.(gif|jpe?g|png)$">
  ForceType none
</FilesMatch>
Options All -Indexes

但它不起作用,我在该文件夹中保存了一个 php 文件,然后尝试从浏览器访问它,我仍然可以访问它。你知道怎么做吗?或者,如果您对此有更安全的方法,请告诉我。

谢谢你

4

1 回答 1

1

我认为它不起作用,因为您只添加了一个额外的处理程序,而没有删除其他处理程序。

将另一个 .htaccess 文件放在要保护的文件夹中(而不是弄乱 match 指令)是最简单的方法,其中包含:

# Fix PHP, you should do matching commands for JSP and ASP, & html
RemoveType application/x-httpd-php php
# .... add the other remove-handler statements here .... #

# Optionally make these equivalent to text files.
# UPDATE: Taken this out as you dont want people to see PHP files at all
#AddType text/html php

# To disable cgi and server side includes & indexes
# You need to check the setup of Apache, some of the file types
# listed should already be handled as CGI (.pl, .py, .sh)
Options -ExecCGI -Includes -Indexes

# Completely block access to PHP files
<FilesMatch "\.(php|phps|html|htm|jsp|asp)$">
    Order allow,deny
    Deny from all
</Files>
# Add in any additional types to block

这涵盖了 PHP 和 CGI​​,你应该为 JSP 和 ASP 做匹配的命令

更新:添加代码以完全阻止对 PHP 文件的访问 - 抱歉,最初认为您根本不希望它们执行。另请注意,我已经注释掉了将 PHP 文件转换为文本文件的行。

于 2012-06-25T13:06:16.610 回答