[英]prevent direct access to jquery post url
我有一个jQuery脚本,该脚本将数据post/get
到.php脚本。 但我想防止直接访问php脚本。 例如,如果用户查看html源代码,他们将能够通过从js文件复制url直接访问php脚本,而我不希望那样。 我如何防止用户这样做? 我希望用户通过html UI使用它。 我有谷歌,但没有找到任何链接。 但是,我确实注意到一些受欢迎的网站能够做到这一点。 我应该怎么做呢?
您似乎在这里寻找一个简单的重定向。
在您的php文件顶部添加类似的内容。 如果没有进行适当的张贴,这将阻止访问该页面。 当然,您必须更改帖子并重定向到与您的项目更相关的内容。
if (!isset($_POST['data'])) {
header('Location: your-redirect-location');
}
您也可以基于$ _SERVER ['HTTP_REFERER']变量进行重定向。
编辑:我打算在评论中对此进行解释,但时间太长。 我应该注意,这是一个简单的解决方案。 这将使人们避免意外访问您的脚本。 为您的问题创建100%安全的解决方案确实很困难,而且如果有人真的想访问它,他们将能够提供帮助。 如果您在相关脚本中没有任何安全措施,那就可以了。 否则,您将不得不寻找替代方案。
这是一种解决方案:
<?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
}
?>
我如何防止用户这样做?
您不能-您所能做的就是减轻人们摆弄脚本的风险。 在这方面,确保您拥有正确的HTTP_REFERER和/或POST数据都非常有用:“恶意”用户需要的不仅仅是将浏览器指向URL。
可以在此处使用更多技术:
但是,请记住,浏览器可以执行的任何操作,人们也可以执行。 所有这些技术都可以阻止好奇者造成伤害,但不能阻止恶意行为。
您所要做的就是确保没有人能真正伤害到您,就此而言,您的Ajax URL与您网站的其他URL相同:如果可以公开访问,则必须使用您已经在其他地方使用的任何技术来保护它-会话,用户权限等。
毕竟,您为什么要关心用户不使用浏览器使用此URL? 您可能想用一个偶然发生的您页面使用的API调用来考虑它。
您的问题类似于跨站点请求伪造 ,并且具有相同的问题。
为了降低风险,您可以检查请求方法,检查引荐来源并检查来源(如果已设置)。 最好的方法是拥有在服务器上生成的秘密令牌,客户端在每个请求中都将其返回。 由于您正在与有权访问您的实时代码的友好用户打交道,因此他们可能能够调试脚本并找到值,但这仅适用于一次会话,这确实是一件麻烦事。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.