ファイルシステムで実行されるHTML / Javascriptアプリ、セキュリティの問題
-
03-07-2019 - |
質問
ホストをセットアップしたくないため、一部のビジネスマンがローカルファイルシステムで実行できる小さなツールを作成しています。
基本的には、サードパーティからRESTを使用していくつかのレポートをプルするためのHTML + Javascript(jQueryを使用)のみです。
問題は、FF3とIEがajax呼び出しを許可していないことです。
Access to restricted URI denied" code: "1012
明らかにXSSの問題です...どうすれば回避できますか?返されるデータはXML形式です。
このようにしようとしていました:
$.get(productUrl, function (data){
alert (data);
});
編集:明確にするために...私はこのために内部ホストを設定していません(多くの赤テープになります)。取得するデータのためにこれを外部でホストすることはできません。
編集#2 :少しテストした結果、IFRAMEを使用してリクエストを作成できることがわかりました。非表示のIFRAMEを使用するマイナス面があるかどうかは誰にもわかりますか?
解決
同様の状況で、私の解決策はMark Of The Webを使用することでした。これはIEが認識する特別なHTMLコメントです。ページを別のセキュリティゾーンに配置します。
参照: MSDN
他のヒント
Pythonがインストールされている場合、ファイルを提供するウェブサーバーは
と同じくらい簡単ですpython -c “import SimpleHTTPServer;SimpleHTTPServer.test()”
編集:元のポスターはこのアプローチを使用できませんが、一般的に、これはこの問題を抱える将来のユーザーのためにこの特定の問題を解決する方法だと思います。
データを提供するサーバーを制御していますか?その場合、コールバックを設定できます。基本的な考え方は、受信データ(この場合はXML文字列)を処理するスクリプト内に関数があるということです。次に、サーバーは、文字列を引数として使用するコールバック関数のJavaScriptスニペットで要求に応答します。そして、AJAXを使用する代わりに、新しいスクリプトタグをページに追加します。これがJSONPの基礎です。このように見えます。
ローカルページ。
<script>
function callback(str) {
alert(str);
}
function makeRequest(param) {
var s = document.createElement('script');
s.src = 'http://serveranywhere/script.bla?' + params;
document.getElementsByTagName[0].appendChild(s);
}
</script>
リモートサーバーが戻る
callback('<xml><that><does><something></something></does></that></xml>');
スクリプトがページに追加されると、指定した文字列で関数コールバックが実行されます。 jQuery呼び出しは、$。ajax呼び出しでJSONPを使用して、これらすべてを実行します。これがお役に立てば幸いです。