Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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/jquery/71.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 阻止直接访问jquery帖子url_Php_Jquery - Fatal编程技术网

Php 阻止直接访问jquery帖子url

Php 阻止直接访问jquery帖子url,php,jquery,Php,Jquery,我有一个jquery脚本,它post/getdata to.php脚本。但是我想阻止直接访问php脚本。例如,如果用户查看html源代码,他们将能够通过从js文件复制url直接访问php脚本,我不希望这样。我如何防止用户这样做??我希望用户通过html UI使用它。我在谷歌上搜索过,但没有找到这个链接。然而,我注意到一些流行的网站能够做到这一点。我应该怎么做呢?这里有一个解决方案: <?php if(isset($_POST["post_var])) { //to the code you

我有一个jquery脚本,它
post/get
data to.php脚本。但是我想阻止直接访问php脚本。例如,如果用户查看html源代码,他们将能够通过从js文件复制url直接访问php脚本,我不希望这样。我如何防止用户这样做??我希望用户通过html UI使用它。我在谷歌上搜索过,但没有找到这个链接。然而,我注意到一些流行的网站能够做到这一点。我应该怎么做呢?

这里有一个解决方案:

<?php
if(isset($_POST["post_var]))
{
//to the code you want to do when the post is made
}
else
{
//do what you want to do when the user views the post page
}
?>

您在这里寻找的似乎是一个简单的重定向

在php文件的顶部添加类似的内容。如果未发布正确的帖子,这将阻止访问该页面。当然,您必须更改帖子并重定向到与您的项目更相关的内容

if (!isset($_POST['data'])) {
    header('Location: your-redirect-location');
}
您还可以基于$\u SERVER['HTTP\u REFERER']变量重定向


编辑:我本来想在评论中解释一下,但是太长了。我应该指出,这是一个简单的解决方案。它将防止人们意外访问您的脚本。为您的问题创建一个100%安全的解决方案确实很困难,如果有人真的想访问它,他们将能够访问。如果您在所讨论的脚本中没有任何安全的内容,这将很好。否则,您将不得不寻找一个替代方案。

您的问题与a类似,并且具有与a相同的问题

为了降低风险,您可以检查请求方法,检查推荐人,并检查来源(如果设置)。最好的方法是在服务器上生成一个秘密令牌,客户端在每个请求中都会将该令牌发送回服务器。由于您与友好的用户打交道,这些用户可以访问您的实时代码,因此他们可能能够调试脚本并找到值,但这将只用于一个会话,这将是一个真正的麻烦

如何防止用户这样做

你做不到——你所能做的就是降低人们篡改你脚本的风险。确保您拥有正确的HTTP_REFERER和/或POST数据在这方面都很有用:“恶意”用户需要的不仅仅是将其浏览器指向URL

这里可以使用更多技术:

  • 使用会话变量:您可能不希望未登录的用户(如果适用)使用URL
  • 使用一次性质询(令牌):您可以在HTML页面中放置一个值,并让JS代码将该值与POST请求一起发送。生成该值时,将其存储在会话中。根据会话令牌检查发布的令牌可以保证用户在提交数据之前至少“看到”HTML页面-这对于防止重复提交也很有用
但是,请记住,浏览器可以做的任何事情,人们也可以做。所有这些技术都可以防止好奇者造成伤害,但不能防止恶意者

您所能做的就是确保没有人会真正伤害您,在这方面,您的Ajax URL与您站点的任何其他URL都没有区别:如果它是可公开访问的,则必须使用您在其他地方已经使用的任何技术(会话、用户权限等)来保护它


毕竟,你为什么要关心用户使用这个URL而不是使用浏览器?您可能想从一个API调用的角度来考虑它,顺便说一句,您的页面恰好使用了这个API调用。

tks jim u的可能副本使它变得简单。我会那样做的。我不知道这件事