Was ist der Unterschied bei der Verwendung GET
oder POST
Methode? Welches ist sicherer? Was sind (Nachteile) von jedem von ihnen?
( ähnliche Frage )
Was ist der Unterschied bei der Verwendung GET
oder POST
Methode? Welches ist sicherer? Was sind (Nachteile) von jedem von ihnen?
( ähnliche Frage )
Antworten:
Es geht nicht um Sicherheit. Das HTTP-Protokoll definiert Anforderungen vom Typ GET als idempotent , während POSTs Nebenwirkungen haben können. Im Klartext bedeutet dies, dass GET zum Anzeigen von etwas verwendet wird, ohne es zu ändern, während POST zum Ändern von etwas verwendet wird. Beispielsweise sollte eine Suchseite GET verwenden, während ein Formular, das Ihr Kennwort ändert, POST verwenden sollte.
Beachten Sie auch, dass PHP die Konzepte ein wenig verwirrt. Eine POST-Anforderung wird von der Abfragezeichenfolge und über den Anforderungshauptteil eingegeben. Eine GET-Anforderung wird nur von der Abfragezeichenfolge eingegeben. Eine POST-Anforderung ist also eine Obermenge einer GET-Anforderung. Sie verwenden können , $_GET
in einer POST - Anfrage, und es kann sogar Sinn Parameter zu haben , mit dem gleichen Namen machen in $_POST
und $_GET
das bedeutet verschiedene Dinge.
Angenommen, Sie haben ein Formular zum Bearbeiten eines Artikels. Die Artikel-ID befindet sich möglicherweise in der Abfragezeichenfolge (und ist daher über verfügbar $_GET['id']
). Angenommen, Sie möchten die Artikel-ID ändern. Die neue ID kann dann im Anforderungshauptteil ( $_POST['id']
) vorhanden sein. OK, vielleicht ist das nicht das beste Beispiel, aber ich hoffe, es zeigt den Unterschied zwischen den beiden.
Wenn der Benutzer Informationen in ein Formular eingibt und auf Senden klickt, gibt es zwei Möglichkeiten, wie die Informationen vom Browser an den Server gesendet werden können: in der URL oder im Hauptteil der HTTP-Anforderung.
Die im vorherigen Beispiel verwendete GET-Methode hängt Name / Wert-Paare an die URL an. Leider ist die Länge einer URL begrenzt, sodass diese Methode nur funktioniert, wenn nur wenige Parameter vorhanden sind. Die URL kann abgeschnitten werden, wenn das Formular eine große Anzahl von Parametern verwendet oder wenn die Parameter große Datenmengen enthalten. Außerdem werden die an die URL übergebenen Parameter im Adressfeld des Browsers angezeigt. Dies ist nicht der beste Ort, um ein Kennwort anzuzeigen.
Die Alternative zur GET-Methode ist die POST-Methode. Diese Methode packt die Name / Wert-Paare in den Hauptteil der HTTP-Anforderung, wodurch eine sauberere URL entsteht und die Formularausgabe keinen Größenbeschränkungen unterliegt. Es ist auch sicherer.
Die beste Antwort war die erste.
Du benutzt:
GET
ist perfekt in der Lage, auch Daten zu "senden", daher keine sehr genaue Antwort.
Die Verwendung hat zwei häufige Auswirkungen auf die "Sicherheit" GET
. Da Daten in der URL-Zeichenfolge angezeigt werden, kann möglicherweise jemand, der über die Schulter in die Adressleiste / URL schaut, etwas anzeigen, mit dem er nicht vertraut sein sollte, z. B. ein Sitzungscookie, das möglicherweise zur Entführung Ihrer Sitzung verwendet werden kann. Denken Sie daran, dass jeder Kamerahandys hat.
Die andere Sicherheitsimplikation von GET
hat damit zu tun, dass GET
Variablen als Teil der anfordernden URL im Zugriffsprotokoll der meisten Webserver protokolliert werden. Abhängig von der Situation, dem regulatorischen Klima und der allgemeinen Sensibilität der Daten kann dies möglicherweise zu Bedenken führen.
Einige Clients / Firewalls / IDS-Systeme können bei GET
Anfragen, die eine übermäßige Datenmenge enthalten , die Stirn runzeln und daher unzuverlässige Ergebnisse liefern.
POST
unterstützt erweiterte Funktionen wie die Unterstützung mehrteiliger Binäreingaben für das Hochladen von Dateien auf Webserver.
POST
erfordert einen Header mit Inhaltslänge, der die Komplexität einer anwendungsspezifischen Client-Implementierung erhöhen kann, da die Größe der übermittelten Daten im Voraus bekannt sein muss, um zu verhindern, dass eine Client-Anforderung in einem ausschließlich inkrementellen Einzeldurchlaufmodus gebildet wird. Möglicherweise ein kleines Problem für diejenigen, die sich für einen Missbrauch HTTP
als RPC-Transport (Remote Procedure Call) entscheiden.
Andere haben bereits gute Arbeit geleistet, um die semantischen Unterschiede und den "Wann" -Teil dieser Frage zu behandeln.
Ich verwende GET, wenn ich Informationen von einer URL abrufe, und POST, wenn ich Informationen an eine URL sende .
Sie sollten POST verwenden, wenn viele Daten oder vertrauliche Informationen vorhanden sind (für wirklich vertrauliche Inhalte ist auch eine sichere Verbindung erforderlich).
Verwenden Sie GET, wenn Sie möchten, dass Personen Ihre Seite mit einem Lesezeichen versehen können, da alle Daten im Lesezeichen enthalten sind.
Seien Sie nur vorsichtig, wenn Personen mit der GET-Methode auf REFRESH klicken, da die Daten jedes Mal erneut gesendet werden, ohne den Benutzer zu warnen (POST warnt den Benutzer manchmal vor dem erneuten Senden von Daten).
In diesem W3C-Dokument wird die Verwendung von HTTP GET und POST erläutert.
Ich denke, es ist eine maßgebliche Quelle.
Die Zusammenfassung lautet (Abschnitt 1.3 des Dokuments):
- Verwenden Sie GET, wenn die Interaktion eher einer Frage ähnelt (dh es handelt sich um eine sichere Operation wie eine Abfrage, eine Leseoperation oder eine Suche).
- Verwenden Sie POST, wenn:
- Die Interaktion ist eher wie eine Bestellung, oder
- Die Interaktion ändert den Status der Ressource auf eine Weise, die der Benutzer wahrnehmen würde (z. B. ein Abonnement für einen Dienst), oder
- Der Benutzer ist für die Ergebnisse der Interaktion verantwortlich.
Get- und Post-Methoden haben nichts mit der von Ihnen verwendeten Servertechnologie zu tun. Sie funktionieren in PHP, Asp.net oder Ruby genauso. GET und POST sind Teil des HTTP-Protokolls. Wie bereits erwähnt, ist POST sicherer. POST-Formulare werden auch nicht vom Browser zwischengespeichert. POST wird auch verwendet, um große Datenmengen zu übertragen.
Der Grund für die Verwendung von POST bei Änderungen an Daten:
Fügen Sie außerdem keine vertraulichen Informationen in die Abfragezeichenfolge ein (nur Option mit GET), da diese in der Adressleiste, in den Lesezeichen und in den Serverprotokollen angezeigt werden.
Hoffentlich erklärt dies, warum Leute sagen, dass POST "sicher" ist. Wenn Sie vertrauliche Daten übertragen, müssen Sie SSL verwenden.
GET
und POST
sind HTTP - Methoden , die können ähnliche Ziele erreichen
GET
ist im Grunde genommen nur zum Abrufen (Abrufen) von Daten gedacht. A GET
sollte keinen Textkörper haben. Abgesehen von Cookies ist der einzige Ort, an dem Informationen weitergegeben werden können, die URL. URLs sind in ihrer Länge begrenzt und GET
weniger sicher als POST
die gesendeten Daten die URL
Niemals verwenden, GET
wenn Passwörter, Kreditkarten oder andere vertrauliche Informationen gesendet werden! Daten sind für alle in der URL sichtbar. Kann zwischengespeicherte Daten sein.
GET
ist harmlos, wenn wir die Schaltfläche neu laden oder zurückrufen, sie wird mit einem Buch markiert, Parameter bleiben im Browserverlauf, nur ASCII-Zeichen sind zulässig.
POST
kann alles beinhalten, wie das Speichern oder Aktualisieren von Daten, das Bestellen eines Produkts oder das Senden von E-Mails. POST
Methode hat einen Körper.
POST
Die Methode ist für die Weitergabe vertraulicher und vertraulicher Informationen an den Server gesichert. Sie wird in den Abfrageparametern in der URL nicht angezeigt und die Parameter werden nicht im Browserverlauf gespeichert. Es gibt keine Einschränkungen hinsichtlich der Datenlänge. Beim Neuladen sollte der Browser den Benutzer darauf hinweisen, dass die Daten erneut gesendet werden sollen. POST
Methode kann nicht mit einem Lesezeichen versehen werden
Verwenden Sie die GET-Methode, wenn Sie die Ressourcen von der URL abrufen möchten. Sie können immer die letzte Seite sehen, wenn Sie auf die Schaltfläche "Zurück" Ihres Browsers klicken, und sie kann mit einem Lesezeichen versehen werden, sodass sie nicht so sicher ist wie die POST-Methode.
Verwenden Sie die POST-Methode, wenn Sie etwas an die URL senden möchten. Wenn Sie beispielsweise ein Google-Konto erstellen möchten und möglicherweise alle detaillierten Informationen eingeben müssen, klicken Sie nach erfolgreicher Übermittlung auf die Schaltfläche "Senden" (die POST-Methode wird hier aufgerufen) und versuchen, die Schaltfläche "Zurück" Ihres Browsers zu drücken Sie erhalten eine Fehlermeldung oder ein neues leeres Formular anstelle der letzten Seite mit dem ausgefüllten Formular.
Die GET
Methode:
Es wird nur zum Senden eines Datums mit 256 Zeichen verwendet
Bei Verwendung dieser Methode werden die Informationen im Browser angezeigt
Dies ist die Standardmethode, die von Formularen verwendet wird
Es ist nicht so gesichert.
Die POST
Methode:
Es wird zum Senden unbegrenzter Daten verwendet.
Bei dieser Methode können die Informationen im Browser nicht angezeigt werden
Sie können die POST
Methode explizit erwähnen
Es ist sicherer als die GET
Methode
Es bietet erweiterte Funktionen