2016-09-27 10 views
0

最近、私は、1年ほど前に構築されたiOS(iphone)用の比較的古いコードバスアプリを手に入れました。Cordova&CORS(iOS)

アプリは、サーバーからAPIを照会します。このサーバーはLaravelを使用して構築され、laravel-corsを使用します。

特有の理由から、このアプリの開発者は、Originヘッダーがない場合にのみCORSサーバー側で要求を受け付けるように設定しています。

私はアプリが過去1年間うまくいっていたと言われました。 それをデバッグしている間、私はiOSのブラウザが原点=>「ファイル://」を追加していることに気づいたコルドバのアプリが要求

を行うための$アヤックスを使用する場合、そのヘッダにそして今、私の質問のために

あなたがいます新しいiOSのバージョンでのこのような変更を認識していますか? 私はクライアントサイドをバイパスするために何もできないと思いますか?

"file://"をサーバー側の受け入れ可能なオリジンとして追加することはどのくらい安全ですか?

ありがとうございます!

+1

私の記憶では、CORSセキュリティは、ブラウザがユーザーが特定のサーバーに要求できるかどうかを確認するために使用されているクライアント側のセキュリティです。したがって、基本的に、Cordova Appの場合、サーバー側にCORSを実装する必要はありません。ブラウザ上でアプリケーションをテストする場合は、開発中に必要になるかもしれません。 – Hammerbot

+0

あなたは正しいです。また、開発者にもこれを認識させましたが、可能であれば、サーバーを改ざんすることを避けるよう教えてくれました。 したがって、私はhttps://github.com/wymsee/cordova-HTTPを使用してCORSの問題を回避しました。 だから、すべての$ .ajax呼び出しをcordovaHTTP.postに変更する必要があります。 バー、悪化する可能性があります! – mitsest

+0

@El_Matella非常に多くの場合、同じサーバー側がCordovaと非Cordova(ブラウザ)アプリケーションの両方に使用されます。したがって、通常のブラウザクライアントの攻撃対象を拡大することなくCORSをオフにすることはできません。コルドバは単にこの起源を送るべきではありません。 – Raman

答えて

1

サーバがnull-Originを受け入れる理由は、CORSが動作するように定義されている「特有」ではありません。ブラウザベースのXSS攻撃から保護することを目的としています。ブラウザは、Originヘッダを自動的に送信し、サーバがJavaScript呼び出しを許可するドメインに基づいてリクエストを受け入れるか拒否することができます。これは、JSONPハックの安全な標準ベースの後継として、クロスオリジンのサーバー要求を制御された方法で可能にすることを目的としています。デフォルトでは、ブラウザは同じオリジンXHRおよびその他の同様の要求(full list)のみを要求し、許可します。ブラウザ以外のクライアントは、彼らがとにかく(例えばcurl)、それらの例には、それは理にかなっているように、ちょうど完全Originヘッダをオフのままにしたいものは何でもOrigin設定することができますので、

CORSは、ブラウザ以外のクライアントのために定義されていません。

ご質問の一部にお答えするには、受け入れ側のサーバー側にfile://を追加することは(非常に)安全ではありません。その理由は、CORS保護を迂回しようとする攻撃者は、ユーザが自分のファイルシステムにWebページをダウンロードしてブラウザで実行することを騙し、許可されたリストにfile://があるので、意図したOriginの制限をバイパスする可能性があるからです。 file://の起源を受け入れるサーバーを利用できる、既知のものと未知のものがあります。

これを追加するリスクは、自分のプロジェクト要件に基づいて評価する必要があります。

+0

ええ、私これが答えになるのではないかと恐れていた...あなたの時間をありがとう! 私はajaxリクエストにhttps://github.com/wymsee/cordova-HTTPを使用しました。 – mitsest

+0

@mitsest 'cordova-HTTP'のヒントをありがとう。私もそれを調べるつもりです。 – Raman

関連する問題