はじめまして。
Webに関するセキュリティでお伺いしたいのですが、現在複数のサイトを運営しています。運営サイトの全てにおいて、何らかの申し込み(物品販売の申し込み)という形で注文を受けています。
よって各サイトにフォームを設けて運営しているのですが、現在は単純な送信フォームを使用していますが、今後は申し込み者に会員になってもらい、購入したものによってポイントを付与する方法を考えています。
そこで、質問なんですが上記の事を効率的に実現しようと考えた場合に、以下方法を考えましたが、セキュリティ的に不安があったため質問させて頂きました。
まず、会員登録から申し込みなどを完成させるシステムを別ドメインで作ります。(SSL対応)
この作ったシステムに、現在運営中のサイトからお申し込み情報を渡したいと考えています。
お申し込み情報は主に
・商品の価格
・商品の名前
・どのサイトから来た申し込みなのか
・申し込みを行ったページのURL
以上の情報を渡したい考えです。
会員情報などの取り扱いは、システム上で全て行う予定です。
この場合の渡す方法としてPOST等で渡す方法しか思いつかないのですが、他によい方法はありますでしょうか?
この場合知識があればデータの改竄が可能なため悩んでおります。
ただ、カード決済などは今すぐに使用しないので、商品金額等を改竄されても最終的に人の目で確認するのでトラブルはないだろうと思っているのですが・・・・
どうぞよろしくお願いします。
No.1ベストアンサー
- 回答日時:
自分だったら、各サイトごとに鍵を変えて、HMACで電子署名をつけますね。
具体的には、POSTで渡す直前で確認ページを表示し、そこに次の内容を仕込んでおきます。
・商品の価格
・商品の名前
・どのサイトから来た申し込みなのか
・申し込みを行ったページのURL
+ 現在の日付+時刻
+ 鍵のIDなど (*後述)
+ HMAC値 (*後述)
それから、これらすべての値を「会員登録から申し込みなどを完成させるシステム」に送ります。
送られたサーバーではHMAC値が一致することを確認し、日付+時刻も一定時間内であることをチェックします。そうすると、改ざんがあればHMAC値が変わりますし、同じHMAC値を使ったリプレイ攻撃も一定時間以降は無効化されます。
HMACの値はこれ以外のすべての値を:などで順に連結したものをメッセージとして、送り元・送り先で共有した鍵で計算して作ります。HMAC値を計算するライブラリーはいろんなプログラミング言語に提供されているので、それを使うとよいでしょう。また、特別な理由がなければハッシュ関数にはSHA256あたりを選択しておけばよいでしょう。
鍵にIDがあるのは、鍵が暴露した時に鍵を入れ替えてシステムを保つためです。あるいは、同じ鍵で計算し続けるとどうしてもシステムとして弱くなるので、定期的に鍵を変更できるようにするためです。これも、鍵の値のハッシュ値を使ったり、一意なバージョン番号を振って数えたりすればよいでしょう。自分だったら、Javaで作っていたらKeyczarあたりを使いたいところですが。
というわけで、自分だったらデータをやりとりするサイトごとにHMAC鍵を用意して、タイムスタンプをつけた上でHMAC値を計算し、それで改ざん防止とリプレイ防止を図ります。また、HMAC鍵はバージョン管理しておき、定期的に変更します。なお、当たり前ですがHMAC鍵は送信元・送信先のサーバー以外では見えないようにするよう厳重管理です。
返信が大変遅くなりました。
Hamacと言う仕組みを知らなかったので、早速色々調べてテストで実装してみました。
すごく勉強になりました。
ありがとうございます。
No.2
- 回答日時:
もう一つの実装方法。
ウェブブラウザを通すと改竄の可能性があるから、直接サーバ同士で情報をやり取りするよ!
まず、
新しく作るサーバの SSL ポートを標準以外にして、もう一つ立てる。
立てた SSL は双方向認証にして、不特定の PC からの接続を拒絶。
次に、
立てた SSL への通信をアプリケーションサーバに渡して、申し込み情報の POST を受け付けるように設定する。
実際の流れは、
ウェブブラウザで、申し込み確定をクリック
↓
各サーバは、新しく立てたサーバの標準以外のポートで立てたほうの SSL へ接続して POST。
↓
新しく立てたサーバが POST 結果を、各サーバに返す。
↓
各サーバは POST が失敗ならエラーログでこの件の取引をレポートして、処理は継続。
↓
ウェブブラウザに、申し込み手続き完了のページを表示する。
おしまい。
返信が大変遅くなってしまいました。
なるほど~、サーバー毎にアクセスを可にすれば、強固なセキュリティになりそうです。
ただ、現在の私の環境では、簡単には実行できそうにないので、参考にさせていただきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 消費者問題・詐欺 お金を取り返すことは可能でしょうか? 4 2023/01/07 13:17
- その他(プログラミング・Web制作) Googleフォーム・複数人の申し込みをまとめて受け付けたい 1 2023/01/09 13:36
- その他(クラウドサービス・オンラインストレージ) マネーフォワードクラウドでは、申込み前にWEB上で申告書を作ってみるシミュレーションが出来ますか 1 2023/06/02 21:16
- 大学・短大 消費者問題に関する課題が出たのですが、答えが分かりません。 「 A は、インターネットを利用した通信 3 2023/07/31 22:25
- その他(ネットショッピング・通販・ECサイト) 株式会社Seven Colors Dream オンラインショップ GROSS というオンラインショッ 1 2023/03/14 16:09
- その他(ネットショッピング・通販・ECサイト) 怪しい通販サイトを利用してしまいました。 5 2022/03/29 18:13
- 消費者問題・詐欺 ラムドレミという副業サイト?がありLINE追加をしたのですが スキドレミやユルドレミなど似たような名 1 2022/11/06 21:36
- 賃貸マンション・賃貸アパート 賃貸物件 番手 申し込みについて 4 2023/08/18 21:43
- Google Drive Google form を利用して 問い合わせフォームを作りたい 1 2022/04/25 14:15
- その他(ビジネス・キャリア) 事業復活支援金の事前確認での売上高チェックについて 2 2022/03/26 13:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
机の鍵をインロックしてしまい...
-
ピンク電話を設置したいのです...
-
会社で持ち物に付けたAirTagの...
-
事務机の引き出しのロック解除
-
貯金箱の鍵を中にいれてしまい...
-
ピッキングされたのはわかるの...
-
鍵をあけとかないとキレる
-
神経質なところを治したいです...
-
快活CLUBの鍵無しの個室?って...
-
内鍵だと思ったのですが、回し...
-
玄関の鍵が差さりにくい。キッ...
-
ツイッターやインスタ等で今ま...
-
車の鍵とか探せる道具
-
鍵番号とメーカーが知られたら...
-
銀行の貸金庫と代理人制度について
-
自分が強迫性障害なのではない...
-
合鍵を作るときって
-
田舎に住んでいる人って鍵をか...
-
僕の友人(女性・20歳)が入浴...
-
【大至急】家の鍵をなくしてし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
貯金箱の鍵を中にいれてしまい...
-
机の鍵をインロックしてしまい...
-
事務机の引き出しのロック解除
-
内鍵だと思ったのですが、回し...
-
石を掘った手彫りの、放置され...
-
鍵の落し物の、お礼
-
昨日コンビニでトイレ(男女兼用...
-
パソコンを捨てる場合はTPMを破...
-
車の鍵とか探せる道具
-
鍵を開けます。の丁寧な言い方は?
-
ピンク電話を設置したいのです...
-
夫が自室に鍵を掛けます。 私は...
-
三井住友銀行貸し金庫について
-
【合鍵持ってるって普通?!?...
-
ツイッターやインスタ等で今ま...
-
夢占いお願いします 自分の家の...
-
玄関の鍵が差さりにくい。キッ...
-
サムソナイト TSAロック暗証番...
-
あなたにとって「好き」とは?...
-
鍵番号をヤスリで削ろうと思い...
おすすめ情報