Какая лучшая практика проверки достоверности запроса через ajax?
1) Нужно убрать отправку user id через Ajax. Это вообще ни к чему.
2) user id нужно брать у текущего авторизованного юзера (В Yii что-то вроде Yii::$app->user->id)
Добрый день.
Про обращение напрямую к глобальному массиву и получение id пользователя уже написали не раз.
А проверку csrf токена можно сделать так:
в представлении$this->registerJs('
   $("#subscribe").on("click", function(e){
        $.ajax({
              method: "POST",
              data: {id: $(this).attr("data-post-id"),_csrf: "' . Yii::$app->request->csrfToken . '"},
              success: function(data){
                console.log(data)
              }
            })
    })
', View::POS_END)
в контроллереif(Yii::$app->request->isAjax){
    if(Yii::$app->request->validateCsrfToken()){
       // продолжаем выполнение кода.
    }
    else{
        return 'Error Csrf Token';
    }
}
p.s.
Думаю, что строки подобные этой $user = User::findOne($_POST['userID']); необходимо заменить на 
строку$user = User::findOne(['id' => Yii::$app->user->identity->id]);