httpの投稿とhttpのgetメソッドの違いに関するたくさんの記事をすでに読んだことがあります。セキュリティの観点から、2つのうちどちらがより良いオプションであるかについて私は混乱しています。なぜなら、URLにデータを表示できなかったため、getよりもpostメソッドを使用する方がよいとの記事もありました。ただし、getはデータの更新に関与せず、データを読み取って表示するだけなので、getを使用する方がよいという意見もあります。では、2つのうちどちらを選ぶべきですか?それとも私はこの権利を理解していますか?助けてください、私はここでいくつかの説明が必要です...ありがとう!
4 に答える
GETとPOSTはメソッド/動詞であり、口頭言語の動詞やプログラミング言語のメソッドと同様に、アクションを示します。操作に最適な方法を選択する必要があります。
定義から始める:
得る
GETメソッドは、Request-URIによって識別された情報(エンティティの形式)を取得することを意味します
役職
POSTメソッドは、リクエストに含まれるエンティティを、リクエストラインのリクエストURIで識別されるリソースの新しい従属としてオリジンサーバーが受け入れるようにリクエストするために使用されます。
一般化するには、GETで取得し、POSTで作成または更新する必要があります。選択した方法はセキュリティとは関係ありません。適切に保護することも、完全に安全でないこともできます。
別の言い方をすれば、POSTがデータを「隠している」ように見えるからといって、それがより安全であるとは限りません。
RESTの原則についても読むことをお勧めします。
さらに、べき等と安全な方法について読むことをお勧めします。HTTPへのべき等およびべき等の直接適用については、仕様の§9.1を参照してください。
POSTとGETは、元々データのPOST(送信)とGET(取得)に使用される2種類のHTTPリクエストメソッドです。これは、より多くのリクエストメソッド( PUTやDELETEなど)とともに、RESTによって頻繁に使用されます。これがPOSTとGETの実際の違いです。
Webページのフォームの場合、POSTとGETも使用されます。セキュリティの観点からは、それは実際には重要ではありません。どちらもクライアントが読み取ることができます。唯一の違いは、ユーザーがURLのパラメーターを表示できるため、GETを使用すると簡単になることです。POSTを使用すると、HTTPリクエスト本文からパラメータを取得する必要があります(詳細)。
結論:それは主にあなたが何をしたいかに依存します:同じページを取得するためにユーザーにURLをコピーしてもらいたいですか?たとえば、これは便利な場合があります。
http://www.yoursite.com/index.php?search=MySearchTerm
これはGETリクエストであり、ユーザーはこれをコピーして他のユーザーと共有できます。ただし、URLにすべての連絡先の詳細を追加しても意味がないため、連絡先フォームはPOSTリクエストを賭けます。
POSTまたはgetは実際にはセキュリティに違いはありません。コードがインジェクションに対して脆弱である場合、POSTまたはGETメソッドは何の違いもありません。または、GET URLは完全にログファイルに記録されるため、GETの方が安全であると言えます。コード内のインジェクションでした。インジェクションコード全体/一部をログファイルで見つけることができますが、POSTデータはログに記録されません。
POSTには制限がなく、マルチパート投稿をサポートしているため、ファイルのアップロードなどにPOSTを使用できます。ただし、apacheではデフォルトでGETパラメーターに8000文字の制限があります。
POSTを使用すると、URLがより明確になり、パラメータが非表示になります。
これを通過すると、明確なアイデアが得られます
礼儀:-Wikiの回答....。
$_POSTと$_GETはどちらも、HTMLフォームから入力を抽出するために使用されるPHP変数です。ただし、違いは、$ _ POSTは抽出された変数をユーザーから隠しておきますが、$_GETはそうではないことです。このため、セキュリティの観点から2つの変数には大きな違いがあります。
では、なぜ$_GETを使用するのでしょうか。一部のWebサイトには、ユーザー向けの情報でいっぱいの大規模なデータベースがあるためです。たとえば、オンラインで買い物をしていて、ズボンを2足購入したとします(アイテム#125)。送信先のURLは次のようになります。
catalog.php?item = 125&quantity = 2
ご覧のとおり、$_GETを介して取得された変数はユーザーに表示されます。
POSTメソッドは大量のデータを送信する可能性があり(通常はサーバー設定が制限されているため)、GETメソッドを比較するメリットがない限り使用できます。送信されたデータがアドレスバーに表示されるため、多くのブラウザはHTTPPOSTメソッドの後に表示されるページを正しくブックマークできません。GETメソッドを使用して取得するクエリ文字列が必要な場合(制限により無効)、フォームにPOSTメソッドを使用しようとします。アドレスバーに表示されるべきではない重要な情報を送信する場合は、POSTメソッドを使用できます。