2017-11-04 6 views
-3

私は、展示用のWebアプリケーション(平均スタックなど)を作っていると言います。本当に会場にいます、どうすればいいですか?一般的な攻撃は何ですか?偽のユーザーからの攻撃を防ぐ(実際のユーザーは実際に特定の場所にいるユーザー)

+0

収益のWiFiネットワークからの接続のみを許可しますか?シンプルなIPフィルタが行います。 – madhead

答えて

0

あなたのアプリまたはサーバー側で会場の場所を保存します。次に、あなたが選んだ100 msまたはRadiusの周りの場所を取得して、ユーザーを追跡してみてください。

BuildPhasesにCoreLocation.frameworkを追加 - >リンク・バイナリとライブラリ(もはや必要ではXCode 7.2.1のように)

あなたのクラスへのインポートCoreLocation - おそらくViewController.swift

あなたのクラスにCLLocationManagerDelegateを追加宣言

のinitロケーションマネージャPLISTするNSLocationWhenInUseUsageDescriptionとNSLocationAlwaysUsageDescriptionを追加します。

locationManager = CLLocationManager() 
locationManager.delegate = self; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest 
locationManager.requestAlwaysAuthorization() 
locationManager.startUpdatingLocation() 
get User Location By: 
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    var locValue:CLLocationCoordinate2D = manager.location.coordinate 
    print("locations = \(locValue.latitude) \(locValue.longitude)") 
} 

は短く、一般的な答えは、あなたが本当にこれを行うことはできませんで、このTracking Location

+0

偽の位置情報を提供するのは非常に簡単です。 –

1

に見ていますが、お読みください。

答えが必要な質問は、あなたのアプリケーションを保護したい、あなたが緩和しようとしている脅威とは何ですか?

モバイルアプリで保護を構築することはできます(たとえば、他の回答のように)が、クライアントはユーザーによって完全に制御されることに注意してください。たとえば、ユーザーがアプリの位置座標を偽ったり(Pokemon Goを参照)、エミュレータや実​​際のデバイスでの操作は非常に簡単です。あるいは、ユーザーはアプリケーションではなく、任意のソースから要求を行うことができます。サーバーの要求には、ユーザーの所在地が含まれていなければなりませんが、ユーザーは必要なものを送信できます。要するに、クライアント上のものはすべてユーザーによって完全に制御されます。

これにより、実際に安全なソリューション(迂回するのがかなり難しい)のための唯一の方法として、サーバー側の保護が行われます。クライアントがサーバに通知する場合、クライアントが物理的にどこにいるのかをサーバが知っている唯一のソースですが、上記で見てきたものは信頼できません。

しかし、クライアントが合理的に(少なくとも簡単には)偽造できないことが1つあり、それがクライアントのIPアドレスです。会場にいないユーザーがサービスを利用できないようにするためにできる唯一の方法は、ネットワークレベルでサービスを使用することです。たとえば、APIサーバーはIPアドレス開催地は(おそらくローカルアドレス範囲、またはあなたのAPIがクラウドにある場合は公的IPアドレスまたは会場の範囲)を提供します。

関連する問題