Aktion, die Sie angefordert haben, ist nicht erlaubt Fehler
Machte ich ein Modul namens Galerie, die funktioniert gut auf meinem localhost mit version 2.0.3, aber bei der Verwendung von version 2.1.0 auf eine remote-site kann ich nicht vorlegen, ein Formular und ich bekomme die Fehlermeldung:
Die Aktion, die Sie angefordert haben, ist nicht erlaubt.
Warum ist das so?
InformationsquelleAutor Faruk Omar | 2012-04-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eine Codeigniter-Fehler im Zusammenhang mit der CSRF-Schutz. Stornieren können Sie es in
cms/config/config.php
Vielen Dank, es hilft mir sehr mit einem problem zu versuchen, um das hochladen von Dateien über AJAX-Anfragen, mit Plupload und Codeigniter.
Ich Stimme mit HighlyIrregular dies nicht wirklich das problem lösen, es funktioniert, um es und Blätter OP offen für CSRF-Angriffe. JoeMoe1984 und Jhourlad Estrella haben die besseren Antworten. Wir sollten Sie nicht ermutigen weniger-secure coding/Entwicklung Praktiken.
seine Arbeit für mich, vielen Dank @YAN Berk
Es ist offensichtlich, Sicherheit ist ein muss, so dass deaktivieren CSRF ist nicht zu empfehlen. Wenn wir aktivieren das CSRF in CI, in allen Formen fügt es so etwas wie dieses
<input type="hidden" name="csrf_token" value="4ac7a11a8239660afaa87cb48f2694e2" style="display:none;" />
aber der oben genannten Fehler tritt auf, wenn wir<form> .... </form>
es, weil CI nicht hinzufügen, dass versteckte Eingabe, wenn wir<form> .... </form>
und wenn wir senden Sie das Formular ohne das CSRF-token, während CSRF-Angriffe ermöglichten es, die obigen Fehler. Alles, was Sie tun müssen ist, verwenden<?php echo form_open();?>
und<?php echo form_close();?>
InformationsquelleAutor Yan Berk
Stimme ich mit @Jhourlad Estrella auf die Lösung der Probleme anstatt deaktivieren ein Sicherheits-feature, allerdings habe ich das Gefühl, dass das eigentliche problem mit dem versteckten input-Feld, enthält das token.
Anstelle der Verwendung von plain-HTML so erstellen Sie ein Formular-element verwenden, das die
form_open()
undform_close()
Hilfsfunktionen. Der Grund warum ist, weil wenn Sie verwenden die Hilfsfunktion, es fügt automatisch das csrf-token als hidden-Feld im Formular.Könnte man dies auch manuell, durch hinzufügen der token als hidden-input-Feld im Formular
Doing es auf diese Art und Weise wird es Ihnen bleiben Sie geschützt vor CSRF-Angriffen und beheben Sie das problem, das Sie haben.
Hoffe, dies hilft jemand da draußen, da war dies treibt mich Nüsse das erste mal herauszufinden.
Ja, ich leider beantwortet dies ein Jahr zu spät lol. Hoffentlich wird es bemerkt, es aber gereicht.
Wenn Sie nicht verwenden können
form_open()
oderform_close()
Sie können das CSRF-token-name und Wert mit$this->security->get_csrf_hash();
und$this->security->get_csrf_token_name();
netter Mann, vielen Dank
InformationsquelleAutor JoeMoe1984
In Fragen der Programmierung, die Sie nicht gehen, um Probleme, Sie zu beheben. Was ich damit sagen will ist, diese Funktion wird nicht hier sein, wenn es unbrauchbar ist: 'coz es ist so und es funktioniert für mich. Sie müssen nur ein problem der Umsetzung.
Meine Antwort: Entfernen Sie alle Bindestriche, Punkte und andere, nicht alphanumerische Zeichen aus den Werten der folgenden Einträge auf application/config/config.php wie unten zu sehen:
BTW, Bindestriche manchmal arbeiten, aber ich schlage vor, mit einzelnen Worten, Wann immer möglich, bei der Benennung von config-Werte. Nicht, es sei denn, Sie haben die Zeit und die Fähigkeiten, um zu studieren Codeigniter-Kern-Dateien, die im Zusammenhang zu was auch immer Sie arbeiten, nur um sicherzustellen, dass es sicher ist, dies zu tun.
Anyways, ich hoffe, dies hilft jemand da draußen, obwohl meine Antwort ist mehr als ein Jahr zu spät.
InformationsquelleAutor Jhourlad Estrella
Ich habe ein Formular gebaut wurde, dass außerhalb der CI (in Joomla), sondern dass ich wollte Prozess mit CI. Mein fix war zu selektiv deaktivieren csrf für bestimmte Referrer. Ich fügte hinzu, diese config, direkt nach der Standard-config-Optionen für csrf-Angriffe:
Deaktiviert csrf-Schutz für bestimmte URLs in der $csrf_off array, sondern lässt Sie intakt, für alle anderen Anfragen.
InformationsquelleAutor cmpreshn
Es ist eine alte Frage, aber das gleiche problem kostete mich so viel Zeit, die ich wollte zu teilen, was das problem in meinem Fall war. Es kann auch jemand helfen.
Ich bin mit Codeigniter 3.0.6 und CommunityAuth 3 zusammen mit ihm, und ich wurde immer diese Fehlermeldung nach dem login.
Es war verwirrend, da das problem manchmal geschehen und würde nicht zu anderen Zeiten.
Mein 'base_url' in CI config.php wurde eingestellt, um so etwas wie 'www.mysite.com'
Wenn Sie die Seite mit 'mysite.com' (beachten Sie das 'www' ist nicht in der Adresse) und Sie müssen ein Formular-Vorlage, die verwendet CI 'base_url' einstellen, wie CommunityAuth login funktioniert, dann CSRF check schlägt fehl, und Sie erhalten 'die Aktion, Die Sie angefordert haben, ist nicht erlaubt.' - Fehler.
## REWRITE www traffic to root domain
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=302,L]
(FYI - ich kann nicht scheinen, um Zeilenumbrüche, die hier arbeiten - sorry aber so schlampig)InformationsquelleAutor azbatuk
Nutzung der codeigniter-form opener wie:
sehen, codeigniter form der Dokumentation für mehr.
InformationsquelleAutor danielad
Dies ist wahrscheinlich ein seltener Fall, aber ich sah nicht mein Problem, da mein server hat viele verschiedene domain-Namen, die sehr ähnlich sind. Das problem war, dass ich die Landung auf einer domain, die war völlig falsch, aber da "die Aktion, Die Sie angefordert haben, ist nicht erlaubt." - Fehler hat Vorrang vor "404 Nicht Gefunden Fehler" ich konnte ihn nicht sehen. Mein problem war, dass ich mich nicht ändern meine base_url auf die richtige domain. Also, wenn keine der oben genannten Lösungen für Sie arbeiten, die Sie vielleicht überprüfen Sie Ihre Einstellungen für $config['base_url'] application/config.
InformationsquelleAutor Isaac Pak
Für mich das problem war, dass ich be-den Blick in den index, als ich es geändert wie folgt und es funktionierte:
InformationsquelleAutor Ana Houa
Dieser Fehler wird ausgelöst, indem Sie die Funktion csrf_show_error() in
system/core/Security.php
wenn das CSRF-token in $_COOKIE nicht mit Ihrem $_POST['csrf_token_name'].Innen
config.php
ich hatte, um sicherzustellen, dass$config['cookie_domain']
abgestimmt$config['base_url']
, ohne das Protokoll (d.h.http(s)://
).Sonst, wird das cookie nicht übergeben, das bedeutete, das match konnte nicht gemacht werden.
InformationsquelleAutor seantunwin
Im Mit Codeigniter 3 gleiche problem mit
Basierend auf Isaac Pak ' s point, änderte ich meine base_url zu dem, was ich normalerweise Angaben in der Adressleiste. so...
anstatt
Schreibe ich es auf diese Weise..
da mein
base_url()
ist nur..dem Update funktioniert meine Website...
InformationsquelleAutor oscar1925
Ich gefunden habe, mit dem Formular-helper-Funktionen
Beispiel
Verwendung der Hilfsfunktionen wie oben sollten aufhören, die CSRF-Fehlermeldung zeigt.
Wenn ich nicht verwenden echo form_input() wenn ich nur den normalen Eingang löst die CSRF-Fehler beim laden.
So empfehle ich, mit allen form-helper-Funktionen jetzt.
InformationsquelleAutor Mr. ED