Я хочу знать, является ли то, что я предлагаю, типичным сценарием для системы, которую я имею или что-то, о чем я должен беспокоиться в отношении безопасности API.API-авторизация, разрешающая публичным пользователям создавать риски?
Система представляет собой небольшой виджет, который можно разместить на любом сайте, позволяя членам добавлять API-интерфейс в одну из моих кампаний.
Member Name
Member ID
Who the Member belongs to (user ID)
У меня есть ресурс API, называемый членами. Каждый член принадлежит пользователю моей системы.
Я создал авторизацию, как в таблице ниже. Примечание: авторизацией я имею в виду «это разрешение предоставлено для этого пользователя, чтобы выполнить это действие», и не следует путать это с аутентификации т.е. доступа к API):
============== ======= ======= ======= =======
Resource Create Read Update Delete
============== ======= ======= ======= =======
Member Public Owner Owner No
============== ======= ======= ======= =======
К публике я имею в виду ANY можно создать нового участника независимо от того, кто есть. Однако после создания этой записи только владелец (пользователь, для которого он был создан) может прочитать или обновить его.
Я не вижу, как кто-то получает вокруг этого вопроса о создать запись будучи общественности, как это происходит через JavaScript внешний на мой сайт, который я не имею никакого контроля над (на стороне клиента). Мне неизвестно, кто есть. Однако, делая что-либо с этим членом после того, как пользователь должен зайти на мой сайт и получить контроль.
То, что я мог видеть, как много поддельных членов создаются для моих пользователей происходит, но я не вижу способа это не быть предотвращен
бы кто-нибудь сделать это разные или я, я над этим думал?
Примечание: Тэг Python добавлен, потому что это API Python, и, возможно, это имеет значение или нет. Тег Javascript, добавленный в качестве клиентской стороны, является скриптом. Если нет или нет, я удаляю тег или вопрос.
Если ваш единственный вариант - создать участников через клиентскую сторону, то я думаю, что ваш выбор в порядке. Вам просто нужно ограничить количество пользователей, которые могут быть созданы с одного и того же IP-адреса, и удалить тех, кто не заходил в течение 48-72 часов. По крайней мере, это то, что я сделал бы. Запустите задание cron, которое удалит всех тех, кто никогда не регистрировался в течение определенного промежутка времени (вероятно, поддельный член) и ограничивает количество членов на каждый IP, скажем - 10.Таким образом, вы не можете быть отправлены спам-скриптом kiddie через консоль JS, но вы даете возможность людям в той же сети (IP) создавать несколько учетных записей, если это необходимо. – deb0rian
@Fratyr благодарит за ответ. Это единственный вариант, о котором я могу думать честно, но я открыт для других предложений. Аутентификация анонимного пользователя действительно то, что я прошу, но тогда в чем смысл? – Prometheus