Вопрос по – Запрошенное вами действие не допускается ошибка

9

Я создал модуль с именем Gallery, который отлично работает на моем локальном хосте с версией 2.0.3, но при использовании версии 2.1.0 на удаленном сайте я не могу отправить форму и получаю сообщение об ошибке:

The action you have requested is not allowed.

Почему это?

Ваш Ответ

11   ответов
0

Для меня проблема заключалась в том, что я загружал представление в индекс, а потом менял его, и это работало:

public function index()
{
    // Load Login Page
    redirect('login/login_page','refresh');

}

public function login_page()
{
    $data['title'] = 'Login Page';

    $this->load->view('templates/header', $data);
    $this->load->view('users/login_view', $data);
    $this->load->view('templates/footer');
}
2

У меня есть форма, которая была построена вне CI (в Joomla), но я хотел обработать с помощью CI. Мое исправление состояло в том, чтобы выборочно отключить csrf для конкретных рефералов. Я добавил это в config, сразу после параметров конфигурации по умолчанию для csrf:

/* Set csrf off for specific referrers */
$csrf_off = array(
    "http://yourdomain.com/your-form-url",
    "http://yourdomain.com/some-other-url"
);

if (isset($_SERVER["HTTP_REFERER"])) {
    if (in_array($_SERVER["HTTP_REFERER"],$csrf_off)) {
        $config['csrf_protection'] = false;
    }
}

Это отключает защиту csrf для определенных URL-адресов в массиве $ csrf_off, но оставляет его нетронутым для всех других запросов.

Error: User Rate Limit Exceeded
0

Используйте средство открытия формы codeigniter как это:

<php echo form_open(url,method,attributes);?>

см. документацию формы codeigniter для получения дополнительной информации.

0

Это, вероятно, редкий случай, но я не вижу своей проблемы, поскольку на моем сервере много разных доменных имен, которые очень похожи. Проблема заключалась в том, что я выполнял посадку в домене, который был полностью неправильным, но поскольку "запрашиваемое вами действие не разрешено". ошибка имеет приоритет над & quot; Ошибка 404 не найдена & quot; Я не мог этого увидеть. Моя проблема заключалась в том, что я не изменил свой base_url на правильный домен. Поэтому, если ни одно из вышеперечисленных решений не работает для вас, вы можете проверить свои настройки для $ config [& apos; base_url & apos;] в application / config.

0

Я использую Codeigniter 3 ту же проблему с

The action you have requested is not allowed.

Исходя из мнения Исаака Пака, я изменил свой base_url на то, что обычно вводил в адресной строке. как это...

вместо того, чтобы положить

http://www.domain.org

я пишу это так ...

http://domain.org

так как мойbase_url() просто..

$config['base_url'] = 'http://domain.org/';

исправление работает для моего сайта ...

14

Это ошибка Codeigniter, связанная с защитой CSRF. Вы можете отменить это вcms/config/config.php

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded<input type="hidden" name="csrf_token" value="4ac7a11a8239660afaa87cb48f2694e2" style="display:none;" />Error: User Rate Limit Exceeded<form> .... </form>Error: User Rate Limit Exceeded<form> .... </form>Error: User Rate Limit Exceeded<?php echo form_open();?>Error: User Rate Limit Exceeded<?php echo form_close();?>
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
3

В вопросах программирования вы не решаете проблемы, вы исправляете это. То, что я хочу сказать, это то, что эта функция не будет здесь, если она непригодна для использования: потому что она есть, и она работает для меня. У вас просто есть проблема с реализацией.

Мой ответ: Удалите все тире, точки и любые другие не алфавитно-цифровые символы из значений следующих записей в application / config / config.php, как показано ниже:

$config['sess_cookie_name'] = 'mycookiename'; //instead of "my_cookie_name"
$config['csrf_token_name']  = 'mycsrftoken';  //instead of "my.csrf.token"
$config['csrf_cookie_name'] = 'mycsrfcookie'; //instead of "my/csrf/cookie"

Кстати, черточки иногда работают, но я рекомендую по возможности использовать отдельные слова при именовании значений конфигурации. Нет, если у вас нет времени и навыков для изучения основных файлов Codeigniter, связанных с тем, над чем вы когда-либо работаете, просто чтобы убедиться, что это безопасно.

В любом случае, я надеюсь, что это поможет кому-то там, хотя мой ответ опоздал более чем на год.

1

Это старый вопрос, но эта та же самая проблема стоила мне так много времени, что я хотел поделиться тем, что проблема была в моем случае. Это может помочь кому-то.

Я использую Codeigniter 3.0.6 и CommunityAuth 3 вместе с ним, и я получаю эту ошибку после входа в систему.

Это сбивало с толку, поскольку проблема иногда возникала, а не в другие времена.

Мой "base_url" в CI файл config.php был настроен на что-то вроде «www.mysite.com»;

Когда вы просматриваете сайт с помощью «MySite.com» (извещение «www» отсутствует в адресе), и вы отправляете форму, в которой используется CI «base_url»; настройки, как при входе в систему CommunityAuth, тогда проверка CSRF завершается неудачно, и вы получаете "Запрошенное вами действие не разрешено". ошибка.

Error: User Rate Limit Exceeded## REWRITE www traffic to root domain RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=302,L]Error: User Rate Limit Exceeded
24

Я согласен с @Jhourlad Estrella в устранении проблем вместо отключения функции безопасности, однако мне кажется, что настоящая проблема заключается в скрытом поле ввода, которое содержит токен.

Вместо использования простого HTML для создания элемента формы используйтеform_open() а такжеform_close() вспомогательные функции. Причина в том, что когда вы используете вспомогательную функцию, она автоматически вставляет маркер csrf в качестве скрытого поля в форме.

Вы также можете сделать это вручную, добавив токен в качестве скрытого поля ввода в форме.

<input type="hidden" name="csrf_hash_name" value="your-hash-value-here">

Это позволит вам оставаться защищенным от CSRF-атак и решить вашу проблему.

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededform_open()Error: User Rate Limit Exceededform_close()Error: User Rate Limit Exceeded$this->security->get_csrf_hash();Error: User Rate Limit Exceeded$this->security->get_csrf_token_name();
1

Я нашел с помощью формы вспомогательных функций

пример

<?php echo form_open('controller/function');?>

<?php echo form_input('username', 'Username');?>

<?php echo form_close();?>

Использование вспомогательных функций, как указано выше, должно прекратить показ сообщения об ошибке CSRF.

Если я не использую echo, то form_input (), если я размещаю только обычный ввод, вызовет ошибку CSRF при перезагрузке.

<?php echo form_open('controller/function');?>

<input type="text" name="username" />

<?php echo form_close();?>

Поэтому я рекомендую сейчас использовать все вспомогательные функции формы.

1

Эта ошибка вызывается функцией csrf_show_error () вsystem/core/Security.php когда токен CSRF в $ _COOKIE не совпадает с вашим $ _POST ["csrf_token_name"].

внутриconfig.phpЯ должен был убедиться, что$config['cookie_domain'] соответствие$config['base_url']без протокола (т.е.http(s)://).

В противном случае файл cookie не был передан, что означало, что совпадение не может быть выполнено.

Похожие вопросы