拒绝访问服务器上的某些文件
Deny access to certain files on server
我有一个时事通讯订阅系统,我想拒绝访问某些文件(例如订阅用户的脚本)。我遇到的问题是我需要拒绝任何来自外部的人访问文件,但脚本需要相互访问。
例如我有以下文件:
- index.html
- subscribe.php
应该无法通过键入相应的 URL 来访问 subscribe.php。但是,index.html 需要能够将输入到表单中的数据发送到 subscribe.php。
这是我到目前为止尝试过的方法:
我将 index.html 留在我的根目录中,并将 subscribe.php 移动到文件夹 /restricted。我将文件 .htaccess 添加到受限制的文件夹中。 .htaccess 仅包含:deny from all
当我尝试通过 URL 访问 subscribe.php 时,这给了我一个 403 错误,但是当我在 index.html[=11 中提交表单时,它也给了我同样的错误=]
我的问题:我的 .htaccess 文件需要什么样的格式才能存档我想要的内容,为什么我尝试的内容不起作用?
The problem I ran into is that I need to deny access to the files for
anyone coming from outside, but the scripts need to have access to
each other.
你错了;跟你后面说的不一致:
The problem I ran into is that I need to deny access to the files for
anyone coming from outside, but the scripts need to have access to
each other.
您 没有提交表格; 客户端的浏览器 正在通过 Web 请求提交表单。不要这样想:
index.html needs to be able to send the data that was input into a
form to subscribe.php.
事实并非如此。 index.html
包含 html,当在客户端浏览器上呈现时,指示浏览器在何处以及如何提交注册表单。
您可以尝试以下几种方法:
- 表单通常与 POST 请求一起提交。您可以编写
subscribe.php
来阻止 GET 请求并期待适当的表单提交信息
- 可以检查引荐来源 [原文如此] header 以确保引荐网页确实是您的 'index.html';但请注意,与任何具有已知值的 http header 一样,伪造起来很容易。
- PHP 会话可用于在发布提交表单之前跟踪客户对 index.html 的访问。 PHP sessions(通常)使用客户端 cookie 来存储 session 'token',然后在服务器端将其与存储在文件中的信息哈希相关联或 session缓存。如果编程得当,客户端永远无法访问此数据,因此只能获取 session 变量 'HasVisitedIndex' 或您在 session 中为它们设置的任何设置。
可能还有其他解决方案,但如您所见,其中 none 是一个完整的 slam-dunk,因为 HTTP 的无状态 client-server 模型。
我有一个时事通讯订阅系统,我想拒绝访问某些文件(例如订阅用户的脚本)。我遇到的问题是我需要拒绝任何来自外部的人访问文件,但脚本需要相互访问。
例如我有以下文件:
- index.html
- subscribe.php
应该无法通过键入相应的 URL 来访问 subscribe.php。但是,index.html 需要能够将输入到表单中的数据发送到 subscribe.php。
这是我到目前为止尝试过的方法:
我将 index.html 留在我的根目录中,并将 subscribe.php 移动到文件夹 /restricted。我将文件 .htaccess 添加到受限制的文件夹中。 .htaccess 仅包含:deny from all
当我尝试通过 URL 访问 subscribe.php 时,这给了我一个 403 错误,但是当我在 index.html[=11 中提交表单时,它也给了我同样的错误=]
我的问题:我的 .htaccess 文件需要什么样的格式才能存档我想要的内容,为什么我尝试的内容不起作用?
The problem I ran into is that I need to deny access to the files for anyone coming from outside, but the scripts need to have access to each other.
你错了;跟你后面说的不一致:
The problem I ran into is that I need to deny access to the files for anyone coming from outside, but the scripts need to have access to each other.
您 没有提交表格; 客户端的浏览器 正在通过 Web 请求提交表单。不要这样想:
index.html needs to be able to send the data that was input into a form to subscribe.php.
事实并非如此。 index.html
包含 html,当在客户端浏览器上呈现时,指示浏览器在何处以及如何提交注册表单。
您可以尝试以下几种方法:
- 表单通常与 POST 请求一起提交。您可以编写
subscribe.php
来阻止 GET 请求并期待适当的表单提交信息 - 可以检查引荐来源 [原文如此] header 以确保引荐网页确实是您的 'index.html';但请注意,与任何具有已知值的 http header 一样,伪造起来很容易。
- PHP 会话可用于在发布提交表单之前跟踪客户对 index.html 的访问。 PHP sessions(通常)使用客户端 cookie 来存储 session 'token',然后在服务器端将其与存储在文件中的信息哈希相关联或 session缓存。如果编程得当,客户端永远无法访问此数据,因此只能获取 session 变量 'HasVisitedIndex' 或您在 session 中为它们设置的任何设置。
可能还有其他解决方案,但如您所见,其中 none 是一个完整的 slam-dunk,因为 HTTP 的无状态 client-server 模型。