我知道nonce可以检查意图,但如果我可以用它们来限制数据库读取,那就没有任何意义了?我的意思是,我正在使用AJAX从数据库中获取记录,但我不希望任何人通过其他方式获得该数据(向该数据库发布请求admin-ajax.php
第页)。
例如,在我的AJAX处理程序中,我有这么多的工作(我正在发送$myid
以及AJAX调用中的操作):
$myid = 5575;
$query = "SELECT `id` FROM table WHERE `user_id` = $myid;";
$data = $wpdb->get_col( $query );
echo json_encode($data);
die();
我通过AJAX调用了这么多的数据,我如何才能保护它不受恶意用户的攻击,这些用户可能会试图直接对该页面进行POST调用?Edit: @Bainernet感谢您的详细解释,非常感谢,但我的问题实际上是关于@Milo说了什么,我可以看到,除非我能为该请求创建一个唯一的nonce,否则我无法按照@goldenapples做任何事情。正当
我正在用Facebook JS SDK处理所有这些事情,所以所有必须做的事情都只使用AJAX(没有页面加载),以及我能想到的让用户登录的任何事情wp_signon()
任何人都可以在没有授权的情况下这样做。因此,对于一个实际使用该站点的用户来说,我没有任何唯一性,而一个试图读取一些数据而不是该站点的用户调用获取数据。无论我能做什么,让它登录或任何事情,都可以被其他人复制。有人能想到什么吗?
Update: 我想我已经找到了一个解决方法action
并使用PHP SDK从Facebook获取其他参数。但我仍然愿意就此提出建议或其他任何建议。