[英]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.