質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Q&A

解決済

2回答

566閲覧

セキュリティ - URLに検索キーワードや検索条件を付加するのは安全 or 危険?

退会済みユーザー

退会済みユーザー

総合スコア0

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

0グッド

2クリップ

投稿2019/01/29 09:49

フレームワークでWebサービスを作っています。
検索フォームを '/search' ページに設置しました。

その検索結果を例えば /posts/list などのページに表示しようと思います。
その時に、検索フォームの入力を '/posts/list?keyword=hoge&orderby=DESC' などにしてURLのGETパラメーターに付加し、検索結果を表示しようと思っています。
検索フォームの入力は一旦POSTで処理されて、そのあと、'/posts/list` にリダイレクトし、そのときにURLにパラメーターを付加しています。
パラメーターはフレームワークに渡され、フレームワークはその値から検索して結果を取得しています。

【処理の流れ】

  • ユーザーが '/search' ページで検索ワードを入力しPOST送信
  • '/search' のPOSTを処理し '/posts/list' にリダイレクト
  • '/posts/list' のGETを処理し検索結果をユーザーに表示

POSTをそのまま処理し、/search ページで検索結果を表示するのが王道だと思うのですが、設計上の都合で /posts/list にリダイレクトしています。

この設計は危険でしょうか?安全でしょうか?

私はフレームワークが値をバリデーションしてくれるので、たとえばURLからSQLインジェクションのコードを流されても大丈夫だと思うのですが、どうでしょうか。
私はセキュリティについてはほぼ初心者なので、知識のある人のご意見を聞いてみたいです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

GETやPOSTなどを含むHTTPの規約では、コンテンツの取得はGETで行うこと、更新処理など副作用を含む場合はPOSTで行うこととなっています。なので、この質問のようなケースではGETを用いるのが原則です。

しかし、GETの場合、URLにパラメータが載るので、漏えいリスクは少し高くなります。なので、パスワードやクレジットカード番号のように特に機密性が要求される情報はPOSTで送ることになっています。この場合、リダイレクト時にもGETでパラメータを送るべきではありませんので、リダイレクトそのものをやめるか、推奨するわけではありませんがセッション変数などでパラメータを送るしかないと思います。

通常の検索画面では、パスワード類ほどの機密性は要求されないと思うので、リダイレクトなしのGETでよろしいかと思います。つまり、Google検索のような作りが標準的です。

投稿2019/01/29 22:04

編集2019/01/29 22:06
ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/01 18:59

機密性の高い情報はPOSTで送るということですね。検索フォームでは気密性の高い情報は扱わないことが多いので、原則としてGETで取得すると。 納得できました。ありがとうございました。
guest

0

ユーザーが '/search' ページで検索ワードを入力しPOST送信

そもそも論を言えば、(検索条件が膨大、あるいは画像を含むなどでPOSTするしかない場合を除けば)検索実行は通常GETで行うものだという印象です。

投稿2019/01/29 09:57

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/29 10:31

ということは通常で一般的なんですかね。大手サイトでも検索結果はURLに付加してるところが多い印象です。
退会済みユーザー

退会済みユーザー

2019/01/29 12:25

調べてみるとGETはデータ取得に使うメソッドで、POSTはデータを保存したい時に使うメソッドということなので、質問の前提が間違っている可能性があるかもしれないです。 つまり検索はデータの取得に相当するので検索フォームではGETを使うべきであり、また、GETによってURLに入力データが表示されるのも良識の範囲内だということになります。また、GETでURLに検索キーワードが出ていて、POSTでURLに検索キーワードが出ていなくても、どちらも盗聴されればキーワード等の情報は漏れてしまうので、安全性という意味ではどちらも差は無いということになります。 よって、質問の回答は「安全だけど一部無駄がある」という内容になると思われます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問