Как применять проверку входящих сообщений ICP к административному методу
Хук inspect_message позволяет канистре заранее отклонять нежелательные входящие сообщения. Проверка полномочий нужна и в самом привилегированном методе.
Проверьте второй путь вызова
Пусть set_fee отсекает обычных пользователей в inspect_message, а в теле сразу записывает переданную комиссию. Вызовите его как через агент, так и из тестовой канистры. Межканистровые сообщения обходят этот хук, поэтому второй тест выявляет отсутствие проверки в самом методе.
user U → ingress inspection → administrative method
canister C → administrative method
Сделайте предварительную проверку дешёвой
При необходимости заранее отсекайте неподдерживаемые имена методов или слишком большие аргументы. При исполнении заново проверьте вызывающего и его текущие права. Состояние, от которого зависят полномочия, может измениться после допуска. Проверьте успешные и отклонённые вызовы от обоих типов отправителей.