PHPの基本POSTとGET、phppostget
postとgetの違い
キーポイント:
*.Postがデータを送信する場合、URLにデータを表示する必要はありませんが、GetメソッドはURLに表示する必要があります。
*.Post は 2M に達する可能性がある大量のデータを送信しますが、Get メソッドは URL の長さの制限により約 1024 バイトしか転送できません。その名前が示すように、サーバーにデータを送信します。セグメント、Get はサーバー セグメントからのデータの取得を表します。 Get がデータの送信もできる理由は、必要なデータの種類をサーバーに伝えるためです。 Post 情報は http リクエストの内容として使用され、Get は Http ヘッダーで送信されます。
詳細な説明:
1. Get は、URL リクエストを通じてユーザーのデータを転送し、フォーム内の各フィールドの名前とその内容を文字列のペアとして接続し、action 属性が指すプログラムの URL に配置します。ユーザーと同じように、リンクをクリックするのと同じように、URL 上に直接表示されます。
Post メソッドは、HTTP post メカニズムを使用して、フォームの各フィールドの名前とその内容を HTML ヘッダー (ヘッダー) に配置し、action 属性で指定されたプログラムによる処理のためにサーバーに送信します。標準入力 (stdin) メソッドでは、フォーム データを読み取り、処理します。
2. Get メソッドは、変数の値を取得するために Request.QueryString を使用する必要があります。
Post メソッドは Request.Form を使用して、送信されたコンテンツにアクセスします。
3. Get メソッドによって送信されるデータの量は非常に少なく、通常は約 2 KB に制限されますが、実行効率は Post メソッドよりも優れています。
Post メソッドで転送されるデータの量は比較的多く、サーバーがデータを読み取るまで待機します。これは、大量のデータによるサーバーへの悪意のある攻撃を避けるためです。
提案: 送信するデータを一度に送信できるかどうかわからない場合は、Post メソッドを使用してみてください。
4. Get メソッドを使用してデータを送信すると、セキュリティの問題が発生します。フォームの送信には Post メソッドを使用することをお勧めします (たとえば、ログイン ページでは、Get メソッドを使用してデータを送信すると、ユーザー名とパスワードが表示されます)。 。
URL では、ページをキャッシュできる場合、または他の誰かが顧客のマシンにアクセスできる場合、ユーザーのアカウントとパスワードを履歴レコードから取得できます)
Post メソッドを使用して送信されたフォーム ページでよくある問題は、ページが更新されるときにダイアログ ボックスがポップアップすることです。推奨事項: セキュリティ上の理由から、データの送信には Post を使用することが最善です
5. Get は、Form フォーム内のデータ セットの値を ASCII 文字に制限しますが、Post は ISO10646 文字セット全体をサポートします。 6. Get は Form のデフォルトのメソッドです。
HTTP プロトコルには、操作方法を表す GET、POST、PUT、DELETE の 4 つの動詞があります。これらは 4 つの基本操作に対応します: GET はリソースの取得に使用されます
POST は新しいリソースの作成に使用されます (リソースの更新にも使用できます)
PUT はリソースの更新に使用されます
DELETE が使用されますリソースを削除します。
PHP は post/get を通じて取得したデータを自動的にエスケープします
サーバーのさまざまな構成に応じて、post および get を通じてデータを取得するときに「,」などの一部の特殊文字がエスケープされる場合があります。この問題は主に PHP のマジック クオートによって引き起こされます。PHP のマジック クオートには、
magic_quotes_gpc、magic_quotes_runtime、magic_quotes_sybase が含まれます。
magic_quotes_gpc
は次のように要約されます:
1. magic_quotes_gpc=on の場合、
リーリー
2. magic_quotes_gpc=offの場合
リーリー
PHPインジェクションにおけるmagic_quotes_gpcについて magic_quotes_gpc = on
php 設定ファイル php.in は誰でも知っています。その中の magic_quotes_gpc 設定がオンになっている場合、php について少しでも知っている人なら誰でもそれを知っています。
次に、数値フィールドを挿入する必要があります。
リーリー
リーリー
正しく入力された場合:
SELECT *
FROM tbltable_users WHERE userid=admin AND パスワード = 'admin' LIMIT 0,1
攻撃者がユーザー名: admin OR 1 =1 # を入力した場合、挿入された SQL ステートメントは次のようになります:
SELECT * FROM table_users WHERE userid=admin OR 1 =1 # AND パスワード = 'admin' LIMIT 0,1
注射は以下から行えます
これを防ぐには、php.ini の display_errors オプションを display_errors = off に設定します。
magic_quotes_runtime
オンにすると、データベースやテキスト ファイルなどの外部ソースからデータを取得して返すほとんどの関数は、バックスラッシュでエスケープされたデータを返します。このオプションは実行時に変更でき、PHP のデフォルト値はオフです。
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> }
ログイン後にコピー
http://www.bkjia.com/PHPjc/1043035.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1043035.htmlTechArticlePHP基础之POST与GET,phppostget post 与 get区别 重点: *.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。 *.Post传输的数据量大...