Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Grundlagen POST und GET

PHP-Grundlagen POST und GET

WBOY
WBOYOriginal
2016-08-08 09:19:081104Durchsuche

Der Unterschied zwischen Post und Get

Wichtige Punkte:

*.Post muss nicht im angezeigt werden URL beim Übertragen von Daten und die Get-Methode sollte in der URL angezeigt werden.
*.Post überträgt eine große Datenmenge, die 2 MB erreichen kann, während die Get-Methode aufgrund der URL-Längenbeschränkung nur etwa 1024 Bytes übertragen kann.
*.Post dient, wie der Name schon sagt, der Übertragung Daten an das Serversegment übertragen. Get dient zum Abrufen von Daten vom Serversegment. Der Grund, warum Get auch Daten übertragen kann, besteht lediglich darin, dem Server mitzuteilen, welche Art von Daten Sie benötigen. Post-Informationen werden als Inhalt der http-Anfrage verwendet, während Get im HTTP-Header übertragen wird.

Detaillierte Beschreibung:

1. Get leitet die Daten des Benutzers über eine URL-Anfrage weiter und verbindet die Namen jedes Felds im Formular und seinen Inhalt als Zeichenfolgenpaar , und setzt Nach der URL des Programms, auf das das Aktionsattribut verweist, werden die Daten direkt auf der URL angezeigt, genau wie der Benutzer auf einen Link klickt.

Die Post-Methode verwendet den HTTP-Post-Mechanismus zum Platzieren Die Namen und Inhalte jedes Felds im Formular in HTML. Der Header (Header) wird zur Verarbeitung durch das Programm, auf das das Aktionsattribut verweist, zusammen an den Server gesendet. Das Programm liest die Formulardaten und verarbeitet sie über die Standardeingabe (. stdin)

2. Die Get-Methode erfordert die Verwendung von Request.QueryString, um den Wert der Variablen zu erhalten.

Die Post-Methode verwendet Request.Form, um auf den übermittelten Inhalt zuzugreifen.
3. Die von der Get-Methode übertragene Datenmenge ist im Allgemeinen auf etwa 2 KB begrenzt, aber die Ausführungseffizienz ist besser als bei der Post-Methode Die von der Post-Methode übertragenen Daten sind relativ groß und warten darauf, dass der Server Daten liest. Außerdem gibt es ein Byte-Limit, um böswillige Angriffe mit großen Datenmengen auf den Server zu vermeiden.
Vorschlag: Sofern Sie nicht sicher sind, dass alle von Ihnen übermittelten Daten auf einmal übermittelt werden können, versuchen Sie bitte, die Post-Methode zu verwenden.

