Guia de segurança para integradores
Como empresa certificada PCI DSS Level 1 Service Provider, estamos constantemente revisando nossos controles e políticas de segurança para trazer o máximo de segurança para nossos clientes. Por conta disso, estabelecemos um guia de requisitos de segurança que devem ser seguidos pelos integradores para que possam ter seus respectivos aplicativos aprovados e disponíveis em nossa loja de aplicativos:
Requisitos de Segurança
- O tamanho máximo do artefato final (APK) de produção não deve exceder 200MB. Aplicativos próximos ao limite podem comprometer o plano de dados mensal dos clientes em cenários onde o acesso à internet é restrito a GPRS.
- Os campos
minSdkVersion
etargetSdkVersion
devem ser preenchidos no arquivo AndroidManifest.xml para definir, respectivamente, a versão mínima do Android API que o aplicativo poderá executar e a versão da API para a qual foi projetado. - Toda nova release deve ter o versionCode incrementado e ser único para cada versão.
- Boas práticas de desenvolvimento são incentivadas para manter a performance do sistema e economia de bateria. Implemente timeout em requisições e rotinas que possam travar o fluxo de execução da aplicação.
- Ofuscação de código com ferramentas como o Proguard é fortemente recomendada.
- Todos os aplicativos submetidos para análise devem ter uma descrição clara sobre a empresa, funcionalidades do aplicativo e prints de tela, sem expor dados reais e sensíveis.
- O nome do aplicativo deve ser o mesmo do
AndroidManifest.xml
, e o ícone deve carregar a identidade da empresa ou do próprio aplicativo. - Reserve uma Activity para conter informações sobre a empresa e contato.
- Utilize apenas as funcionalidades exportadas pelo WrapperPPS. O uso de SDKs de fornecedores como SUNMI e PAX é desencorajado e será proibido futuramente.
- Apenas requisite dados estritamente necessários e informe explicitamente o motivo da coleta. Realize mascaramento de dados em tela e recibos, seguindo as normas da LGPD.
- Utilize o Android Keystore para armazenamento de dados sensíveis (usuários, tokens de sessão, API keys). Não use
SQLite
ouSharedPreferences
para armazenar dados críticos. - Utilize HTTPS com protocolo TLS 1.2 ou superior e os ciphers habilitados. Não utilize
cleartextTrafficPermitted=true
. - Todos os serviços externos que a aplicação se comunica devem ser informados com justificativa. Acesso a recursos de concorrentes não será permitido.
- Acesso via ADB ao terminal não é permitido em produção.
- O aplicativo não pode utilizar WebApps e WebViews.
- O acesso a recursos do Google Play Services é restrito, algumas funcionalidades não estarão disponíveis em produção.
- Durante a geração do artefato de produção, remova todas as configurações de debug (
allowBackup=true
,testOnly=true
,debuggable=true
). - Não é permitido criar serviços de acessibilidade.
- O uso de armazenamento externo (SDCARD) não é permitido.
- O aplicativo não pode modificar configurações do sistema como data, hora e idioma.
- Recomendamos fortemente a adoção de um ciclo de desenvolvimento seguro, incluindo ferramentas como SAST, SCA, DAST e IAST e a realização periódica de modelagem de ameaças, revisão de código e pentests.
Permissões
As permissões do Android servem para que o aplicativo possa consumir determinadas funcionalidades do Android API. É necessário se atentar e requisitar o mínimo de permissões suficientes para que o aplicativo execute corretamente.
Permissões permitidas
Permissão | Descrição |
---|---|
ACCESS_COARSE_LOCATION | Permite que um aplicativo acesse a localização aproximada do dispositivo, geralmente através de redes Wi-Fi ou torres de celular. |
ACCESS_FINE_LOCATION | Permite que um aplicativo acesse a localização precisa do dispositivo, utilizando GPS e outras fontes de localização. |
ACCESS_NETWORK_STATE | Permite que um aplicativo acesse informações sobre as redes disponíveis, como se o dispositivo está conectado a uma rede Wi-Fi ou de dados móveis. |
ACCESS_WIFI_STATE | Permite que um aplicativo acesse informações sobre o estado da conexão Wi-Fi, como se o Wi-Fi está ativado e conectado. |
BLUETOOTH | Permite que um aplicativo utilize funcionalidades básicas de Bluetooth, como a detecção de dispositivos próximos. |
BLUETOOTH_ADMIN | Permite que um aplicativo altere configurações de Bluetooth, como habilitar/desabilitar o Bluetooth e emparelhar dispositivos. |
BLUETOOTH_ADVERTISE | Permite que um aplicativo envie pacotes de publicidade Bluetooth, tornando o dispositivo visível para outros dispositivos Bluetooth. |
BLUETOOTH_CONNECT | Permite que um aplicativo se conecte a dispositivos Bluetooth emparelhados. |
BLUETOOTH_SCAN | Permite que um aplicativo escaneie dispositivos Bluetooth próximos. |
CAMERA | Permite que um aplicativo acesse a câmera do dispositivo para tirar fotos ou gravar vídeos. |
FOREGROUND_SERVICE | Permite que um aplicativo execute serviços em primeiro plano, que precisam continuar em execução enquanto o usuário está interagindo com outros aplicativos. |
FOREGROUND_SERVICE_CONNECTED_DEVICE | Permite que um aplicativo execute serviços em primeiro plano relacionados a dispositivos conectados. |
FOREGROUND_SERVICE_DATA_SYNC | Permite que um aplicativo execute serviços em primeiro plano para sincronização de dados. |
FOREGROUND_SERVICE_SPECIAL_USE | Permite que um aplicativo execute serviços em primeiro plano para usos especiais definidos pelo sistema. |
INTERNET | Permite que um aplicativo acesse a internet para enviar e receber dados. |
NEARBY_WIFI_DEVICES | Permite que um aplicativo acesse informações sobre dispositivos Wi-Fi próximos. |
NFC | Permite que um aplicativo utilize comunicação por proximidade (NFC), para interagir com dispositivos NFC. |
POST_NOTIFICATIONS | Permite que um aplicativo envie notificações para o usuário. Atente-se para não disparar notificações em excesso. |
READ_BASIC_PHONE_STATE | Permite que um aplicativo leia informações básicas sobre o estado do telefone, como se está em uma chamada. |
READ_CONTACTS | Permite que um aplicativo acesse a lista de contatos do dispositivo. |
READ_MEDIA_AUDIO | Permite que um aplicativo acesse arquivos de áudio armazenados no dispositivo. |
READ_MEDIA_IMAGES | Permite que um aplicativo acesse imagens armazenadas no dispositivo. |
READ_MEDIA_VIDEO | Permite que um aplicativo acesse vídeos armazenados no dispositivo. |
READ_PHONE_STATE | Permite que um aplicativo acesse informações sobre o estado do telefone, como número de telefone e status da chamada. |
RECORD_AUDIO | Permite que um aplicativo grave áudio usando o microfone do dispositivo. |
RECEIVE_BOOT_COMPLETED | Permite que um aplicativo receba uma notificação quando o dispositivo é inicializado. |
USE_BIOMETRIC | Permite que um aplicativo utilize métodos biométricos, como impressões digitais ou reconhecimento facial, para autenticação. |
USE_FINGERPRINT | Permite que um aplicativo utilize o sensor de impressão digital para autenticação. |
VIBRATE | Permite que um aplicativo utilize a funcionalidade de vibração do dispositivo. |
WAKE_LOCK | Permite que um aplicativo mantenha o dispositivo acordado e impeça que entre em modo de suspensão. Por mais que não seja proibida, essa permissão é desencorajada, pois pode acarretar em consumo excessivo de bateria. |
SET_ALARM | Permite que um aplicativo defina alarmes no dispositivo. |
RECEIVE | Permite que um aplicativo receba mensagens e notificações. |
BIND_GET_INSTALL_REFERRER_SERVICE | Permite que um aplicativo se vincule ao serviço de referência de instalação, usado para rastrear de onde um aplicativo foi instalado. |
ACCESS_BACKGROUND_LOCATION | Permite que um aplicativo acesse a localização do dispositivo em segundo plano. |
ACCESS_MEDIA_LOCATION | Permite que um aplicativo acesse informações de localização associadas a arquivos de mídia. |
BATTERY_STATS | Permite que um aplicativo acesse informações sobre o uso da bateria do dispositivo. |
FLASHLIGHT | Permite que um aplicativo acesse a lanterna do dispositivo. |
CHANGE_NETWORK_STATE | Permite que um aplicativo altere o estado da conexão de rede, como habilitar ou desabilitar dados móveis. |
CHANGE_WIFI_STATE | Permite que um aplicativo altere o estado da conexão Wi-Fi, como conectar ou desconectar de uma rede. |
Permissões proibidas
Permissão | Descrição |
---|---|
ACCESS_INSTANT_APPS | Permite que um aplicativo acesse recursos relacionados a aplicativos instantâneos (apps que podem ser executados sem instalação). |
ACCESS_WEBVIEW | Permite que um aplicativo utilize o componente WebView, que é usado para exibir conteúdo web dentro de aplicativos. |
BROADCAST_STICKY | Permite que um aplicativo envie transmissões persistentes que ficam disponíveis para outros aplicativos. |
DELETE_PACKAGES | Permite que um aplicativo desinstale outros pacotes de aplicativos do dispositivo. |
DISABLE_KEYGUARD | Permite que um aplicativo desative temporariamente a tela de bloqueio do dispositivo. |
DOWNLOAD_WITHOUT_NOTIFICATION | Permite que um aplicativo faça downloads sem que o usuário receba uma notificação. |
DUMP | Permite que um aplicativo colete dados de logs do sistema ou de outros aplicativos. |
INSTALL_PACKAGES | Permite que um aplicativo instale outros pacotes de aplicativos. |
INSTALL_SHORTCUT | Permite que um aplicativo crie atalhos na tela inicial do dispositivo. |
INTERACT_ACROSS_USERS_FULL | Permite que um aplicativo interaja com todos os perfis de usuários do dispositivo. |
KILL_BACKGROUND_PROCESSES | Permite que um aplicativo finalize processos em segundo plano para liberar recursos do sistema. |
MOUNT_UNMOUNT_FILESYSTEMS | Permite que um aplicativo monte ou desmonte sistemas de arquivos. |
QUERY_ALL_PACKAGES | Permite que um aplicativo consulte a lista completa de aplicativos instalados no dispositivo. |
REQUEST_DELETE_PACKAGES | Permite que um aplicativo solicite a desinstalação de outros aplicativos. |
REQUEST_INSTALL_PACKAGES | Permite que um aplicativo solicite a instalação de pacotes de aplicativos, como APKs. |
SET_TIME | Permite que um aplicativo ajuste o horário do sistema. |
SET_TIME_ZONE | Permite que um aplicativo ajuste o fuso horário do dispositivo. |
SET_WALLPAPER | Permite que um aplicativo defina a imagem de fundo da tela do dispositivo. |
SET_WALLPAPER_HINTS | Permite que um aplicativo defina dicas de papel de parede, como alinhamento e zoom. |
SYSTEM_ALERT_WINDOW | Permite que um aplicativo crie janelas sobre outros aplicativos, como janelas flutuantes. |
WRITE_APN_SETTINGS | Permite que um aplicativo altere as configurações de pontos de acesso (APNs), que são usados para conectar o dispositivo à internet. |
WRITE_OWNER_DATA | Permite que um aplicativo escreva dados específicos do proprietário do dispositivo. |
WRITE_SECURE_SETTINGS | Permite que um aplicativo altere configurações protegidas do sistema, como ajustes de segurança e preferências do sistema. |
WRITE_SETTINGS | Permite que um aplicativo modifique as configurações gerais do dispositivo, como brilho de tela e volume. |
Qualquer permissão não mencionada acima será analisada pontualmente.
Updated 4 days ago