Вы должны обязательно проверять разрешения на каждый запрос. Вы никогда не должны полагаться только на ввод данных для безопасности!
И помните, если вы можете расшифровать его, то же самое может сделать злоумышленник, который хочет взломать ваш сайт.
Использование сеанса для хранения разрешений - это компромисс между безопасностью и производительностью, и я думаю, что это было бы средним уровнем безопасности.
Но все же - если у вас есть конфиденциальные данные - проверяйте каждый запрос, каждый раз. Не оптимизируйте для нескольких микросекунд во имя меньшей безопасности.
Поскольку теперь я увидел вашу реальную проблему в комментарии, я могу предложить использовать какой-то дополнительный хэш для каждого обновления, которое делает пользователь, и сохранить его в сеансе пользователя. Затем проверьте, использует ли пользователь тот же самый хеш, например ::1010*.
$hash = md5(microtime());
$_SESSION['secret_user_hash'] = $hash;
И поместите его в URL, например:
&z=<?php echo substr($hash, 5, 10); ?>
И после того, как пользователь сделает запрос, просто проверьте, является ли он тем же хешем.
Имейте в виду, что если вы используете тяжелый AJAX, вы всегда должны обновлять свой хэш, когда вы меняете его в сеансе. Лучший способ, которым я могу придумать, - это сохранить массив в сеансе случайного хэша (например, 5) и использовать его случайным образом для запроса. Таким образом, у вас большой пул, и вам не нужно обновляться после каждого запроса.