2017-08-12 29 views
1

Googleドライブの特定の(スプレッドシート)ファイルを変更するWebアプリケーションを作成します(つまり、ユーザーはそのアプリケーションを私として使用します)。しかし、特定のユーザーにのみ にアクセスしてください。アプリをデプロイするとき、私はそれを非公開または公開にするオプションしかありません。 一つの解決策は、正しいユーザーがログインしているかどうかを確認するためにセッションクラスを使用することであろう。特定のユーザーに限定してGoogle Apps Script Webアプリケーションを制限する

function onAppBegin(){ 

if (Session.getActiveUser().getEmail() != "[email protected]") return null; 
accessGranted(); 
} 

この粗製の方法は、実際に安全であり、ハッキングでない場合は、私が心配ですか?

答えて

1

このメソッドはでも安全です:誰もアクセス権を持ちません。あなたのWebアプリケーションがオプション "Execute the app as:me"で展開されている場合、Session.getActiveUser().getEmail()はおそらく空の文字列を返します。 documentationを参照してください:

メールアドレスが利用可能である状況が異なります。たとえば、ユーザーの電子メール・アドレスは次のように、スクリプトはそのユーザーの許可なしに実行することができます任意のコンテキストでは使用できません[...] 「私として実行」(つまり、ユーザーの代わりに開発者によって承認された)にデプロイされたWebアプリケーション。ただし、開発者とユーザーが同じG Suiteドメインに属している場合、これらの制限は一般的に適用されません。

ユーザーはウェブアプリケーションにアクセスするためにログインしていても、自分の代わりに何かをする、たとえば自分のメールアドレスを見つけることを許可していないという問題があります。

「Webアプリケーションにアクセスするユーザー」によってWebアプリケーションが実行されるように展開されている場合は、Web AppがそのWebサイトを認証するように求められます。しかし、ユーザーがすでに直接変更できるファイルのみを変更することができます。

この難点を回避する方法は、許可されたユーザーにWebアプリケーションのキー(長いランダムな文字列)を与えることです。彼らはhttps://..../exec?key=mykeyに行くことによって、アプリケーションにアクセスすると、以下のようにアプリがキーをチェックします。

function doGet(e) { 
    if (e.parameter.key == "mykey") { 
    var ss = SpreadsheetApp.openById("spreadsheet Id"); 
    // modify the spreadsheet 
    } 
} 

さて、これはあなたの独創的なアプローチよりもさらに粗製のですが、それは動作します。間違った人がキーを取得した場合、そのアプリケーションを使用できるようになりますが、そのダメージはアプリケーションが実行できるものに限定されます。誰かがあなたのGoogleアカウントにアクセスすることは、それほど悪いことではありません。

関連する問題