Что такое предупреждающий баннер в Google Apps Script и почему он появляется?
Описание предупреждающего баннера: когда и где он отображается
Предупреждающий баннер в Google Apps Script – это уведомление, которое отображается пользователям при первом запуске скрипта, требующего авторизации с доступом к конфиденциальным данным (например, к почте, документам или контактам). Он появляется в виде жёлтого или красного (в зависимости от серьезности потенциальных рисков) сообщения в верхней части окна скрипта или веб-приложения, созданного на основе Apps Script.
Причины появления предупреждающего баннера: небезопасные приложения и разрешения
Этот баннер появляется, когда Google считает, что ваше приложение (скрипт) запрашивает чувствительные разрешения, но не прошло верификацию. Это происходит, если:
- Вы используете разрешения, которые позволяют вашему приложению читать, изменять или удалять данные пользователя.
- Ваше приложение запрашивает доступ к данным, которые Google считает конфиденциальными.
- Ваше приложение не прошло процесс верификации в Google Cloud Platform (GCP).
Google отображает этот баннер для защиты пользователей от потенциально вредоносных приложений.
Влияние баннера на пользовательский опыт и доверие к приложению
Предупреждающий баннер может негативно сказаться на пользовательском опыте и доверии к приложению. Пользователи могут быть обеспокоены тем, что их данные находятся под угрозой, и могут отказаться от использования вашего приложения. Баннер может отпугнуть пользователей, которые не разбираются в технических деталях и не понимают, почему он появляется.
Способы удаления или обхода предупреждающего баннера
Существует несколько способов убрать или обойти предупреждающий баннер:
Вариант 1: Верификация приложения в Google Cloud Platform (GCP)
Это наиболее рекомендуемый способ, который требует прохождения процесса верификации приложения в Google Cloud Platform. Этот процесс подтверждает, что ваше приложение является легитимным и не представляет угрозы для пользователей.
Вариант 2: Запрос минимально необходимых разрешений
Убедитесь, что ваше приложение запрашивает только те разрешения, которые действительно необходимы для его работы. Чем меньше разрешений вы запрашиваете, тем меньше вероятность появления предупреждающего баннера.
Вариант 3: Использование альтернативных методов авторизации (если применимо)
В некоторых случаях можно использовать альтернативные методы авторизации, которые не требуют запроса конфиденциальных разрешений. Например, можно использовать Service Accounts для доступа к Google Cloud Storage.
Подробное руководство по верификации приложения в Google Cloud Platform
Верификация приложения в GCP – это процесс, требующий времени и внимания к деталям. Вот основные шаги:
Шаг 1: Создание проекта в Google Cloud Platform
- Перейдите на Google Cloud Console.
- Создайте новый проект или выберите существующий.
Шаг 2: Настройка OAuth Consent Screen
- В Google Cloud Console найдите «OAuth consent screen».
- Выберите тип пользователя: Internal (для пользователей внутри вашей организации) или External (для всех пользователей Google).
- Заполните основную информацию о приложении (название, электронная почта поддержки).
- Добавьте области (scopes), которые ваше приложение будет использовать (например,
https://www.googleapis.com/auth/spreadsheets
).
Шаг 3: Заполнение необходимой информации о приложении (логотип, контакты и т.д.)
- Заполните всю необходимую информацию о вашем приложении, включая логотип, политику конфиденциальности и условия использования.
- Предоставьте подробное описание того, как ваше приложение использует запрашиваемые разрешения.
Шаг 4: Верификация приложения в Google (может занять несколько дней)
- После заполнения всей информации, отправьте приложение на верификацию.
- Процесс верификации может занять несколько дней, в течение которых Google проверит ваше приложение на соответствие требованиям безопасности.
- Вам может потребоваться предоставить дополнительную информацию или внести изменения в приложение, если Google обнаружит какие-либо проблемы.
Рекомендации по обеспечению безопасности приложения и предотвращению появления баннера в будущем
Принципы минимальных привилегий: запрашивайте только необходимые разрешения
Всегда запрашивайте только те разрешения, которые абсолютно необходимы для работы вашего приложения. Например, вместо разрешения на полный доступ к Google Drive, запросите разрешение только на чтение определенных файлов.
Регулярный аудит безопасности кода: выявление и устранение потенциальных уязвимостей
Регулярно проверяйте свой код на наличие потенциальных уязвимостей, таких как инъекции кода или ошибки авторизации. Используйте инструменты статического анализа кода и проводите ручные проверки.
/**
* @param {string} userInput - Ввод пользователя, который нужно проверить.
* @returns {string} - Экранированный ввод пользователя.
*/
function sanitizeInput(userInput: string): string {
// Экранирование специальных символов, чтобы предотвратить инъекции.
let sanitizedInput = userInput.replace(/</g, '<').replace(/>/g, '>');
return sanitizedInput;
}
// Пример использования
let maliciousInput = "<script>alert('XSS')</script>";
let safeInput = sanitizeInput(maliciousInput);
console.log(safeInput); // Вывод: <script>alert('XSS')</script>
Информирование пользователей о запрашиваемых разрешениях и целях их использования
Четко и понятно объясняйте пользователям, почему ваше приложение запрашивает определенные разрешения и как вы будете использовать их данные. Это поможет укрепить доверие к вашему приложению.
Альтернативные решения и обходные пути (если верификация невозможна)
Ограничение использования функций, требующих повышенных разрешений
Если верификация невозможна или занимает слишком много времени, попробуйте ограничить использование функций, требующих повышенных разрешений. Например, если вам нужно только читать данные из Google Sheets, используйте SpreadsheetApp.openById() вместо SpreadsheetApp.getActiveSpreadsheet(), чтобы не запрашивать разрешение на доступ ко всем таблицам пользователя.
Использование сервисов сторонних разработчиков с проверенной репутацией
Вместо самостоятельной разработки функций, требующих конфиденциальных разрешений, можно использовать сервисы сторонних разработчиков с проверенной репутацией. Например, для отправки email можно использовать SendGrid или Mailgun, которые уже прошли верификацию и имеют надежную инфраструктуру.
Создание ‘обертки’ вокруг скрипта с использованием более безопасных методов авторизации
В некоторых случаях можно создать ‘обертку’ вокруг скрипта с использованием более безопасных методов авторизации. Например, можно использовать Service Accounts для доступа к Google Cloud Storage и затем передавать данные в ваш скрипт, который будет использовать меньше разрешений.