0

所以我有一个 JavaScript 和 php 网络应用程序。在我的应用程序中,有时 JavaScript 会调用创建帖子的 POST 请求。我想知道验证我的请求以防止任何人访问该 URL 的最佳方法是什么。它不需要那么灵活。我不会有多个应用程序。我只需要 php 和 JavaScript 中的一个案例解决方案。

编辑:第二个问题。是否只是确保请求来自的 URL 足够?

4

3 回答 3

2

你不能。

当请求来自 JavaScript 时,您可以执行诸如向请求添加额外标头之类的操作,但是由于您必须将有关如何执行此操作的说明发送到浏览器,因此任何人都可以阅读它们并为他们自定义构建的非 JS 复制它们要求。

在 WWW 上,您可以对人员进行身份验证(使用凭据),但您不能对客户端进行身份验证(除非您在已编译的捆绑包中提供客户端软件……即使这样也不可靠,官方的 Twitter 客户端身份验证密钥已被广泛使用现在)。

是否只是确保请求来自的 URL 足够?

如果您的意思是“检查引用标头”,那么不会。这是由客户设置的,客户可以将其设置为他们喜欢的任何内容。

于 2013-03-08T07:00:58.303 回答
1

最好的办法可能是建立一个 PHP 会话并将存储在 $_SESSION 中的标识发送到 javascript。在每个 AJAX POST 中,您添加此标识并将其在服务器端检查到存储在 $_SESSION 中的内容。如果它们不匹配,则可能是有人试图操纵 URL 或 CSRF。

如果您想阻止原始客户端在会话中执行多个请求,您需要从服务器向客户端发送一个只能使用一次的通知号。见: http ://en.wikipedia.org/wiki/Cryptographic_nonce

于 2013-03-08T07:02:46.870 回答
0

您可以将此行放在脚本的顶部

<?php  if ( ! defined('BASEPATH')) exit('Permission denied: direct access');

作为您将 POST 发送到的 php 文件的第一行。

编辑- >或类似的东西

 if(!isset($_POST))
   {
      die('no direct access allowed');
   }
   else
   {

     //all your PHP code

    }

您还可以在帖子中包含您自己的变量并将其用于

isset($_POST['你的变量'])

去检查。

于 2013-03-08T07:02:14.467 回答