Отправка в Google таблицы с устройства Android через Google Script. Это безопасно? - PullRequest
2 голосов
/ 08 июля 2020

Я следовал этому руководству: https://www.crazycodersclub.com/android/how-to-use-google-sheet-as-database-for-android-app-1-insert-operation/

Каким-то образом у меня он работал на androidX. Я хочу отправить конфиденциальную информацию о местоположении по воздуху по ссылке на мою таблицу Google. Насколько это безопасно? Раньше я использовал OAuth2 с g spread в Python и полагался на ключ. json. Это кажется намного проще ... Могут ли пользователи найти мою ссылку и прочитать мои личные записи? Или есть какое-то ограничение, при котором они могут отправлять данные только на лист?

Код веб-приложения:

var ss = SpreadsheetApp.openByUrl("Add Your Spread Sheet URL here");

var sheet = ss.getSheetByName('Items'); // be very careful ... it is the sheet name .. so it should match 


function doPost(e){
var action = e.parameter.action;

if(action == 'addItem'){
  return addItem(e);

}

}





function addItem(e){

var date =  new Date();

var id  =  "Item"+sheet.getLastRow(); // Item1

var itemName = e.parameter.itemName;

var brand = e.parameter.brand;

sheet.appendRow([date,id,itemName,brand]);

   return ContentService.createTextOutput("Success").setMimeType(ContentService.MimeType.TEXT);



}

Мой лист настроен для просмотра только мной. Веб-приложение развернуто, так как у всех есть доступ, даже анонимный

так оно называется в приложении android:

StringRequest stringRequest = new StringRequest(Request.Method.POST, "Add Your Web App URL",
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                loading.dismiss();
                Toast.makeText(AddItem.this,response,Toast.LENGTH_LONG).show();
                Intent intent = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(intent);

            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }

1 Ответ

2 голосов
/ 09 июля 2020

Ответ:

Единственные данные, которые будет обслуживать ваше веб-приложение, - это те, которые возвращаются вашими функциями doGet() или doPost(). Если данные вашей таблицы не будут возвращены, они будут недоступны для просмотра.

Дополнительная информация:

Просто резюмируя цепочку комментариев выше:

  • Если в настройках конфиденциальности Google Sheet установлено значение Only me, тогда даже со ссылкой на Лист никто не сможет его просмотреть.
  • Теоретически, при наличии достаточного времени и грубой силы ссылка на веб-приложение может быть угадана , но это маловероятно.
  • Веб-приложение будет запускаться от имени пользователя, указанного в диалоговом окне Publish as web app, как показано ниже:

enter image description here

  • The only thing that will happen if someone "unauthorised" accesses the web app is the doGet() or doPost() function will run, HTTP method dependent. If you have no doGet(), then doPost() will run.
    • Expanding on this, if your doPost() does not display the Sheet information, then the Sheet information will not be retrievable to the user.
    • Also, as long as you do not have your Sheet ID in the returned content from your doPost() function, the user will also be blind to the Sheet's ID and can not reverse engineer it.

Additionally, if you want to mitigate Web App usage entirely, you can implement adding data to the Sheet directly using the Google Sheets API Java Клиентская библиотека . Вы также можете посмотреть краткое руководство по настройке здесь .

Надеюсь, это будет вам полезно!

Ссылки:

...