以下、Firefox 3.5で試しています。

geolocation APIで偽装位置取得を防ぎたいと思い調査しているのですが、
javascript:(function(){navigator.geolocation.getCurrentPosition=function(cb){alert('abc')};})();
上記のようなBookMarkletを用意し、http://mozilla.jp/firefox/features/geolocation/の位置取得機能デモページを実行すると、実行後しばらくは乗っ取りが成功し、位置を取得しようとするとアラート「abc」が表示されます。
が、ブラウザリロード等をしなくても、10秒も立たないうちに、元の位置取得機能が動作するようになります。

これは、どういう原理で元に戻っているのでしょうか?
また、その原理を利用して、navigator.geolocation.getCurrentPositionが乗っ取られないことを保証するような施策はありますでしょうか(意図的に、その修復機構を実行させる、みたいな)?
教えていただければ幸いです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/07/16 16:31:35
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント60pt

Ajaxによる非同期通信によって実現できます。

つまり、下記の1~3を無限ループすることで実装します。

  1. サーバからの応答(位置情報)を受信
  2. クライアント側で一定時間待機する(この場合は10秒程度)
  3. サーバへ再リクエストを投げる

非同期通信によるファイルの取得」が参考になるでしょう。

id:kokogiko

自己解決いたしました。

ありがとうございました。

2009/07/16 16:30:52

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません