繁体   English   中英

验证客户端JavaScript事件的最佳方法

[英]Best way to authenticate client side JavaScript events

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

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

你不能

您可以执行一些操作,例如在来自JavaScript的请求中添加额外的标头,但是由于您必须将有关如何执行此操作的说明发送给浏览器,因此任何人都可以读取它们并为自己定制的非JS复制它们请求。

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

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

如果您的意思是“检查引荐来源标头”,则否。 这是由客户端设置的,客户端可以将其设置为任何所需的值。

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

如果要阻止原始客户端在一个会话中进行多个请求,则需要从服务器向客户端发送一个nounce编号,该编号只能使用一次。 请参阅: http : //en.wikipedia.org/wiki/Cryptographic_nonce

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

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

作为php文件的第一行,您要发送POST。

编辑 ->或类似的东西

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

     //all your PHP code

    }

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

isset($ _ POST ['your variable'])

去检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM