• 締切済み

Flashの通信について

通信についての質問です。現在Flashでオンラインゲームを作っています。 通信は完全に同期の必要はありません(5秒~5分更新で通信状況により非同期で変更しています)がデータの欠落、書き換えによる不正行為を出来るだけ無くすためにサーバー側にデータを全て保存しPHPで処理してそれを読み出す仕組みにしています。 現在HTTP通信で制作しているのですがHTTP通信だとHTTPヘッダにFlashから送信したPOST値が表示されて内容が見えてしまったりFirefoxだとステータスバーに"データを転送しています"と表示されてしまいます。 この2つの問題を解決する方法はないでしょうか? また@gamesなどのオンラインゲームのFlashは一般的にどのような方法で通信を行っているのでしょうか?回答宜しくお願いします。 *Socket通信も考えたのですがそこまでリアルタイム性を要求していないのとサーバー側にデータを保存して読み出す必要があるため余り向いていないと思い断念しました。

みんなの回答

  • cspl
  • ベストアンサー率83% (55/66)
回答No.2

1.HTTPヘッダにFlashから送信したPOST値が表示されて内容が見えてしまったり これについてはPOSTするデータを暗号化して送信することで回避できます。実際セッション情報を渡すような案件で使用したこともあります。 参考: http://q.hatena.ne.jp/1200732246 ですが、リンク先にもある通り、swf自体を解析されてしまえばどうしようもありません。 2.Firefoxだとステータスバーに"データを転送しています"と表示されてしまいます これはFlashを使用する限り、どうしようもないでしょうね。

  • atse
  • ベストアンサー率83% (36/43)
回答No.1

そういうことを懸念する場合は、 FlashをUIとしてしか使わないような作りになると思います。 FlashとPHPの組み合わせならば、PHPでオンラインゲームを作り、 その操作をFlashでやってもらうという形です。 例えば、スロットマシーンがあるとすれば、 Flash上では、BET枚数とスタートボタンを押したことだけをサーバーに送り、 PHP側でそれを受け、当たり外れを出し、ユーザの所持メダル増減等を処理します。 その処理後、Flash側にスロットの結果(絵柄の並び等)や所持メダル枚数を返してあげ、 Flashはただそれに沿って、結果を表示するだけということです。 ------------- 「大当たりでメダルを100枚ゲット」という結果をサーバーに送る等、 アクションの結果をFlash側で出してサーバーに送信する仕組みだと、 それを書き換えられてしまう可能性があるので、 基本的にその結果は、サーバーサイドで出すことが不正の抑制に繋がります。 また、サーバ側のプレイヤー判別に使うIDやPASSは、原則的にセッションです。 Flash側から通信ごとに毎回送るといった方法は危険です。

関連するQ&A