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

  1. 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.
  2. Os campos minSdkVersion e targetSdkVersion 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.
  3. Toda nova release deve ter o versionCode incrementado e ser único para cada versão.
  4. 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.
  5. Ofuscação de código com ferramentas como o Proguard é fortemente recomendada.
  6. 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.
  7. 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.
  8. Reserve uma Activity para conter informações sobre a empresa e contato.
  9. Utilize apenas as funcionalidades exportadas pelo WrapperPPS. O uso de SDKs de fornecedores como SUNMI e PAX é desencorajado e será proibido futuramente.
  10. 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.
  11. Utilize o Android Keystore para armazenamento de dados sensíveis (usuários, tokens de sessão, API keys). Não use SQLite ou SharedPreferences para armazenar dados críticos.
  12. Utilize HTTPS com protocolo TLS 1.2 ou superior e os ciphers habilitados. Não utilize cleartextTrafficPermitted=true.
  13. 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.
  14. Acesso via ADB ao terminal não é permitido em produção.
  15. O aplicativo não pode utilizar WebApps e WebViews.
  16. O acesso a recursos do Google Play Services é restrito, algumas funcionalidades não estarão disponíveis em produção.
  17. Durante a geração do artefato de produção, remova todas as configurações de debug (allowBackup=true, testOnly=true, debuggable=true).
  18. Não é permitido criar serviços de acessibilidade.
  19. O uso de armazenamento externo (SDCARD) não é permitido.
  20. O aplicativo não pode modificar configurações do sistema como data, hora e idioma.
  21. 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ãoDescrição
ACCESS_COARSE_LOCATIONPermite que um aplicativo acesse a localização aproximada do dispositivo, geralmente através de redes Wi-Fi ou torres de celular.
ACCESS_FINE_LOCATIONPermite que um aplicativo acesse a localização precisa do dispositivo, utilizando GPS e outras fontes de localização.
ACCESS_NETWORK_STATEPermite 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_STATEPermite que um aplicativo acesse informações sobre o estado da conexão Wi-Fi, como se o Wi-Fi está ativado e conectado.
BLUETOOTHPermite que um aplicativo utilize funcionalidades básicas de Bluetooth, como a detecção de dispositivos próximos.
BLUETOOTH_ADMINPermite que um aplicativo altere configurações de Bluetooth, como habilitar/desabilitar o Bluetooth e emparelhar dispositivos.
BLUETOOTH_ADVERTISEPermite que um aplicativo envie pacotes de publicidade Bluetooth, tornando o dispositivo visível para outros dispositivos Bluetooth.
BLUETOOTH_CONNECTPermite que um aplicativo se conecte a dispositivos Bluetooth emparelhados.
BLUETOOTH_SCANPermite que um aplicativo escaneie dispositivos Bluetooth próximos.
CAMERAPermite que um aplicativo acesse a câmera do dispositivo para tirar fotos ou gravar vídeos.
FOREGROUND_SERVICEPermite 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_DEVICEPermite que um aplicativo execute serviços em primeiro plano relacionados a dispositivos conectados.
FOREGROUND_SERVICE_DATA_SYNCPermite que um aplicativo execute serviços em primeiro plano para sincronização de dados.
FOREGROUND_SERVICE_SPECIAL_USEPermite que um aplicativo execute serviços em primeiro plano para usos especiais definidos pelo sistema.
INTERNETPermite que um aplicativo acesse a internet para enviar e receber dados.
NEARBY_WIFI_DEVICESPermite que um aplicativo acesse informações sobre dispositivos Wi-Fi próximos.
NFCPermite que um aplicativo utilize comunicação por proximidade (NFC), para interagir com dispositivos NFC.
POST_NOTIFICATIONSPermite que um aplicativo envie notificações para o usuário. Atente-se para não disparar notificações em excesso.
READ_BASIC_PHONE_STATEPermite que um aplicativo leia informações básicas sobre o estado do telefone, como se está em uma chamada.
READ_CONTACTSPermite que um aplicativo acesse a lista de contatos do dispositivo.
READ_MEDIA_AUDIOPermite que um aplicativo acesse arquivos de áudio armazenados no dispositivo.
READ_MEDIA_IMAGESPermite que um aplicativo acesse imagens armazenadas no dispositivo.
READ_MEDIA_VIDEOPermite que um aplicativo acesse vídeos armazenados no dispositivo.
READ_PHONE_STATEPermite que um aplicativo acesse informações sobre o estado do telefone, como número de telefone e status da chamada.
RECORD_AUDIOPermite que um aplicativo grave áudio usando o microfone do dispositivo.
RECEIVE_BOOT_COMPLETEDPermite que um aplicativo receba uma notificação quando o dispositivo é inicializado.
USE_BIOMETRICPermite que um aplicativo utilize métodos biométricos, como impressões digitais ou reconhecimento facial, para autenticação.
USE_FINGERPRINTPermite que um aplicativo utilize o sensor de impressão digital para autenticação.
VIBRATEPermite que um aplicativo utilize a funcionalidade de vibração do dispositivo.
WAKE_LOCKPermite 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_ALARMPermite que um aplicativo defina alarmes no dispositivo.
RECEIVEPermite que um aplicativo receba mensagens e notificações.
BIND_GET_INSTALL_REFERRER_SERVICEPermite 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_LOCATIONPermite que um aplicativo acesse a localização do dispositivo em segundo plano.
ACCESS_MEDIA_LOCATIONPermite que um aplicativo acesse informações de localização associadas a arquivos de mídia.
BATTERY_STATSPermite que um aplicativo acesse informações sobre o uso da bateria do dispositivo.
FLASHLIGHTPermite que um aplicativo acesse a lanterna do dispositivo.
CHANGE_NETWORK_STATEPermite que um aplicativo altere o estado da conexão de rede, como habilitar ou desabilitar dados móveis.
CHANGE_WIFI_STATEPermite que um aplicativo altere o estado da conexão Wi-Fi, como conectar ou desconectar de uma rede.

