Как применять проверку входящих сообщений ICP к административному методу

Хук inspect_message позволяет канистре заранее отклонять нежелательные входящие сообщения. Проверка полномочий нужна и в самом привилегированном методе.

Проверьте второй путь вызова

Пусть set_fee отсекает обычных пользователей в inspect_message, а в теле сразу записывает переданную комиссию. Вызовите его как через агент, так и из тестовой канистры. Межканистровые сообщения обходят этот хук, поэтому второй тест выявляет отсутствие проверки в самом методе.

user U → ingress inspection → administrative method
canister C → administrative method

Сделайте предварительную проверку дешёвой

При необходимости заранее отсекайте неподдерживаемые имена методов или слишком большие аргументы. При исполнении заново проверьте вызывающего и его текущие права. Состояние, от которого зависят полномочия, может измениться после допуска. Проверьте успешные и отклонённые вызовы от обоих типов отправителей.

Источники