• 締切済み

Android、iOSアプリのサーバ連携について

サーバと連携するスマートフォンアプリを作成したいと思っています。 スマートフォン側で実行した結果をサーバにアップロードすることを想定しています。 しかし、単純に実装するとクエリを解析され、スマートフォン以外からのアクセスによりサーバにデータがアップロードされてしまうと危惧しております。 秘密鍵をサーバとアプリで共有して通信しても、アプリをリバース・エンジニアリングされれば無意味と思いますし、一昔前ならIP制限してキャリアからの通信以外を制限すればよかったでしょうが、今だとテザリング等でそれも無意味かと思います。 もし何らかの良い方法があればご教授願いたく、よろしくお願い致します。

みんなの回答

noname#177743
noname#177743
回答No.2

>通信傍受のようなことを心配しているわけではなく、アプリで実行した結果を改ざんしてアップロードされることを心配しています。 そういうことなら、普通はログインIDとパスワードをSSLで送り、ユーザー確認をした上で処理を受け付けるようにすると思うのですが、それだとまずいのですか? 不審な挙動があればそのIDを利用停止にすればよいわけですし、IDやパスワードをアプリとは別に登録配布すればより安全でしょう。

kofun
質問者

補足

例えば、何らかのゲームをスマートフォンのアプリで行なって、その結果の得点ランキングを競う場合はどうするのでしょうか? サーバ側はユーザがアップロードしてきたゲームプレイ結果の得点をユーザごとに集計し、ランキングすることになると考えています。 (ガラケーでのモバゲーなどの簡単なフラッシュゲームはそのような仕組みではないかと思っているのですが) この場合、結果送信の際のクエリを解析してしまえば、認証後は得点を改ざんして送信することが可能であると思います。 暗号化すれば、クエリ単体では解析できないでしょうが、リバースエンジニアリングすればサーバに送るクエリやらプロトコルはわかってしまうのではないでしょうか。 フラッシュがどれくらいリバースエンジニアリングしやすいのかは知りませんが、Androidなら簡単です。 それでもガラケーの場合はIPをキャリアで制限するなどすれば、ある程度はデータの正当性を確保できるのではないかと思っていました。 TCPで常時サーバとやり取りをしているとかだと、まだやりようはあるのかもしれませんが、そこまで頑強なサーバを用意することはできません。 TCPでもシミュレータを作れば同じ話のような気はしますが、そこまでする人にはどうしようもない(対策しようがない)とも思います。 しかし、現状のAndroidだと余りにも簡単に改ざんできる気がするので、どうしたものかと考えている次第です。

回答No.1

だったらhttpsで通信しろよ。 もしくは独自にプロトコルを実装して暗号化すればいい。 >秘密鍵をサーバとアプリで共有して通信しても、アプリをリバース・エンジニアリングされれば無意味と思いますし 今時、秘密鍵なんてプログラムの中に埋め込むか? Access Tokenをリアルタイムに取得でしょ。

kofun
質問者

補足

ご回答ありがとうございます。 このあたりは詳しくないので誤解をして理解しているかもしれませんが、 Access Tokenを使ったところで、Access Tokenをやり取りするプログラムを作られてしまえば同じではないでしょうか? Androidですとapkを解凍してしまえばソースは見えてしまうので、なんとでもなる気がします。 通信傍受のようなことを心配しているわけではなく、アプリで実行した結果を改ざんしてアップロードされることを心配しています。 どうしようもないので全てサーバで処理してくださいというのならそれで諦めはつくのですが、何らかの方法があるのかと思いましたので質問させていただきました。

