別ドメインに渡すデータの受け渡しについて

このQ&Aのポイント
  • 複数のサイトで申し込みを受けるためのデータ受け渡し方法について不安があります。
  • 会員登録から申し込み情報を別ドメインのシステムに渡す方法を考えていますが、データの改竄が心配です。
  • カード決済は使用しないため、最終的に人の目で確認することでトラブルを防止できると考えています。
回答を見る
  • ベストアンサー

別ドメインに渡すデータの受け渡しについて

はじめまして。 Webに関するセキュリティでお伺いしたいのですが、現在複数のサイトを運営しています。運営サイトの全てにおいて、何らかの申し込み(物品販売の申し込み)という形で注文を受けています。 よって各サイトにフォームを設けて運営しているのですが、現在は単純な送信フォームを使用していますが、今後は申し込み者に会員になってもらい、購入したものによってポイントを付与する方法を考えています。 そこで、質問なんですが上記の事を効率的に実現しようと考えた場合に、以下方法を考えましたが、セキュリティ的に不安があったため質問させて頂きました。 まず、会員登録から申し込みなどを完成させるシステムを別ドメインで作ります。(SSL対応) この作ったシステムに、現在運営中のサイトからお申し込み情報を渡したいと考えています。 お申し込み情報は主に ・商品の価格 ・商品の名前 ・どのサイトから来た申し込みなのか ・申し込みを行ったページのURL 以上の情報を渡したい考えです。 会員情報などの取り扱いは、システム上で全て行う予定です。 この場合の渡す方法としてPOST等で渡す方法しか思いつかないのですが、他によい方法はありますでしょうか? この場合知識があればデータの改竄が可能なため悩んでおります。 ただ、カード決済などは今すぐに使用しないので、商品金額等を改竄されても最終的に人の目で確認するのでトラブルはないだろうと思っているのですが・・・・ どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

自分だったら、各サイトごとに鍵を変えて、HMACで電子署名をつけますね。 具体的には、POSTで渡す直前で確認ページを表示し、そこに次の内容を仕込んでおきます。 ・商品の価格 ・商品の名前 ・どのサイトから来た申し込みなのか ・申し込みを行ったページのURL + 現在の日付+時刻 + 鍵のIDなど (*後述) + HMAC値 (*後述) それから、これらすべての値を「会員登録から申し込みなどを完成させるシステム」に送ります。 送られたサーバーではHMAC値が一致することを確認し、日付+時刻も一定時間内であることをチェックします。そうすると、改ざんがあればHMAC値が変わりますし、同じHMAC値を使ったリプレイ攻撃も一定時間以降は無効化されます。 HMACの値はこれ以外のすべての値を:などで順に連結したものをメッセージとして、送り元・送り先で共有した鍵で計算して作ります。HMAC値を計算するライブラリーはいろんなプログラミング言語に提供されているので、それを使うとよいでしょう。また、特別な理由がなければハッシュ関数にはSHA256あたりを選択しておけばよいでしょう。 鍵にIDがあるのは、鍵が暴露した時に鍵を入れ替えてシステムを保つためです。あるいは、同じ鍵で計算し続けるとどうしてもシステムとして弱くなるので、定期的に鍵を変更できるようにするためです。これも、鍵の値のハッシュ値を使ったり、一意なバージョン番号を振って数えたりすればよいでしょう。自分だったら、Javaで作っていたらKeyczarあたりを使いたいところですが。 というわけで、自分だったらデータをやりとりするサイトごとにHMAC鍵を用意して、タイムスタンプをつけた上でHMAC値を計算し、それで改ざん防止とリプレイ防止を図ります。また、HMAC鍵はバージョン管理しておき、定期的に変更します。なお、当たり前ですがHMAC鍵は送信元・送信先のサーバー以外では見えないようにするよう厳重管理です。

yysuruo
質問者

お礼