Permissões proibidas

PermissãoDescrição
ACCESS_INSTANT_APPSPermite que um aplicativo acesse recursos relacionados a aplicativos instantâneos (apps que podem ser executados sem instalação).
ACCESS_WEBVIEWPermite que um aplicativo utilize o componente WebView, que é usado para exibir conteúdo web dentro de aplicativos.
BROADCAST_STICKYPermite que um aplicativo envie transmissões persistentes que ficam disponíveis para outros aplicativos.
DELETE_PACKAGESPermite que um aplicativo desinstale outros pacotes de aplicativos do dispositivo.
DISABLE_KEYGUARDPermite que um aplicativo desative temporariamente a tela de bloqueio do dispositivo.
DOWNLOAD_WITHOUT_NOTIFICATIONPermite que um aplicativo faça downloads sem que o usuário receba uma notificação.
DUMPPermite que um aplicativo colete dados de logs do sistema ou de outros aplicativos.
INSTALL_PACKAGESPermite que um aplicativo instale outros pacotes de aplicativos.
INSTALL_SHORTCUTPermite que um aplicativo crie atalhos na tela inicial do dispositivo.
INTERACT_ACROSS_USERS_FULLPermite que um aplicativo interaja com todos os perfis de usuários do dispositivo.
KILL_BACKGROUND_PROCESSESPermite que um aplicativo finalize processos em segundo plano para liberar recursos do sistema.
MOUNT_UNMOUNT_FILESYSTEMSPermite que um aplicativo monte ou desmonte sistemas de arquivos.
QUERY_ALL_PACKAGESPermite que um aplicativo consulte a lista completa de aplicativos instalados no dispositivo.
REQUEST_DELETE_PACKAGESPermite que um aplicativo solicite a desinstalação de outros aplicativos.
REQUEST_INSTALL_PACKAGESPermite que um aplicativo solicite a instalação de pacotes de aplicativos, como APKs.
SET_TIMEPermite que um aplicativo ajuste o horário do sistema.
SET_TIME_ZONEPermite que um aplicativo ajuste o fuso horário do dispositivo.
SET_WALLPAPERPermite que um aplicativo defina a imagem de fundo da tela do dispositivo.
SET_WALLPAPER_HINTSPermite que um aplicativo defina dicas de papel de parede, como alinhamento e zoom.
SYSTEM_ALERT_WINDOWPermite que um aplicativo crie janelas sobre outros aplicativos, como janelas flutuantes.
WRITE_APN_SETTINGSPermite que um aplicativo altere as configurações de pontos de acesso (APNs), que são usados para conectar o dispositivo à internet.
WRITE_OWNER_DATAPermite que um aplicativo escreva dados específicos do proprietário do dispositivo.
WRITE_SECURE_SETTINGSPermite que um aplicativo altere configurações protegidas do sistema, como ajustes de segurança e preferências do sistema.
WRITE_SETTINGSPermite 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.


© 1996- Todos os direitos reservados.

PAGSEGURO INTERNET INSTITUIÇÃO DE PAGAMENTO S/A - CNPJ/MF 08.561.701/0001-01

Av. Brigadeiro Faria Lima, 1.384, São Paulo - SP - CEP 01451-001