Módulo 6 · 6.2
Atualizações, cópias de segurança e funções
Módulo 6: Gestão e segurança · Tempo de leitura: 11 minutos
Objetivo de aprendizagem: Depois desta lição, saberá atualizar uma loja WooCommerce e fazer cópias de segurança sem perder encomendas, e distribuir os direitos de forma que cada pessoa só possa fazer o que é necessário.
Conceitos-chave: atualização grande e pequena, atualização da base de dados, extensões e compatibilidade, substituições de modelos (template overrides), modelos desatualizados, cópia de segurança antes da atualização, encomendas entre a cópia de segurança e o restauro, tabelas HPOS, funções Gestor de loja (Shop manager) e Cliente (Customer), privilégios mínimos, mostrar versões, xmlrpc.php
Porque é que uma loja é diferente de um site comum
O curso de WordPress (lições 7.2, 8.1 e 8.2) explica como atualizar o WordPress, como fazer cópias de segurança e como restaurá-las. Numa loja, tudo isso se aplica, com uma grande diferença: a base de dados muda ao longo de todo o dia. Cada encomenda, cada cliente, cada alteração de stock e cada pagamento entra nela. Num site informativo, com uma cópia de segurança de ontem perde, no máximo, um artigo. Numa loja, perde encomendas que já foram pagas.
Por isso, duas regras práticas para esta lição:
- Numa loja, restaurar é o último passo, não o primeiro.
- Atualize com um plano, e não "rapidamente, numa sexta-feira à tarde".
Atualizações do WooCommerce
O WooCommerce lança regularmente novas versões, com pequenas correções pelo meio. O número de versão tem três partes, como 11.2.2. Uma alteração no último número é uma pequena correção ou atualização de segurança; uma alteração no primeiro ou no segundo número traz novas funcionalidades e, por vezes, alterações às quais as extensões ou o seu tema têm de se adaptar.
Numa atualização do WooCommerce acontecem três coisas que se veem menos num plugin comum:
- Uma atualização da base de dados. Por vezes, o WooCommerce tem de ajustar as tabelas. Verá então um aviso na administração de que a base de dados está a ser atualizada; isso decorre em segundo plano através das ações agendadas (lição 7.3). Não interrompa o processo e verifique em WooCommerce > Estado se já terminou.
- As extensões têm de acompanhar. Os plugins de pagamento, as ligações de envio e as ligações à contabilidade indicam até que versão do WooCommerce foram testados. No ecrã de plugins, aparece um aviso se uma extensão não mencionar uma versão mais recente. Leia as alterações do seu plugin de pagamento antes de atualizar: um plugin de pagamento que deixa de funcionar significa uma loja que não vende.
- Substituições de modelos. Muitos temas têm cópias próprias de modelos do WooCommerce (a pasta
woocommerce/no tema). Se o WooCommerce alterar o original, a cópia fica desatualizada. Em WooCommerce > Estado (Estado do sistema), em baixo, junto ao tema, vê quais os modelos que o tema substitui e quais estão desatualizados. Os modelos desatualizados podem não ter campos novos ou gerar erros. Atualize o tema ou peça uma atualização ao seu criador.
As atualizações pequenas (último número) devem ser aplicadas rapidamente, de preferência de forma automática, porque corrigem muitas vezes falhas de segurança. As atualizações grandes devem ser testadas primeiro em staging (lição 7.3), num momento calmo, com uma cópia de segurança feita imediatamente antes.
Cópias de segurança: o que desaparece ao restaurar
Um exemplo. A Theehuis Example faz uma cópia de segurança todas as noites às 03.00. Na terça-feira às 10.00, o administrador atualiza o WooCommerce e, a seguir, a página do produto mostra um erro. Entre as 03.00 e as 10.00 chegaram seis encomendas, pagas através do fornecedor de pagamentos. Se restaurar agora a cópia de segurança das 03.00:
- essas seis encomendas desaparecem da base de dados, embora o dinheiro esteja no fornecedor;
- a loja deixa de saber que o stock é mais baixo;
- a loja pode ainda receber mais tarde notificações (webhooks) do fornecedor sobre encomendas que não conhece.
Por isso:
- Faça uma cópia de segurança imediatamente antes de uma atualização, e não apenas durante a noite. Assim, o intervalo é o mais pequeno possível.
- Ao restaurar, anote quais as encomendas que chegaram depois da cópia de segurança (a partir dos e-mails "Nova encomenda" e do painel do seu fornecedor) e reponha-as depois manualmente, ou exporte-as antecipadamente.
- De preferência, restaure apenas os ficheiros (a pasta antiga do plugin ou do tema) se o problema estiver no código, e deixe a base de dados como está. Muitas vezes, é possível reverter uma atualização instalando a versão anterior do plugin; o curso de WordPress, lição 8.2, mostra como fazer um restauro direcionado. Se a atualização já tiver atualizado a base de dados, a versão antiga pode deixar de funcionar com ela: por isso, teste primeiro em staging.
- Faça cópias de segurança com mais frequência do que num site comum: uma loja com encomendas ao longo de todo o dia precisa de, pelo menos, uma cópia de segurança diária da base de dados, de preferência mais, e de uma cópia fora do servidor (regra 3-2-1, curso de WordPress, lição 8.1).
Desde o WooCommerce 8.2, nas lojas novas, as encomendas ficam em tabelas próprias (HPOS, lição 1.2), como wp_wc_orders. Um plugin de cópias de segurança que inclua apenas os "artigos" ou que escolha as tabelas pelo nome tem de incluir também essas tabelas. Num teste de restauro (curso de WordPress, lição 8.2), verifique se as encomendas estão realmente lá.
Na WebOké, o WebOké Backups faz todas as noites uma cópia de segurança que é guardada durante 30 dias noutro centro de dados (DA 16.1); além disso, pode fazer a sua própria cópia de segurança antes de uma atualização no DirectAdmin ou no Installatron. Noutros fornecedores de alojamento funciona de forma semelhante; pergunte com que frequência e durante quanto tempo.
Funções: quem pode fazer o quê
O WooCommerce acrescenta duas funções ao WordPress (curso de WordPress, lição 3.3):
- Cliente (Customer): um cliente com conta. Só pode ver as suas próprias encomendas e dados. Nunca dê direitos de administração a esta função.
- Gestor de loja (Shop manager): pode gerir produtos, encomendas, clientes, cupões e as definições do WooCommerce, mas não pode instalar plugins nem alterar o tema.
Para colaboradores que embalam encomendas, respondem a perguntas de clientes ou introduzem produtos, Gestor de loja é suficiente. Administrador destina-se apenas a quem trata da parte técnica. Cada colaborador deve ter a sua própria conta, com verificação em dois passos (curso de WordPress, lição 7.3); nada de uma conta partilhada "loja". Um gestor de loja vê todos os dados dos clientes, por isso elimine as contas quando alguém sai.
As chaves de API (lição 2.4) também são uma forma de direitos: dê a uma ligação apenas permissão de leitura se ela não precisar de escrever nada, e elimine as chaves que já não são utilizadas.
O que a sua loja mostra a todos
Os atacantes procuram lojas com uma versão antiga do WooCommerce ou um plugin de pagamento com uma vulnerabilidade conhecida. Por predefinição, o WooCommerce coloca uma linha <meta name="generator" content="WooCommerce 11.2.2"> no código-fonte, e a versão aparece também a seguir às folhas de estilo (?ver=). Ocultar é um pequeno ganho; atualizar é um grande ganho. Uma loja bem atualizada pouco tem de se preocupar com um número de versão visível. Uma loja desatualizada denuncia-se.
O ficheiro xmlrpc.php é uma ligação antiga através da qual as aplicações iniciam sessão no WordPress. É muito utilizado de forma abusiva para adivinhar palavras-passe. Se não utilizar nenhuma aplicação ou serviço que precise dele, feche-o (na WebOké está fechado por predefinição, KB 169). Um xmlrpc.php aberto responde a um pedido normal no browser com "XML-RPC server accepts POST requests only." e o estado 405. Fechado, devolve 403 ou 404.
Resumo
- A base de dados de uma loja muda ao longo de todo o dia: restaurar custa encomendas que já foram pagas.
- Atualizações pequenas rapidamente, atualizações grandes primeiro em staging; tenha atenção à atualização da base de dados, às extensões e aos modelos desatualizados em WooCommerce > Estado.
- Faça uma cópia de segurança imediatamente antes de uma atualização e com mais frequência do que num site comum; verifique se as tabelas de encomendas são incluídas.
- Os colaboradores recebem a função Gestor de loja, não Administrador; cada um com a sua própria conta e verificação em dois passos.
- Ocultar versões ajuda pouco, atualizar ajuda muito; feche o xmlrpc.php se não o utilizar.
Questionário
Exercício
Exercício A6.2: A sua loja online mostra versões? Introduza o endereço da sua loja, a sua versão do WordPress (Painel > Actualizações) e a sua versão do WooCommerce (Plugins). O programa consulta a página inicial e o feed, e o ficheiro /wp-content/plugins/woocommerce/readme.txt (apenas os primeiros 2 kB, a linha "Stable tag"). Procura números de versão do WordPress e do WooCommerce nas linhas generator e a seguir a ?ver= nas folhas de estilo do WooCommerce, e consulta em wordpress.org as versões mais recentes. Verde se as suas versões forem as mais recentes e o que está visível corresponder a isso. Laranja se apenas houver uma pequena atualização pendente, ou se a versão estiver visível mas for atual. Vermelho se estiver uma versão grande atrasado, se a versão visível for diferente da que introduziu (está a funcionar algo diferente do que pensa) ou em caso de dados inválidos.
Exercício A6.2b: O xmlrpc está fechado? Introduza o endereço da sua loja e assinale a caixa se utilizar uma aplicação ou serviço que precise do xmlrpc.php. O programa consulta /xmlrpc.php com um GET normal, sem enviar nada. Verde com 401, 403, 404, 410, um redirecionamento ou uma página HTML normal. Vermelho com 405 e o texto "XML-RPC server accepts POST requests only." sem a caixa assinalada; laranja se indicou que precisa dele. Verifica também se a lista de nomes de utilizador através de /wp-json/wp/v2/users é pública (laranja se houver nomes visíveis).
Um visto verde significa que esta verificação está correta neste momento, não que a sua loja seja segura.
Para saber mais
Os passos num painel aplicam-se à WebOké; noutros fornecedores funciona de forma semelhante.
- Curso gratuito de WordPress 7.2: Manter as atualizações em dia
- Curso gratuito de WordPress 8.1: Cópias de segurança: o quê, onde e com que frequência
- Curso gratuito de WordPress 8.2: Restaurar e testar
- Curso gratuito de WordPress 3.3: Utilizadores e papéis
- Manual DirectAdmin 16.1: Que cópias de segurança existem no WebOké
- WebOké Backups: visualizar, restaurar ou transferir uma cópia de segurança
- Não é possível aceder ao xmlrpc.php do WordPress
- High Performance Order Storage (developer.woocommerce.com, em inglês): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
