确定当前页面发送或调用(通过AJAX)的页面的最可靠和最安全的方法是什么。我不想使用 $ _ SERVER ['HTTP_REFERER'] ,因为(缺乏)可靠性,我需要调用的页面只来自我站点上的请求。< BR>点击 编辑:我希望验证是否正在从我网站上的页面调用执行一系列操作的脚本。

有帮助吗?

解决方案

REFERER由客户端的浏览器作为HTTP协议的一部分发送,因此确实不可靠。它可能不存在,它可能是伪造的,如果是出于安全原因,你就是不能相信它。

如果您想验证某个请求是否来自您的网站,那么您不能,但您可以验证该用户是否已访问过您的网站和/或已通过身份验证。 Cookie是在AJAX请求中发送的,因此您可以依赖它。

其他提示

我发现最好的是CSRF令牌,并将其保存在会话中,以便您需要验证引荐来源。

因此,如果您正在生成FB回调,那么它看起来像这样:

$token = uniqid(mt_rand(), TRUE);

我发现最好的是CSRF令牌,并将其保存在会话中,以便您需要验证引荐来源。

因此,如果您正在生成FB回调,那么它看起来像这样:

if(empty(

我发现最好的是CSRF令牌,并将其保存在会话中,以便您需要验证引荐来源。

因此,如果您正在生成FB回调,那么它看起来像这样:

$token = uniqid(mt_rand(), TRUE);

我发现最好的是CSRF令牌,并将其保存在会话中,以便您需要验证引荐来源。

因此,如果您正在生成FB回调,那么它看起来像这样:

<*>

然后index.php将如下所示:

<*>

我知道安全网站可以为所有安全网页提供相同的功能。

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

然后index.php将如下所示:

<*>

我知道安全网站可以为所有安全网页提供相同的功能。

GET['token']) ||

我发现最好的是CSRF令牌,并将其保存在会话中,以便您需要验证引荐来源。

因此,如果您正在生成FB回调,那么它看起来像这样:

$token = uniqid(mt_rand(), TRUE);

我发现最好的是CSRF令牌,并将其保存在会话中,以便您需要验证引荐来源。

因此,如果您正在生成FB回调,那么它看起来像这样:

<*>

然后index.php将如下所示:

<*>

我知道安全网站可以为所有安全网页提供相同的功能。

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

然后index.php将如下所示:

<*>

我知道安全网站可以为所有安全网页提供相同的功能。

GET['token'] !==

我发现最好的是CSRF令牌,并将其保存在会话中,以便您需要验证引荐来源。

因此,如果您正在生成FB回调,那么它看起来像这样:

$token = uniqid(mt_rand(), TRUE);

我发现最好的是CSRF令牌,并将其保存在会话中,以便您需要验证引荐来源。

因此,如果您正在生成FB回调,那么它看起来像这样:

<*>

然后index.php将如下所示:

<*>

我知道安全网站可以为所有安全网页提供相同的功能。

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

然后index.php将如下所示:

<*>

我知道安全网站可以为所有安全网页提供相同的功能。

SESSION['token']) { show_404(); } //Continue with the rest of code

然后index.php将如下所示:

<*>

我知道安全网站可以为所有安全网页提供相同的功能。

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

然后index.php将如下所示:

<*>

我知道安全网站可以为所有安全网页提供相同的功能。

使用 $ _SERVER ['HTTP_REFERER']

  

将用户代理引用到的页面地址(如果有)   当前页面。这是由用户代理设置的。并非所有用户代理都会   设置这个,有些提供修改HTTP_REFERER的能力   特征。简而言之,它无法真正被信任。

if (!empty(

使用 $ _SERVER ['HTTP_REFERER']

  

将用户代理引用到的页面地址(如果有)   当前页面。这是由用户代理设置的。并非所有用户代理都会   设置这个,有些提供修改HTTP_REFERER的能力   特征。简而言之,它无法真正被信任。

<*>SERVER['HTTP_REFERER'])) { header("Location: " .

使用 $ _SERVER ['HTTP_REFERER']

  

将用户代理引用到的页面地址(如果有)   当前页面。这是由用户代理设置的。并非所有用户代理都会   设置这个,有些提供修改HTTP_REFERER的能力   特征。简而言之,它无法真正被信任。

<*>SERVER['HTTP_REFERER']); } else { header("Location: index.php"); } exit;

没有可靠的方法来检查这一点。它真的在客户手中告诉你它来自哪里。您可以想象使用仅在您网站的某些页面上放置的cookie或会话信息,但这样做会破坏用户使用书签的体验。

在阅读所有假引用问题后,我们只剩下一个选项: 即 我们希望跟踪作为引用者的页面应该保持在会话中,并且当ajax被调用然后在会话中检查它是否具有引用者页面值并且执行其他操作没有动作。

另一方面,当他请求任何不同的页面时,然后将referrer会话值设为null。

请记住,会话变量仅在欲望页面请求中设置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top