Как запретить пользователю доступ к действию, введя его в адресную строку? - PullRequest
0 голосов
/ 26 июня 2018

У меня есть метод potentially_dangerous_method() в моем контроллере.Я не хочу, чтобы пользователь имел к нему доступ в любое время, так как он выполняет удаление и вставку некоторых записей в базе данных.Я только хочу, чтобы другое действие bouncer() (и только это) вызывало его, и это действие имеет все надлежащие проверки и проверки, поэтому оно знает, что метод действительно может быть вызван.

Но в его нынешнем видепользователь может просто набрать [application]/[controller]/potentially_dangerous_method в адресной строке, чтобы получить доступ к методу.Как я могу предотвратить это?

1 Ответ

0 голосов
/ 27 июня 2018

Если к potentially_dangerous_method нет необходимости обращаться напрямую как к его собственной конечной точке HTTP, вы можете включить его в контроллер и по-прежнему сделать его закрытым, (а) начав его имя с двойного подчеркивания (т. Е. __potentially_dangerous_method ) или (b) определяя его параметрами (например, def potentially_dangerous_method(arg1, arg2):). См. Документацию по отправке .

Кроме того, вы можете определить такие функции в файлах модели или в модулях.

Наконец, если такие функции должны быть доступны напрямую через HTTP-запросы, вы можете защитить их с помощью URL-адресов с цифровой подписью с помощью декоратора @auth.requires_signature().

...