Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何拒绝直接访问AJAX目录中的文件_Php - Fatal编程技术网

Php 如何拒绝直接访问AJAX目录中的文件

Php 如何拒绝直接访问AJAX目录中的文件,php,Php,我有几个页面通过jQuery.ajax调用内容。我不希望页面上的内容可见,所以我选择了.ajax,不显示/隐藏内容。我想保护AJAX目录中的文件不被浏览器url直接访问。我知道PHP标题可能会被欺骗,不知道使用“access”键还是通过htaccess来实现更好 我的问题是什么是更可靠的方法?没有登录/未登录的用户状态,主页需要能够从AJAX目录中的页面中提取内容 thx创建一个临时的时间编码会话变量。在回显数据之前,请检查php输出文件中的变量 或者,如果您不想使用会话。。这样做: $key=

我有几个页面通过jQuery.ajax调用内容。我不希望页面上的内容可见,所以我选择了.ajax,不显示/隐藏内容。我想保护AJAX目录中的文件不被浏览器url直接访问。我知道PHP标题可能会被欺骗,不知道使用“access”键还是通过htaccess来实现更好

我的问题是什么是更可靠的方法?没有登录/未登录的用户状态,主页需要能够从AJAX目录中的页面中提取内容


thx

创建一个临时的时间编码会话变量。在回显数据之前,请检查php输出文件中的变量

或者,如果您不想使用会话。。这样做:

$key=base64编码(time().'abcd')

在读取文件中: base64解码 爆炸 读时间。允许5秒缓冲时间。如果时间在盖章请求的5秒内。你是合法的


为了使其更安全,您可以更改加密/解密机制。

创建一个临时的时间编码会话变量。在回显数据之前,请检查php输出文件中的变量

或者,如果您不想使用会话。。这样做:

$key=base64编码(time().'abcd')

在读取文件中: base64解码 爆炸 读时间。允许5秒缓冲时间。如果时间在盖章请求的5秒内。你是合法的


为了使其更安全,您可以更改加密/解密机制。

为什么不将内容放在Web服务器目录之外,然后使用php脚本验证用户是否应该看到它,然后将其发送给他们

因此,您有
getcontent.php
,您可以查看一个cookie,或者一个提供给javascript页面并用于执行请求的令牌,然后它将只获取真实内容,设置mime类型并将其流式传输给用户

通过这种方式,您可以更改关于谁应该拥有访问权限的逻辑,而无需更改应用程序的任何其他部分


拥有
http://someorg.net/myimage.gif
http://someorg.net/myscript.php?token=887799&img_id=ddtw88
到浏览器,但是很明显,它需要使用
GET
,因此有时间限制的值是必要的,因为用户可以看到并重用它。

为什么不将内容放在Web服务器目录之外,然后使用php脚本验证用户是否应该看到它,然后将它发送给他们

因此,您有
getcontent.php
,您可以查看一个cookie,或者一个提供给javascript页面并用于执行请求的令牌,然后它将只获取真实内容,设置mime类型并将其流式传输给用户

通过这种方式,您可以更改关于谁应该拥有访问权限的逻辑,而无需更改应用程序的任何其他部分


拥有
http://someorg.net/myimage.gif
http://someorg.net/myscript.php?token=887799&img_id=ddtw88
到浏览器,但是很明显,它需要使用
GET
,因此有时间限制的值是必要的,因为用户可以看到重用它。

我会放弃这个想法,因为没有安全的方法

您的服务器永远无法区分“真实”的Ajax请求和“伪造”的Ajax请求,因为请求的每个方面都可以在客户端伪造。攻击者只需查看数据包过滤器即可查看页面发出的请求。复制请求很简单


你制定的任何解决方案都只会提供一种虚假的安全感。如果您有需要保密的数据,则需要采用一些更有效的保护措施,如身份验证。

我会放弃这一想法,因为没有安全的方法

您的服务器永远无法区分“真实”的Ajax请求和“伪造”的Ajax请求,因为请求的每个方面都可以在客户端伪造。攻击者只需查看数据包过滤器即可查看页面发出的请求。复制请求很简单


你制定的任何解决方案都只会提供一种虚假的安全感。如果您有需要保密的数据,则需要采用一些更有效的保护措施,如身份验证。

您能再解释一下吗?我以前没用过base64encode…它是标准函数吗?你能再解释一下吗?我以前没有使用base64encode…它是一个标准函数吗?理论上听起来不错,我现在没有足够的知识来执行它。理论上听起来不错,我现在没有足够的知识来执行它。他说的是,对于服务器来说,Ajax请求看起来与任何其他请求相同。您可以使用@stewie提到的脚本和加密方法,这会使操作变得稍微困难一些,但任何知道自己在做什么的用户都可以在发出Ajax请求时观察浏览器的操作,然后复制它。@Nathan,我不需要严密的安全性,这主要是为了阻止用户直接查看这些页面,如果直接查看的页面没有样式和未格式化。然而,我似乎什么都做不到@肮脏,但用户永远看不到您发出的Ajax请求,是吗?也就是说,他们永远不会得到你要求的页面。不是没有大量的源代码。@Dirty Bird Design:如果你唯一的问题是页面没有样式和格式,我会说你一点都不担心。。识别并访问您的ajax url的用户看到原始数据可能不会感到惊讶。他说的是,对于服务器来说,ajax请求与任何其他请求都是一样的。您可以使用@stewie提到的脚本和加密方法,它们会使操作变得稍微困难一些,但是任何用户