2

Apache Cordova を使い始めたばかりです。SOAPサーバーへの呼び出しを(ajax経由で)行うライブラリがあります。

Chrome のローカル マシンでこれらを実行すると、サービスを呼び出そうとすると、クロス サイト スクリプティング エラーが発生します。

iOS エミュレーターで Cordova ブラウザーを使用してまったく同じコードを実行すると、スクリプトはサーバーに正常にヒットしたように見え、応答データは適切に受信されます。

私の質問は、クロスサイト スクリプティングのアクセス許可と JSONP なしで、Cordova ブラウザーがこれらの要求をどのように行うことができるのかということです。私が気づいたことの 1 つは、リクエストが iOS から送信されたときに「Origin」ヘッダーがないことです。これにより、Cordova ブラウザーがクロスサイト スクリプティングの要件をこっそりと回避できるのでしょうか? デバイス上の node.js サーバー (これが Cordova の仕組みだと思います) がヘッダーを操作してこれを許可している可能性はありますか?

自分のサイトでクロスサイト スクリプティングを有効にしたくないので、この「機能」はいいと思いますが、セキュリティ ホールでもあるのではないかと考えています。

誰でもこれを経験したことがありますか?

4

1 に答える 1

10

デフォルトでは、Phonegap はクロス ドメイン リクエストを許可します。セキュリティが心配な場合は、ドメインのホワイトリストを使用してこれを制限できます。jQuery を使用している場合は$.support.cors = true;、クロス ドメイン リクエストを許可するように設定します。

このページには、Phonegap におけるクロス サイト スクリプティング セキュリティの内訳があります。

ところで、Google Chrome でクロス サイト スクリプティングを許可し、Ripple エミュレーターで Phonegap アプリをテストするために使用できる巧妙なトリックがあります。たとえば--disable-web-security、ショートカットのコマンド ライン パラメーターを Chrome に設定します。

"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security
于 2013-10-25T16:25:54.023 に答える