返信が大変遅くなりました。 Hamacと言う仕組みを知らなかったので、早速色々調べてテストで実装してみました。 すごく勉強になりました。 ありがとうございます。

その他の回答 (1)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.2

もう一つの実装方法。 ウェブブラウザを通すと改竄の可能性があるから、直接サーバ同士で情報をやり取りするよ! まず、 新しく作るサーバの SSL ポートを標準以外にして、もう一つ立てる。 立てた SSL は双方向認証にして、不特定の PC からの接続を拒絶。 次に、 立てた SSL への通信をアプリケーションサーバに渡して、申し込み情報の POST を受け付けるように設定する。 実際の流れは、 ウェブブラウザで、申し込み確定をクリック ↓ 各サーバは、新しく立てたサーバの標準以外のポートで立てたほうの SSL へ接続して POST。 ↓ 新しく立てたサーバが POST 結果を、各サーバに返す。 ↓ 各サーバは POST が失敗ならエラーログでこの件の取引をレポートして、処理は継続。 ↓ ウェブブラウザに、申し込み手続き完了のページを表示する。 おしまい。

yysuruo
質問者

お礼

返信が大変遅くなってしまいました。 なるほど~、サーバー毎にアクセスを可にすれば、強固なセキュリティになりそうです。 ただ、現在の私の環境では、簡単には実行できそうにないので、参考にさせていただきます。 ありがとうございました。