関連するQ&A

  • iアプリとサーブレットとの連携。

    iモードjava開発に対応したWebサーバーはいろいろと制限があると聞いたのですが、質問させて下さい。 ただ今、携帯向け(Docomo)スケジュール帳サーブレット開発をしようとしています。スケジュール帳の前に簡単なiアプリとの連携テストとして携帯画面にて文字を入力して送信ボタンを押すと、そのまま文字を返すというプログラム(iアプリ&サーブレット)を作ってみたところ『動作中にエラーが発生しました』と携帯画面にメッセージが出ます。WebサーバにTomcat3.3.1を使用しているのですが、Webサーバが悪いのか他に原因があるのかわからなくて困っています。どなたかよろしくお願いします。 windows2000Professional, j2sdk1.4.0_01

    • ベストアンサー
    • Java
  • android youtubeアプリの動画キャッシ

    android搭載のスマートフォンで youtubeアプリで気に入った動画を何回も見ることがあります。 その際に動画のデータはキャッシされるのでしょうか? それとも繰り返し再生の度にデータ通信が行わるのでしょうか? データ通信量に制限がある契約のために、 データ通信量を節約になるのかどうかが気になりました。 ご存知の方いらっしゃいましたら、教えてください よろしくお願いします

  • iアプリは、jarファイルをダウンロードしたディレクトリ以下にしか、HTTP通信できない?

    こんにちは。 iアプリの制作をしていますが、 基本的に携帯端末にダウンロードしたiアプリは、 本体のjarファイルが置かれているWebサーバー以外とは HTTP通信できないと思うのですが、さらに 「Webサーバーの、Jarファイルが格納されているディレクトリ以下にしか 通信できない」という縛りがある機能があると聞きました。 ・アプリ連携起動 ・ブラウザ連携起動 の機能をアプリに実装すると、そういった、 Webサーバーの、Jarファイル以下のディレクトリにしかアクセスできない というのは本当でしょうか? キャリアのWebページにある、技術資料 http://www.nttdocomo.co.jp/p_s/imode/make/java/index.html 「iアプリコンテンツ開発ガイド for DoJa-4.0 詳細編」 に目を通したのですが、 それらしい記述がみつかりませんでした。 もしそれが本当であるなら、そういった技術資料の 何ページ目に記述されている、という形で教えてください。 どなたかご存知の方、よろしくお願い致します。

  • アプリごとのリアルタイム通信速度を知りたい

    アンドロイドのスマートフォンで、使用中のアプリのリアルタイムの通信速度が知りたいのですが、測定する方法はあるでしょうか? 例えばyoutubeを視聴している時にyoutubeアプリが現在行っている通信量&速度を上部に表示できるようなアプリはありませんか? 楽天の980円simをつかっているんですが、月枠通信量以外に、接続先ごとに制限があるのか調べたいです。

  • Androidのデバイス間通信のプログラミングは?

    現在、Androidプログラミングを勉強しています。 Androidのデバイス同士で定期的な通信を行いデータを送受信したいのですが どのような技術を使えば実装できますか? アプリは、遠距離を想定しています。 また、 ・Aがサーバにデータを送信 ・Bがサーバからデータを受信 などサーバを介さずに、送受信することは可能ですか?

  • キーボード付きandroid端末に最適のアプリ

    先日「Life Touch NOTE」を購入しました。 主な用途としてはメモや長文の打ち込み等です。取りあえずメモアプリとevaenoteを駆使していて、現状特にストレス無しに使えています。 さて、色々なアプリを導入して弄っているのですが、スマートフォンというよりは「キーボードがついている端末」ならではのアプリという意味で何かおすすめはありますでしょうか。今はショートカットキーでランチャーが呼び出させるようになど、なるべくタッチパネルに頼らないように、などと心がけていますが、「こういう風にしたら便利」など、何か工夫の仕方がありましたらお願いします。 主な用途は文章記入と前述しましたが、そういう方向でも、そういう方向以外でも、何か便利な使い方、アプリ等ありましたらアドバイスお願いします。

  • アプリのモバイルデータ通信を制限

    ドコモのアンドロイド スマートフォン(SO-53B) あるアプリだけモバイルデータ通信を制限したいのです。 設定方法はどうすればいいですか?

  • 【iアプリ】 サーバー通信・リスト作成の方法

    仕事で急遽必要となり、はじめてiアプリにチャレンジしています。 アプリの仕組みやJAVAについてもあまり良く分からないので、ご助言をお願いしますっ。 ▼今回実装したい機能は下記の通りです▼ ・サーバー側で随時更新されていく商品リストを通信で読み取り、アプリ内で一覧表示 ・リストから好きな商品を選択⇒その画像を通信でサーバーから取得、表示する 画像リストに載せる情報は下記の通りです。 「商品のカテゴリ、商品の色、商品の画像のURL、商品の詳細ページURL」 アプリ側でのリストの表示方法は下記の通りです。 「カテゴリから商品選択⇒色の選択⇒画像表示&詳細ページURL表示」 サーバー側で用意するリストはどのような形式であればアプリから読み込みできますか? servletとかがないと無理でしょうか? また、アプリ側ではどういった処理をすればそのデータをリスト表示できるのでしょうか? 色々と分からないことだらけで申し訳ありません! 参考になりそうなURLとかでも構わないので、よろしくお願いします。

    • ベストアンサー
    • Java
  • androidから自宅内サーバへアクセスできない

    一応IT系に勤めるものですが、 自宅でandroid(携帯・タブレット)から自宅wifiで自宅サーバへアクセスができない原因がわからずに困っています。 同じLAN内のノートPCの共有フォルダを認識できても、サーバのファイルサーバ(samba)にアクセスでいません。アプリでスキャンしてもサーバのipがでません。 ネットワークとlinuxに詳しい方教えてください。 ■自宅環境 マンションで光回線がきています。 無線LANルータを使用して、自宅サーバへは有線、それ以外は無線で使用してます。 動的IP DHCPですが、サーバへはルータで固定のプライベートIP 外部→ルータ→(有線)自宅サーバ ↓(無線) ノートPC、ipod touch、android端末..等 外部からサーバへはルータのポート転送を使用してサーバへつなげています。 ■サーバ linux(CentOS) ファイヤーウォール(iptables)は切ってみましたが、結果かわらず。 sambaも内部には制限なし。 ■現象 android端末でwifiに接続し、自宅サーバにアクセスできない。  ・自宅サーバ上のwebページにアクセスできない。(プライベートアドレス192.168~)  ・アプリでsmbaのファイルサーバを検出できない。(スキャンしても表示されない)  ・ルータの設定ページはアクセス可能(192.168~)  ・ルータには特に制限なし  ・★ipod touchからはwifiで普通にサーバにアクセスできサーバ上のwebページもみれます。  ・3G回線ならandroidでも自宅サーバ上サイトをみれます。   いろいろ書きたいですが、ひとまずここまでとします。 怪しいところや、androidだとここがアレだからだよ!っていう情報ありましたら 教えてください。 宜しくお願いします。

  • カーナビアプリ利用時の通信量

    Androidタブレットで、ドライブサポーター(月額315円)というアプリを入れました。 このタブレットを車に搭載し、ナビとして利用したいと思っています。通信は、 スマホからのテザリングを利用します。 テザリングは7GBの制限がありますので、カーナビアプリがどの程度通信を するのか気になります。 利用するのは、比較的人口の多い市街地。車の流れは悪くありません。 利用は毎日30キロ程度。 もちろん、その場の状況などによっても違うのは承知していますし、 正確でなくても構いません。一ヶ月カーナビとして利用するとしたら、どの程度 パケットを消費するものでしょうか。自分の場合はこうだった、的なお答えで 構いませんので、ぜひ教えてください。 また、GoogleMapや単なる「ナビ」というアプリなどではいかがでしょうか。 バッテリー消費の問題などは気にしなくて結構です。

専門家に質問してみよう