4 Das Senden von Daten mit der Get-Methode führt zu Sicherheitsproblemen. Dies wird empfohlen um die Post-Methode zum Senden von Formularen zu verwenden; (Beispielsweise werden auf der Anmeldeseite beim Senden von Daten über die Get-Methode der Benutzername und das Passwort angezeigt.


Jetzt auf der URL, wenn die Seite zwischengespeichert werden kann oder andere (kann auf den Computer des Kunden zugreifen, das Konto des Benutzers kann aus dem Verlaufsdatensatz und dem Passwort abgerufen werden)

Ein häufiges Problem bei Formularseiten, die mit der Post-Methode übermittelt werden, besteht darin, dass beim Aktualisieren der Seite ein Dialogfeld angezeigt wird. Vorschlag: Aus Sicherheitsgründen ist es am besten, Post zum Senden von Daten zu verwenden

5. Get beschränkt den Wert des Datensatzes im Formular auf ASCII-Zeichen, während Post das gesamte ISO10646-Zeichen unterstützt Satz.

6. Get ist die Standardmethode von Form.

Im HTTP-Protokoll gibt es vier Verben, die Operationsmethoden angeben: GET, POST, PUT und DELETE. Sie entsprechen vier Grundoperationen:


GET wird zum Abrufen von Ressourcen verwendet

POST wird zum Erstellen neuer Ressourcen verwendet (kann auch zum Aktualisieren von Ressourcen verwendet werden)

PUT wird zum Aktualisieren von Ressourcen verwendet DELETE wird zum Löschen einer Ressource verwendet.




PHP maskiert automatisch Daten, die über Post/Get abgerufen wurden

Je nach unterschiedlichen Konfigurationen des Servers , Beim Abrufen von Daten über Post und Get werden möglicherweise einige Sonderzeichen wie „,“ maskiert. Dieses Problem wird hauptsächlich durch magische Anführungszeichen von PHP verursacht. Zu den magischen Anführungszeichen von PHP gehören magic_quotes_gpc, magic_quotes_runtime, magic_quotes_sybase.

magic_quotes_gpc ist wie folgt zusammengefasst:

1. Für den Fall von magic_quotes_gpc=on:

Wir können die Eingabe- und Ausgabedatenbank für Zeichenfolgen nicht durchführen

Bei den Operationen „addslashes()“ und „stripslashes()“ werden die Daten normal angezeigt

Wenn Sie zu diesem Zeitpunkt addslashes() für die Eingabedaten ausführen,

dann Die Ausgabe wird durchgeführt. Wenn „magic_quotes_gpc=off“ verwendet wird, muss „stripslashes()“ verwendet werden, um überschüssige Backslashes zu entfernen. Es ist jedoch nicht erforderlich, „stripslashes()“ zum Formatieren der Ausgabe zu verwenden

, da „addslashes()“ verwendet wird. schreibt die Backslashes nicht in die Datenbank, sondern hilft MySQL nur dabei, die Ausführung der SQL-Anweisung abzuschließen

Über magic_quotes_gpc in PHP-Injection magic_quotes_gpc = on

Jeder kennt die PHP-Konfigurationsdatei php.in, wenn die darin enthaltene magic_quotes_gpc-Konfiguration aktiviert ist. Das ist magic_quotes_gpc = on. Jeder, der sich ein wenig mit PHP auskennt, weiß das

Dann müssen wir numerische Felder einfügen. >

Bei korrekter Eingabe:

SELECT *

FROM tbltable_users WHERE userid=admin AND password = 'admin' LIMIT 0,1

Wenn sich der Angreifer unter Benutzername befindet, geben Sie Folgendes ein: admin OR 1 =1 #, die eingefügte SQL-Anweisung lautet wie folgt:

SELECT * FROM table_users WHERE userid=admin OR 1 =1 # AND password = 'admin' LIMIT 0 ,1

Die Injektion kann unten erfolgen.

<span> 1</span> <?
<span> 2</span><span>if</span> ( <span>isset</span>(<span>$_POST</span>["f_login"<span>] ) ){
</span><span> 3</span><span>//</span><span>连接数据库</span><span> 4</span><span>$t_strUid</span> = <span>$_POST</span>["f_uid"<span>];
</span><span> 5</span><span>$t_strPwd</span> = <span>$_POST</span>["f_pwd"<span>];
</span><span> 6</span><span>$t_strSQL</span> = "SELECT * FROM tbl_users WHERE uid=<span>$t_strUid</span> AND password = '<span>$t_strPwd</span>'      LIMIT 0,1"<span>;
</span><span> 7</span><span>if</span> ( <span>$t_hRes</span> = <span>mysql_query</span>(<span>$t_strSQL</span><span>) ){
</span><span> 8</span><span>//</span><span> 成功查询</span><span> 9</span><span>          }
</span><span>10</span><span>       }
</span><span>11</span> ?>
Setzen Sie die Option display_errors in php.ini auf display_errors = off. Dies kann dies verhindern.

magic_quotes_runtime
        如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。该选项可在运行的时改变,在 PHP 中的默认值为 off。

magic_quotes_sybase
        如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如果同时打开两个选项的话,单引号将会被转义成 ”。而双引号、反斜线 和 NULL 字符将不会进行转义。

由于不同服务器的配置不同,需要在代码中用get_magic_quotes_gpc() 检测服务器配置。

<span>1</span><span>if</span>(<span>isset</span>(<span>$_POST</span>['c'<span>])){
</span><span>2</span><span>$s</span> = <span>$_POST</span>['c'<span>];
</span><span>3</span><span>if</span>(<span>get_magic_quotes_gpc</span><span>())
</span><span>4</span><span>$s</span> = <span>stripslashes</span>(<span>$s</span>);<span>//</span><span>stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。
</span><span>5</span><span>//do something</span><span>6</span> }

以上就介绍了PHP基础之POST与GET,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:ubuntu1510 lampp installierenNächster Artikel:ubuntu1510 lampp installieren