関連するQ&A

  • VB.NETでフォーム間のデータ受け渡し

    Form1、Form2・・・と複数フォームから 商品情報をDBより検索するFormItemを呼び出し FormItemで選択した値を 呼び出し元フォームのテキストボックスに返したいのですが FormItemで選択した値を呼び出し元へ返す方法がわかりません .NETは初めてなので、教えてください

  • フォーム間のデータ受け渡し

    現在VIsual Studio 2005のフォームアプリケーションを使ってプログラミングしています。ボタンを押すことで新たな子フォームを作成し、親フォームから子フォームへグローバル関数で宣言しているbmp[],picture[],red[]などのデータを渡したいのですがどうすればいいのかわからず困っております。子フォームから親フォームへテキストボックスなどの値を渡す方法などはわかったのですが、それをどう応用していいのかもわからない状況です。最終的には親フォームのbmp[0]におけるred[0]が1(画像処理されている)なら子フォームでbmp[0]を表示させたいと思っています。わかる方がいましたらどうかご教授ください。よろしくお願いします。以下がプログラムとなっております。 *** 親フォーム *** #pragma once #include "pic2.h" namespace pic { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace System::IO; // 省略 // public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: ここにコンストラクタ コードを追加します // bmp = nullptr; Array::Resize( bmp, 20 ); Array::Resize( picture, 20 ); Array::Resize( bmpr, 20 ); this->red = gcnew array<int>(20); } // 省略 // private: System::Windows::Forms::PictureBox^ pictureBox1; private:array< Bitmap^>^ bmp; // 原画像格納 // private:array< Bitmap^>^ bmpr; // 処理画像格納 // private:array< PictureBox^>^ picture; private:array< int>^ red; // 処理:1 不処理:0 // // 省略 // #pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { bmp[0] = gcnew Bitmap("ファイル名",true); } private: System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e) { pic2 ^p2 = gcnew pic2(); p2->ShowDialog();     /* ボタンを押すことで新たなフォーム作成 */ } private: System::Void pictureBox1_Click(System::Object^ sender, System::EventArgs^ e) { int x,y; int w = bmpr[0]->Width; int h = bmpr[0]->Height; if(red[0] == 1){ bmp[0] = gcnew Bitmap("ファイル名",true); pictureBox1->Image = bmp[0]; red[0] = 0; return; } if(red[0] == 0){ // 画像処理 // pictureBox1->Image = bmpr[0]; red[0] = 1; } } }; *** 子フォーム *** #pragma once //#include "Form1.h" #include "pic3.h" using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; namespace pic { /// <summary> /// pic2 の概要 /// public ref class pic2 : public System::Windows::Forms::Form { public: pic2(void) { InitializeComponent(); // //TODO: ここにコンストラクタ コードを追加します // } // 省略 // } #pragma endregion private: System::Void pic2_Load(System::Object^ sender, System::EventArgs^ e) { if(親フォームのred[0]==1ならば){ pictureBox1->Image = bmp[0] } } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {   // 新たな子フォームpic3作成 // } private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { this->Close(); } }; }

  • SOHOでサイト運営をしておりますが、会員制等に使うCGIがわからない

    現在SOHOでサイト運営をしておりますが、新しく会員制にしたいと思っています。創りたいシステムは (会員登録など登録とログインのシステム) (登録してもらった内容をサイトに反映できるシステム) (さらに内容を検索できるシステム) などです。 しかし、プログラミングの知識がないので簡単に作れるソフトウェアなどあれば教えて頂きたいです。(少し急いでいるため) 又、ソフトがなく、勉強が必要だという場合は具体的な勉強方法などを教えていただければと思います。(書籍等おすすめの参考資料を教えて頂くと助かります。) ちなみに現在Pealからcgiを少し勉強し始めたところですが、とてもむずかしくつまづいてばかりです。 (システム環境は全てMacintoshです。) よろしくお願いします。

    • ベストアンサー
    • CGI
  • ショッピングサイトにおけるサイトへのアクセス経路の把握について

    ショッピングサイトを運営しております。 現在、どのサイトや広告からアクセスがあって、最終的に申し込みまで至ったかの件数を把握するために、 ○○○.net/shop/ ○○○.net/shop1/ ○○○.net/shop2/ ○○○.net/shop3/ のように、全く同じデータの入ったフォルダを複数つくり、それぞれのアクセス元に別々のURLへリンクするように設定してもらっています。(現在30ほどあります) ショッピングサイトといっても商品点数が少ないため、申し込みフォーム、フォーム用のCGIもそれぞれのディレクトリにおいております。 例えば、Aというサイトに出している広告のリンク先は ○○○.net/shop3/ として、この/shop3/のcgiフォーム経由で申し込みのあった件数を、Aからの申し込み件数としてカウントし、広告効果の測定を行っています。 現在問題がありまして、この/shop**/の「**」がどんどん増えていった場合、メンテナンスが煩雑になるのと、ミスが生じやすいということで、別の方法はないか模索しているところです。 「Cookieを使う方法、cgiやphpを使う方法などがある」というところまではわかっているのですが、どのようにすればいいのかもう少し具体的にお教えいただければと思います。 また、現在の方法をそのまま継続したと仮定して、もっと簡単にメンテナンスをする方法があればお教えいただければと思います。商品点数は少ないのですが、定期的に商品が変るため、画像と説明文を変更する必要があり、そのたびに商品紹介ページのhtmlファイルをそれぞれのディレクトリにアップロードしなくてはなりません。例えば、あるディレクトリを更新したら自動的にコピーされる方法があればお教えいただければと存じます。 よろしくお願い申し上げます。

  • Webシステムのセキュリティテスト

    Webシステムのセキュリティテストを簡単にできるツールや方法を教えてください。 私は、セキュリティに関しては、ノウハウを持っていなくて、困っております。 ツールで簡単にWebシステムのセキュリティを診断し、レポートしてくれる様なものがあると、助かります。 SQLインジェクション、クロスサイトスクリプティング、リクエスト偽装、他ユーザーの情報を取得してしまう等、外部公開する前にセキュリティ状態を、レポートする予定です。 セキュリティテスト対象のWebシステムは、会員情報や各種申し込みを申請するシステムで、一般ユーザーに公開する予定です。

  • ドメインとサーバー内データの権利について

    現在、個人事業主としてサイトAを運営しております。(ドメインは「サイトA.com」) この事業は知人Bと2人で立ち上げたもので(代表者は私です)、ドメインの取得、 レンタルサーバーの契約に関してはBが行い、現在も名義人はBです。 先日、意見の食い違いから、Bが抜けると言い出しました。 サイトA内の「特定商品に関する法律に基づく表記 」の部分には、事業主として私の名前が記載してあります。 この場合、ドメインの権利、そしてサーバー内のデータ等に関しての権利はどちらにありますでしょうか? 権利を主張できるのであれば、ドメインを譲渡してもらい、運営を続けることができます (サーバー内のデータに関しては、権利有りならば抜き出してこちらで新たにサーバーを借りればいいので・・) が、向こうに権利があるとなると、事業自体を内部から乗っ取られたようになってしまうので納得がいかないのですが・・

  • ダウンロード制限を実行する方法教えてください

    業界向けの有料会員サイトを作成しました。 そこにメーカや生産者からの新商品情報などを都度掲載しております。(連絡先のみ、ショッピングカート無し) 今後、私が制作したPOPイラストも掲載し、会員にはダウンロードしてもらおうと思っているのですが、無料だと1回で全てダウンロードされてしまうと危惧しております。 月に最高何枚までと制限を付けてダウンロードさせたいのですが、手法がよく分かりません。 友人には最初からショッピングカート付けたら簡単と言われましたが、毎月定額の会員費を頂き、その中で色々なサービスを提供し運営していく方法が希望です。 上記のようなシステムを無料または安価な方法で出来るメーカやシステムがあれば教えてください。

  • データの抽出方法

    お世話になっております。 以下のような場合で、いっぺんに抽出できる良い方法があれば教えて頂きたく、よろしくお願いいたします。 会社が運営するWebサイトの会員データ (エクセルで、レコード数は1万弱)の集計。 プレゼントキャンペーンに応募して頂いた会員の個人データで、 各自、個人情報以外に4桁の抽選番号が登録してあります。 プレゼントの当選番号に該当する全ての会員データを抽出したいのですが、 一つの抽選番号に対して何名も該当者がいるため、VLOOKUPが使えず、 当選番号も数十通り程あるので、オートフィルタも時間がかかってしまいます。。。。 宜しくお願いします。

  • 既存サイト全体を会員制にしたいです。

    複数の掲示板があるサイトを運営しています。 現在、設置してある掲示板システムには(あまり)手を加えず システムを追加することで、サイト全体を会員制にしたいと考えています。 現在は、トップページにアクセスすると 各掲示板へのリンクや掲示板の内容が表示されているのですが 会員制にすることで トップページは、ログインフォームと会員登録フォームのみの内容にしたいです。 どのような方法がありますでしょうか? 参考になりそうなサイトや スクリプト等もあれば教えて頂けると嬉しいです。 よろしくお願いします。 トップのコンテンツを http://xxxx.xxxx.com/ ひとつ下の階層に全部移動させて http://xxxx.xxxx.com/xxx/ トップページで認証を行って OKならばxxxディレクトリにアクセスできる。 という感じのスクリプトがあれば使えそうなのですが・・

    • 締切済み
    • CGI
  • サーバーにデータアップロードする際のウィルス対策を教えてください

    あるサイトのオーナーです。今回新しく現在のサイトを利用して、ある会員向けに会員の商品を弊社HP上にアップロードさせて(会員には会員毎にIDとパスワードを与えて会員のデータ(写真、JPEG)と商品情報をマイページ画面から入力してもらいます)、弊社HP上で商取引ができるようなサイトを構築中です。 しかし、その会員がアップロードするデータ(写真)がウィルスに犯されている場合の対策を考えなければならないことに気づきました。弊社のサーバーはレンタルサーバーなので、サーバー会社に問い合わせたとこおろ、ウィルスチェックサービスはメールの送受信にしか対応しておらず、データのアップロードにはウィルス対策のサービスはないと言われました。何かいい方法、ソフト等はないでしょうか?