ysss
1
この記事について質問があります:kintoneセキュアコーディングガイドライン
プラグイン設定画面でAPIを実行したいのですが、セキュアコーディングガイドラインの「クロスドメイン制約」に該当するのか気になっております。
クロスドメイン制約のため、XHR(XMLHttpRequest)を使用したcybozu.comと外部サイトとの通信はできません。「Access-Control-Allow-Origin」ヘッダーは付与できません。
背景としては自社の外部システムとの連携をしており、プラグイン設定画面にAPIの接続情報を入力し、APIで接続テストまでを行う仕様にしようと考えています。
ただし、プラグイン設定画面は kintone.proxy は対応していないため、fetchを使って動かしています。
なお、接続先APIは自社管理で、CORSのオリジン許可はkintoneドメインに限定済みです。
この場合クロスドメイン制約に引っかかることになるのでしょうか?
mura
2
自社サーバーに接続し、かつ、CORSの許可設定してるなら問題ないかとおもいます。
ですが、
pluginにもkintone.proxyにも相当するものはありますね。
くわえて、下記APIをつかって認証情報などを隠蔽することができますので
自社サーバーへ必要な認証情報をkintone.plugin.app.setProxyConfig() を使って保存するようにしkintone.plugin.app.proxy()を使って自社サーバーとやりとりするようにするのがセキュアだとはおもいます(fetch()でやる場合は認証情報がコードやデバッグツールなどでみえるため)
ysss
3
ご回答ありがとうございます!
kintone.plugin.app.proxy() も試しましたが、プラグイン設定画面では動作しませんでした。設定画面から外部 API を実行する手段は現状用意されていない、という理解でおります。
fetch()でやる場合は認証情報がコードやデバッグツールなどでみえるため
確かにこの懸念はありますね。今回のケースではfetch を使っているのは「保存前の接続テスト」の 1 箇所のみで、その時点で送信しているのは管理者自身が入力したブラウザ上にある値をそのまま送っているだけなので、露出範囲は増えないかと思います。
接続先が自社管理で、CORS のオリジン許可も限定しているため、クロスドメイン制約に抵触するものではないと理解しました
早速のご返信ありがとうございました
mura
4
プラグイン設定画面では動作しませんでした。
あーそうか、失礼しました、プラグイン設定画面から、ということならたしかにそうですね…