Возможность работы с определённым ID пользователя в строке, выведенной через foreach

Возникла проблема. Через foreach я перебираю массив с неверифицированными участниками, имеющие id, nickname и email. По нажатию на кнопки acceptUser / declineUser я должен отправлять POST-запрос на страницу /api/accept_request.php / /api/decline_request.php, отправляя в теле запроса свой id ($adminId в коде), и id пользователя, в строке которого я нажимаю на соответствующую кнопку. На данный момент я с помощью JavaScript передаю id юзера через атрибут data-userid и обрабатываю запрос через fetch. Однако проблема заключается в том, что этот самый атрибут можно спокойной изменить через код элемента и код начнёт использовать уже изменённый id. Как в моём примере перебора пользователей через foreach можно реализовать подобный функционал? Предполагаю, что каждую кнопку нужно обернуть в форму на сопутствующие action, однако как мне передавать id именно того пользователя, напротив которого я использую эти кнопки?

Мой код:

    <section class="section">
    <h1 class="section__title">Верификация пользователей</h1>
    <p class="section__subtitle">На данный момент <strong><?php echo count($unverifyUsers); ?></strong> чел. ждут верификации аккаунта.</p>
    <div class="verify-list">
        <?php foreach ($unverifyUsers as $unverifyUser) : ?>
        <div class="verify-row">
            <p>Пользователь: <strong><?php echo $unverifyUser['nickname']; ?></strong>. Почта: <strong><?php echo $unverifyUser['email']; ?></strong>.</p>
            <div class="verify-actions">
                <button id="acceptUser" data-userid="<?php echo $unverifyUser['id'] ?>" class="verify-action verify-action--primary">Подтвердить</button>
                <button id="declineUser" data-userid="<?php echo $unverifyUser['id'] ?>" class="verify-action verify-action--gray">Отклонить</button>
            </div>
        </div>
        <?php endforeach ?>
    </div>
</section>

Ответы (1 шт):

Автор решения: Daizygod

На стороне клиента легко можно посмотреть код .js файла и узнать какие данные, в каком формате и куда отправлять запрос, это небезопасно

Самое популярное решение на данный момент это использование токенов jwt, к примеру можете прочитать эту статью

Есть множество библиотек для удобства работы

Если кратко: метод логина генерирует токен и возвращает его, дальше все запросы подписываются этим токеном, токен не нужно хранить в базе данных, но токен должен "сгорать" по времени, и создаваться новый, к примеру каждые 15 минут.

Таким образом можно обеспечить безопасность приложения

→ Ссылка