我是否应该保护服务器脚本/文件不被用户访问,如果用户可以看到服务器文件是否存在安全风险,该怎么做?

问题描述 投票:0回答:1

我知道

.htaccess
不是执行此操作的最佳方法,但我无权访问其他服务器设置。

- index.php (root)
-- scripts (folder)
--- someScript.php (one of the scripts)

所以假设我有一个

index.php
文件位于服务器的
root
处,该文件向文件夹中的脚本发出 ajax 请求
scripts
,如果用户在搜索栏中输入
domain.com/scripts/
他现在有权访问该文件夹(我不知道是否可以从那里下载它们)。

我知道我可以使用

options -Indexes
,但这仍然允许用户直接进入脚本(如果他们现在知道脚本的名称),这不难找到甚至猜到?

我知道的第二个选择是

<Files ~ "\.txt$">
    Order allow,deny
    Deny from all
</Files>

但这会阻止所有内容访问文件,甚至是 ajax 请求。

所以,我的问题是,我应该以某种方式保护这些文件吗?用户能否看到或下载其内容,是否存在安全风险?

apache .htaccess
1个回答
1
投票

我应该以某种方式保护这些文件吗?

好吧,如果客户端请求它们(浏览器 AJAX 请求),你真的不能。

通过 AJAX(客户端)调用脚本时通常会发送自定义 HTTP 请求标头,因此脚本知道如何响应此类请求并返回适当的响应。虽然这不提供“安全性”,但它确实可以防止对该脚本的随意请求执行任何操作。

例如,如果您有文件

/scripts/ajax-script.php
只能通过 JavaScript AJAX 请求访问,则在发出 AJAX 请求时发送自定义标头,并在该标头不存在(或存在错误)时阻止对此文件的任何请求价值)。例如,在根
.htaccess
文件中使用mod_rewrite:

RewriteEngine On

# Block request to file if "X-Ajax-Request" header is not present
RewriteCond %{HTTP:X-Ajax-Request} ^$
RewriteRule ^scripts/ajax-script\.php$ - [F]

用户能否看到或下载他们的内容,是否存在安全风险?

您给出的示例是 PHP 脚本。任何直接请求只会看到其输出,不一定看到其内容。

唯一的安全风险是你自己造成的。如果对该脚本的任意请求返回所有活动用户和个人信息的列表,那么是的,这显然存在安全风险。但是,如果响应为空并且调用该脚本没有发生有害事件,那么这就不是问题。

© www.soinside.com 2019 - 2024. All rights reserved.