2009-06-11 7 views
1

私はCodeIgniterで作業しています。コントローラ/モデルにいくつかのパラメータが含まれているリクエストを送信したいと思います。 URI(例:「旅行/ $月/ $日/」)を渡すのではなく、非表示形式(つまり$_POSTを使用)でこれらのパラメータを渡すのに違いはありますか?このアプローチにはセキュリティ上の問題はありますか?URIsと隠しフォーム

例セキュリティ上の問題

  • のURI

    http://www.example.com/travel/$month/$day/

  • 隠しフォーム:

    form_hidden('month',$month);
    form_hidden('day',$day);

答えて

0

URIを選択した場合、ユーザーがURLをブックマークすると、
セキュリティ上の問題が発生します。

し、任意のユーザーが任意のリンクをクリックした場合、
は、ターゲットのWebサーバは現在
HTTP_REFFERを知ることができ、およびサーバ管理者
は、リンクを知ることができます。

これは、彼がURIを見ることができることを意味します。

私の個人的意見は
ですので、隠しフォームを選択することをお勧めします。

0

あなたが着信データを監視する場合(ユーザーは邪悪なゴブリンですので、覚えておいてください)、必要に応じてきれいにすることで大きな違いはありません。その違いはユーザビリティだけです。ユーザーが常にフォームを通過することなく同じ結果にアクセスできるようにするには、URLメソッドを使用します。

すべての正直なところ、あなたの例では、あなたに適した方法(POST/GET)を決定するのに十分なデータが与えられていません。

は読書を推奨:親指のGET versus POST in terms of security?

+0

ありがとうございます!申し訳ありませんが、私の投稿は簡略化さ私の実際の目標は、user_ids、question_ids、answer_ids、category_idsの周りを回るフォーラムを作ることです... 私は今読んでいます。 –

+0

質問、回答、ユーザーのページ(あなたが私に尋ねるならば、すべての良いアイデア)に直接リンクできるようにしたい場合は、URLの値を許可してください。あなたはStackOverflowがこれを行うことに気付くでしょう...それはあなたにいくつかの慰めを与えるはずです。 – Sampson

3

ルール - リクエストは、物事の状態を変更することはありませんGET。したがって、実際に何かを変更したりリクエストしたりする場合は、(偶発的な再送信やCSRF attacksを防ぐために)非一時値の隠しフォームを使用します。それ以外の場合は違いはありません。

AuthはURIとPOSTデータから分離する必要があります。クッキー、HTTP認証、SSLクライアント証明書があります。 2009年6月11日があることは誰もが知っています。多くの人があなたのサイトのURI(または「年」、「月」、「日」POSTフィールド)で/$year/$month/$day/スキームを使用していることを知っているかもしれません。しかし、アクセス権のある人だけが、このページにあるもの(またはこのURIへのPOSTデータ)を見ることができるはずです。そして、はい、GETとPOSTの両方のデータを簡単に改ざんすることができるので、明らかに妥当性をチェックする必要があります。

0

最近同じ問題が発生しました。追加のURLがURLに公開されると、ウェブサイトの方法やデータが公開される危険性があります。かなりの研究の後、絶対に必要なときやページが単なる単純なビューだったときに変数を表示することにしました。 URLに公開するデータが多くなるほど、配置する必要があるチェックが多くなります(ユーザーがURLをx方向に変更した場合)。

別の考慮事項は、URL(おそらくビュー)にブックマークまたはリンクする機能です。 1つのアイデアは、暗号化された文字列を介してURLの変数を隠すことです。その後、暗号化された文字列をデータベースに格納し、必要に応じてシリアル化することができます。私は検索エンジンのためにこれを行い、それは私に両方の世界の最高を与えた。これはCodeIgniterで行われました。

関連する問題