Php 阻止直接访问jquery帖子url
我有一个jquery脚本,它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
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的可能副本使它变得简单。我会那样做的。我不知道这件事