0

データベース内のオブジェクトを検索するために使用されるフォームがWebサイトにあります。問題は、ユーザーが検索できる属性がたくさんあることです。そのため、POSTメソッドを使用して他のスクリプトに値を渡す必要があるのか​​、それともすべての変数をURLに入れて、他のスクリプトを独立させ、リンク。

たとえば、GETメソッドを使用する場合、URLは次のようになります。

/.../searching_objects.php?a[priority][gym]=0&a[priority][clubs]=1&a[priority][shop]=1&a[priority][restaurants]=1&a[priority][pubs]=0&a [priority] [pets] = 1&a [priority] [parking] = 0&a [persons] = 1&a [lat] = nondef&a [lng] = nondef&a [radius] = 500&a [college] = 0

  • この場合、私のページは前のページから独立していて、更新されたり、前のスクリプトに依存せずにアクセスされたりする可能性があります

しかし、POSTメソッドを使用する場合、ページを切り替えるために、URLは/.../searching_objects.phpのようになります。または、URLを通過する変数がほとんどない可能性があります。この方法は明らかに前のスクリプトに依存します。

この問題に応じてどちらの方法が良いですか?どちらがよりユーザーフレンドリーですか(これらの状況でユーザーフレンドリーであることが優先されますか?)?ある方法を他の方法よりも好むセキュリティ上の理由はありますか?

4

2 に答える 2

1

POSTはフォーム(記事など)から物事を投稿/作成することを目的としているため、GETを使用する必要があります。検索ボックスは通常、正しいGETURLを偽造するための単なるツールと見なされます。また、人々は通常、URLをコピーして貼り付けるだけで特定の検索を保存したいと考えています(Googleがそれをどのように管理したかを見てください)。

それらのどれも本当にユーザーフレンドリーではありません。そして、あなたはそれを気にしないでください。検索URLが本当にユーザーフレンドリーになることはありません。

すべての入力を保護する場合(いつものように)、セキュリティについて心配する必要はありません。特に検索コンテキストでは、セキュリティチェックはそれほど多く行われていません。データベースからデータをフェッチして印刷するだけです。SQLインジェクション(および印刷側のXSS)を覚えておけば、問題はありません。

于 2013-03-01T17:35:12.080 に答える
1

何よりもまず、GETを使用します。投稿するのではなく、データを取得しています。POSTは、サーバー上の何かを変更するアクションに使用する必要があります。

長いURLの問題については、次のことができます。

  • 検索ページを分離する-検索タイプごとに異なる検索ページを提供します。
  • URL書き換えを使用する-.htaccessとを使用ModRewriteして、非常に長いURLをより短くてきれいなURLに変更します。

また、検索アイテムのレイアウト方法を再検討することもできます(視覚的ではなく、データ管理の観点から)。別の質問を投稿して、現在の検索入力をどのようにレイアウトし、どのように改善できるかを説明することを検討してください。

于 2013-03-01T17:40:19.387 に答える