これはセキュリティ上の問題ではありません。 HTTP プロトコルは GET タイプのリクエストを idempotent として定義しますが、POST には副作用がある可能性があります。簡単に言うと、これは、何かを変更せずに表示するには GET が使用され、何かを変更するには POST が使用されることを意味します。たとえば、検索ページでは GET を使用し、パスワードを変更するフォームでは POST を使用する必要があります。
また、PHP ではこれらの概念が多少混同されていることに注意してください。 POST リクエストは、クエリ文字列とリクエスト本文から入力を受け取ります。 GET リクエストはクエリ文字列から入力を取得するだけです。したがって、POST リクエストは GET リクエストのスーパーセットです。POST リクエストで $_GET を使用したり、$_POST と $_GET# で同じ名前を使用したりできます。 ## パラメータの意味は異なります。
たとえば、記事を編集するためのフォームがあるとします。投稿 ID はおそらくクエリ文字列に含まれていると思われます (したがって、
$_GET['id'] を介して取得できます)。しかし、投稿 ID を変更したいとします。新しい ID はリクエスト本文 ($_POST['id']) に表示されます。これは最良の例ではないかもしれませんが、違いを説明できれば幸いです。
ユーザーがフォームに情報を入力して「送信」をクリックすると、情報は URL または HTTP リクエストの本文の 2 つの方法でブラウザからサーバーに送信されます。
前の例で使用した GET メソッドは、名前と値のペアを URL に追加します。残念ながら、URL の長さは制限されているため、このメソッドは非常に少数のパラメーターでのみ機能します。フォームで多数のパラメータが使用されている場合、またはパラメータに大量のデータが含まれている場合、URL が切り詰められる可能性があります。さらに、URL で渡されたパラメータはブラウザのアドレス フィールドに表示されますが、これはパスワードを表示するのに最適な場所ではありません。
GET メソッドの代替手段は POST メソッドです。このメソッドは、HTTP リクエストの本文で名前と値のペアをラップするため、URL がクリーンになり、フォーム出力にサイズ制限がなくなります。安全性も高いです。
これはセキュリティ上の問題ではありません。 HTTP プロトコルは GET タイプのリクエストを idempotent として定義しますが、POST には副作用がある可能性があります。簡単に言うと、これは、何かを変更せずに表示するには GET が使用され、何かを変更するには POST が使用されることを意味します。たとえば、検索ページでは GET を使用し、パスワードを変更するフォームでは POST を使用する必要があります。
また、PHP ではこれらの概念が多少混同されていることに注意してください。 POST リクエストは、クエリ文字列とリクエスト本文から入力を受け取ります。 GET リクエストはクエリ文字列から入力を取得するだけです。したがって、POST リクエストは GET リクエストのスーパーセットです。POST リクエストで
たとえば、記事を編集するためのフォームがあるとします。投稿 ID はおそらくクエリ文字列に含まれていると思われます (したがって、$_GET
を使用したり、$_POST
と$_GET# で同じ名前を使用したりできます。 ## パラメータの意味は異なります。
$_GET['id']
を介して取得できます)。しかし、投稿 ID を変更したいとします。新しい ID はリクエスト本文 (
$_POST['id']) に表示されます。これは最良の例ではないかもしれませんが、違いを説明できれば幸いです。