Ficha da câmara · Edição de Setembro de 2026
Melgaço
www.cm-melgaco.pt Medido a 25 de Setembro de 2026
Pontuação global
57,6/100
218.º de 308 câmaras
Pontuação por frente, comparada com as médias
Acessibilidade
Se qualquer pessoa consegue usar o site, incluindo quem vê mal, usa leitor de ecrã ou só teclado.
Zoom não bloqueado
O site deixa ampliar a página?
Quem vê mal amplia a página com dois dedos no telemóvel. Se o site o bloqueia, o texto fica pequeno demais para ser lido.
Regra: Nenhuma página da amostra impede a ampliação (meta viewport sem user-scalable=no nem maximum-scale abaixo de 2). (WCAG 2.1, 1.4.4 (AA))
Língua declarada
A página diz em que língua está escrita?
O que encontrámos
<html dir="ltr" lang="pt-PT" prefix="og: https://ogp.me/ns#" class="html_stretched responsive av-preloader-disabled html_header_top html_logo_left html_main_nav_header html_menu_right html_custom html_header_sticky_disabled html_header_shrinking_disabled html_header_topbar_active html_mobile_menu_tablet html_header_searchicon_disabled html_content_align_center html_header_unstick_top_disabled html
O leitor de ecrã escolhe a pronúncia pela língua declarada. Sem ela, um texto em português pode ser lido com sotaque inglês e tornar-se incompreensível.
Regra: Todas as páginas da amostra declaram uma língua válida no elemento html. (WCAG 2.1, 3.1.1 (A))
Imagens com texto alternativo
As imagens têm uma descrição em texto?
A prova
1 em https://www.cm-melgaco.pt/; 1 em https://www.cm-melgaco.pt/viver/municipio/; 1 em https://www.cm-melgaco.pt/viver/areas-de-atividade/; 1 em https://www.cm-melgaco.pt/viver/servicos/; 1 em https://www.cm-melgaco.pt/viver/noticias/. Ex.: <img width="140" height="58" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20140%2058'%3E%3C/svg%3E" style="width:80px;margin-left:30px;" data-lazy-src="https://www.cm-melgaco.pt/wp-content/uploads/2023/12/i006571.png">
Quem não vê a imagem ouve a descrição. Sem ela, o leitor de ecrã lê o nome do ficheiro, ou nada.
Como corrigir
- Em cada imagem de conteúdo, preencha o campo «texto alternativo» no gestor de conteúdos.
- Imagens puramente decorativas levam alt="" (vazio), para serem ignoradas.
Regra: Nenhuma imagem visível da amostra aparece sem atributo alt e sem outro nome acessível (title, aria-label, aria-labelledby). Imagens marcadas como decorativas não contam. (WCAG 2.1, 1.1.1 (A))
Campos de formulário com nome
Os campos dos formulários têm nome?
Um campo sem rótulo é anunciado apenas como «editar texto». Quem usa leitor de ecrã não sabe o que escrever lá.
Regra: Nenhum campo visível da amostra aparece sem rótulo (label, aria-label, aria-labelledby, title) nem placeholder. (WCAG 2.1, 1.3.1, 3.3.2 e 4.1.2 (A))
Contraste de texto
O texto tem contraste suficiente com o fundo?
A prova
«VER MAIS» 1,98:1 (exige 4,5:1), rgb(255,255,255) sobre rgb(225,178,32), em https://www.cm-melgaco.pt/; «Não aceitar» 2,93:1 (exige 4,5:1), rgb(255,255,255) sobre rgb(0,169,157), em https://www.cm-melgaco.pt/; «Melgaço e a sua História» 1,6:1 (exige 4,5:1), rgb(255,255,255) sobre rgb(240,202,22), em https://www.cm-melgaco.pt/viver/municipio/
Texto claro sobre fundo claro não se lê ao sol, num ecrã fraco, ou com a vista cansada. A norma pede 4,5:1 para texto normal.
Como corrigir
- Escureça a cor do texto (ou clareie o fundo) até chegar a 4,5:1; em letra grande basta 3:1.
- Confirme com um verificador de contraste antes de publicar a nova cor.
Regra: Nenhum texto da amostra ficou abaixo de 4,5:1 (3:1 em letra grande) com a falha confirmada nos pixéis da captura. (WCAG 2.1, 1.4.3 (AA))
Declaração de Acessibilidade
A Declaração de Acessibilidade está ligada da página inicial?
A prova
Tentámos: http://www.cm-melgaco.pt/acessibilidade/ (200); https://www.cm-melgaco.pt/acessibilidade/ (200); https://www.cm-melgaco.pt/declaracao-de-acessibilidade (200); https://www.cm-melgaco.pt/p/acessibilidade (200); https://www.cm-melgaco.pt/pt/acessibilidade (200); https://www.cm-melgaco.pt/acessibilidade-e-usabilidade (200); https://www.cm-melgaco.pt/declaracao-acessibilidade (200); https://www.cm-melgaco.pt/index.php/acessibilidade (200)
Não encontrámos a Declaração: nem numa ligação da página inicial, nem nos endereços habituais, nem no mapa do site, nem nas outras páginas da amostra. Não quer dizer que não exista.
O DL 83/2018 obriga os organismos públicos a publicar e manter actualizada a Declaração, com o estado de conformidade do site. O art. 8.º, n.º 2 pede que fique numa página com o endereço terminado em «/acessibilidade», hiperligada à página de entrada e, sempre que possível, ao rodapé de todas as páginas.
Como corrigir
- Gere a Declaração no modelo oficial em acessibilidade.gov.pt.
- Publique-a numa página do site com o endereço terminado em «/acessibilidade».
- Ligue-a a partir da página inicial e do rodapé de todas as páginas.
Regra: A página inicial tem uma ligação para a Declaração (directa, ou a um salto de uma ligação de acessibilidade ou de informação legal da inicial), e a Declaração segue o modelo do DL 83/2018 (uma página do site ou um PDF). Endereço sem «/acessibilidade», PDF em vez de página ou falta de ligação no rodapé ficam como observação e não baixam a nota. (DL 83/2018, art. 7.º e art. 8.º, n.º 2)
Selo de Usabilidade e Acessibilidade
Tem o Selo de Usabilidade e Acessibilidade em vigor?
A prova
sem registo datado de atribuição
Informativo: não entra na pontuação.
O Selo é atribuído pela ARTE e vale 12 meses. É informativo neste índice: não entra na pontuação.
Como corrigir
- Candidatar-se em selo.usabilidade.gov.pt, depois de corrigidas as falhas automáticas e manuais.
Regra: Selo com data de atribuição pública há menos de 12 meses. Informativo: não entra na pontuação. (ARTE, selo.usabilidade.gov.pt)
RGPD
Se o site respeita a escolha do visitante antes de o seguir, e se explica o que faz com os dados.
Sem cookies de rastreio antes do consentimento
Grava cookies de rastreio antes de o visitante escolher?
A prova
_ga_R73RF4GKC6 (Google Analytics, .cm-melgaco.pt), _ga (Google Analytics, .cm-melgaco.pt)
Sem envio de medição antes do consentimento
Envia dados a serviços de medição antes do consentimento?
A prova
doubleclick.net: envio de medição aos 1,0 s (https://stats.g.doubleclick.net/g/collect)
Carregou recursos de googletagmanager.com sem enviar medição: registado, não conta.
Cada envio de medição transmite o endereço e a página visitada a um terceiro. Sem consentimento, é um tratamento de dados sem base legal clara.
Como corrigir
- Só carregue as etiquetas de medição depois do «Aceitar».
- Vídeos do YouTube: use youtube-nocookie.com ou uma imagem que só carrega o vídeo ao clicar.
Regra: Numa sessão limpa, sem nenhum clique, o browser não enviou dados de medição ou eventos a serviços de analítica, publicidade ou redes sociais (endereços de recolha publicados). Carregar o script sem enviar medição não conta. (Lei 41/2004, art. 5.º; RGPD, art. 6.º)
Recusar ao mesmo nível de aceitar
Recusar é tão fácil como aceitar?
O que encontrámos
Botões no aviso: «Aceitar e continuar», «Não aceitar»
Se aceitar é um clique e recusar exige vários, o consentimento não é livre. O botão de recusa deve estar no primeiro nível, ao lado do de aceitar.
Regra: O aviso de cookies tem um botão de recusa no primeiro nível, ao lado do de aceitar. (Orientações do CEPD 05/2020 sobre consentimento)
Política de privacidade ligada da inicial
A página inicial liga para a política de privacidade?
O que encontrámos
«Política de Privacidade» → http://www.cm-melgaco.pt/politica-de-privacidade/
O munícipe tem direito a saber que dados são tratados, para quê e a quem se dirigir. A política tem de estar ao alcance.
Regra: A página inicial tem uma ligação para a política de privacidade ou de protecção de dados. (RGPD, art. 12.º e 13.º)
Segurança
Se a ligação é protegida e o site segue as defesas básicas que qualquer servidor público devia ter.
HTTPS
O site usa ligação cifrada (HTTPS)?
O que encontrámos
https://www.cm-melgaco.pt/
Sem HTTPS, o que o visitante envia e recebe pode ser lido ou alterado pelo caminho.
Regra: A página inicial serve-se em HTTPS com certificado aceite pelo Chrome. (RGPD, art. 32.º)
http redirecciona para https
Quem escreve http:// é enviado para https://?
O que encontrámos
http://www.cm-melgaco.pt/ → 301 https://www.cm-melgaco.pt/
Muitos visitantes chegam por ligações antigas em http. Se o servidor não os redirecciona, a primeira visita fica desprotegida.
Regra: Um pedido a http:// é redireccionado para https://. (Boas práticas (CNCS))
HSTS
O site obriga o browser a usar sempre HTTPS (HSTS)?
O que encontrámos
valor: max-age=31536000; includeSubDomains; preload
O HSTS diz ao browser para nunca mais tentar a versão insegura, o que fecha a porta a ataques de intercepção.
Regra: A resposta da página inicial traz Strict-Transport-Security com max-age. (RFC 6797)
Recusa TLS 1.0 e 1.1
Recusa as versões antigas do TLS (1.0 e 1.1)?
O que encontrámos
TLS 1.0: recusado; TLS 1.1: recusado; negociado por omissão: TLSv1.3
O TLS 1.0 e 1.1 foram descontinuados em 2021 (RFC 8996) por terem fragilidades conhecidas.
Regra: O servidor recusa ligações em TLS 1.0 e 1.1 (versões descontinuadas). (RFC 8996)
Content-Security-Policy
Declara uma política de segurança de conteúdo (CSP)?
A prova
cabeçalho ausente
A CSP limita de onde podem vir scripts e recursos, e trava muitos ataques de injecção de código.
Como corrigir
- Comece com Content-Security-Policy-Report-Only para ver o que seria bloqueado, e depois passe à política definitiva.
Regra: A página inicial declara uma política de segurança de conteúdo (cabeçalho ou meta). (W3C CSP)
Protecção contra enquadramento
Impede que o site seja embutido noutro site?
O que encontrámos
X-Frame-Options: SAMEORIGIN
Sem esta protecção, outra página pode mostrar o site da câmara dentro de uma moldura e enganar o visitante a clicar onde não quer.
Regra: X-Frame-Options (DENY ou SAMEORIGIN) ou frame-ancestors na CSP. (RFC 7034)
X-Content-Type-Options
Envia o cabeçalho X-Content-Type-Options?
O que encontrámos
valor: nosniff
Impede o browser de adivinhar o tipo de um ficheiro, o que evita que um carregamento inocente seja executado como código.
Regra: Cabeçalho X-Content-Type-Options: nosniff. (Fetch Standard)
Referrer-Policy
Controla o que é enviado a outros sites ao sair (Referrer-Policy)?
O que encontrámos
valor: strict-origin-when-cross-origin
Sem política, o endereço completo da página (com parâmetros de pesquisa ou formulário) pode seguir para sites externos.
Regra: Cabeçalho Referrer-Policy presente (e não unsafe-url). (W3C Referrer Policy)
Sem conteúdo misto
Carrega tudo por HTTPS, sem conteúdo misto?
A prova
img http://www.cm-melgaco.pt/wp-content/uploads/2016/09/melgaco_municipio_logo.png (https://www.cm-melgaco.pt/); img http://www.cm-melgaco.pt/wp-content/uploads/2016/09/melgaco_municipio_logo.png (https://www.cm-melgaco.pt/viver/municipio/); img http://www.cm-melgaco.pt/wp-content/uploads/2016/09/melgaco_municipio_logo.png (https://www.cm-melgaco.pt/viver/areas-de-atividade/)
Um script ou imagem pedido por http numa página https abre uma brecha na protecção e pode ser bloqueado pelo browser.
Como corrigir
- Troque os endereços http:// por https:// nos temas e conteúdos.
- Formulários também devem enviar para https.
Regra: Nenhuma página da amostra pede recursos (imagens, scripts, estilos, iframes) nem envia formulários por http://. (W3C Mixed Content)
Não expõe versões de software
Esconde as versões do software que usa?
A prova
meta generator: WP Rocket 3.18.3; X-Powered-By: PHP/8.3.33 PleskLin
Mostrar a versão exacta do CMS, de plugins ou do servidor ajuda um atacante a escolher a vulnerabilidade certa.
Como corrigir
- Remova o meta generator do tema e dos plugins.
- No servidor, desligue a versão nos cabeçalhos Server e X-Powered-By.
Regra: Nem o meta generator, nem os cabeçalhos Server/X-Powered-By, nem o readme.html do WordPress mostram números de versão. (OWASP WSTG-INFO-02)
Sem bibliotecas JS vulneráveis
As bibliotecas JavaScript estão actualizadas?
O que encontrámos
Detectadas: jquery 3.7.1, underscore 1.13.8
Versões antigas de bibliotecas como o jQuery têm vulnerabilidades públicas (CVE) com correcção disponível há anos.
Regra: Nenhuma biblioteca JavaScript carregada na amostra está numa versão com vulnerabilidade pública (CVE) da nossa lista. (Lista publicada no README)
A amostra e as provas
O que abrimos, e quando
Medido a 25 de Setembro de 2026, num Chrome actual, numa sessão limpa e sem cliques. Estas foram as páginas da amostra:
Para a câmara
Análise gratuita: o que falta para subir na tabela
Nesta edição, Melgaço cumpre 13 dos 21 critérios medidos. A DEMARCA analisa os 8 que ficaram por cumprir e indica o que corrigir primeiro, sem compromisso.




