A empresa Google lançamento do navegador web . Ao mesmo tempo lançamento estável de um projeto de código aberto , que serve como base para o Chrome. O navegador Chrome pelo uso de logotipos do Google, pela presença de um sistema de envio de notificações em caso de falha, pela possibilidade de carregar o módulo Flash sob demanda, módulos para reprodução de conteúdo de vídeo protegido (DRM), sistema de instalação automática de atualizações e transmissão na busca A próxima versão do Chrome 81 está programada para 17 de março.
:
- Para uma pequena porcentagem de usuários, foi proposta a funcionalidade de agrupamento de abas, permitindo combinar várias abas semelhantes em grupos visualmente distintos. Cada grupo pode ter uma cor e um nome associados. Os usuários que não estão na primeira onda de ativação podem ativar o suporte a agrupamento através da opção "chrome://flags/#tab-groups".
- Adicionada a suporte da função , permitindo criar links para palavras ou frases individuais, sem a necessidade de especificar explícitamente no documento rótulos usando a tag "a name" ou a propriedade "id". A sintaxe desses links está prevista para ser aprovada como um padrão da web, que ainda está em fase de . A máscara para transição (essencialmente executa uma busca com rolagem) é separada do âncoras comuns pelo sinal ":~:". Por exemplo, ao abrir o link "https://opennet.ru/52312/#:~:text=Chromе", a página se moverá para a posição com a primeira menção da palavra "Chromе" e essa palavra será realçada.
- um limite mais rigoroso para o envio de Cookies entre sites, proibindo o tratamento de Cookies de terceiros para solicitações não HTTPS, que são emitidos ao acessar sites diferentes do domínio da página atual. Esses Cookies são usados para rastrear o movimento do usuário entre sites em código de redes de anúncios, widgets de redes sociais e sistemas de web analytics. Lembramos que para gerenciar o envio de Cookies é usado o atributo SameSite indicado no cabeçalho Set-Cookie, que agora, por padrão, é definido como "SameSite=Lax", restringindo o envio de Cookies para subconsultas entre sites, como solicitações de imagens ou carregamento de conteúdo através de iframes de outro site. Os sites podem substituir o modo SameSite padrão, explicitamente definindo o valor SameSite=None ao configurar Cookies. Vale ressaltar que o valor SameSite=None para Cookies só pode ser definido no modo Secure (aplica-se a conexões através de HTTPS). A mudança começará a ser implementada gradualmente. 17 de fevereiro, inicialmente para uma pequena porcentagem de usuários, e depois expandindo gradualmente o alcance.
- proteção contra notificações incômodas relacionadas à confirmação de permissões. Como tal atividade, por exemplo, spam de solicitações para receber notificações push, interrompe o trabalho do usuário e desvia a atenção para ações nos diálogos de confirmação, no Chrome 80, ao invés de um diálogo separado, agora pode ser exibida uma dica na barra de endereços com um aviso sobre o bloqueio da solicitação de permissões, que é então reduzida a um indicador com uma imagem de um sino riscado. Ao clicar no indicador, é possível ativar ou rejeitar a permissão solicitada a qualquer momento. Automaticamente, o novo modo será habilitado de forma seletiva para usuários que anteriormente costumavam bloquear tais solicitações, bem como para sites que registram um alto percentual de rejeições de solicitações. Para habilitar o novo modo para todas as solicitações, uma opção especial foi adicionada nas configurações (chrome://flags/#quiet-notification-prompts).
- saída de janelas pop-ups (chamando o método window.open()) e envio de solicitações síncronas XMLHttpRequest nos manipuladores de eventos de fechamento ou ocultação da página (unload, beforeunload, pagehide e visibilitychange);
- Proposta inicial contra o carregamento de conteúdo multimídia misto (quando em uma página HTTPS são carregados recursos via http://). Em páginas abertas via HTTPS, agora os links "http://" serão automaticamente alterados para "https://" em blocos relacionados à reprodução de arquivos de som e vídeo. Se um recurso de áudio ou vídeo não estiver disponível via https, seu carregamento será bloqueado (pode-se manualmente marcar o bloqueio através do menu acessível pelo símbolo de cadeado na barra de endereços).
Imagens continuarão a ser carregadas sem alterações (a auto-substituição será aplicada no Chrome 81), mas para troca por https ou bloqueio de imagens, os desenvolvedores de sites têm à disposição as propriedades CSP upgrade-insecure-requests e block-all-mixed-content. O bloqueio de conteúdo misto já foi implementado anteriormente para scripts e iframes.
- Iniciou-se um desligamento gradual FTP. Por padrão, o suporte FTP ainda é mantido, mas será um experimento em que para um determinado percentual de usuários o suporte a FTP será desativado (para reativá-lo, será necessário iniciar o navegador com a opção “—enable-ftp”). Lembramos que nas edições anteriores já foi desabilitada a exibição no navegador do conteúdo de recursos carregados pelo protocolo “ftp://” (por exemplo, a exibição de documentos HTML e arquivos README foi interrompida), foi proibido o uso de FTP ao carregar sub-recursos de documentos e o suporte a proxy para FTP foi descontinuado. No entanto, até agora, ainda era possível carregar arquivos por links diretos e exibir o conteúdo de diretórios.
-
a possibilidade de usar imagens SVG vetoriais como ícone do site (favicon). - Nas configurações, foi adicionada a opção de desabilitar seletivamente tipos específicos de dados enviados durante a sincronização entre navegadores.
- Para usuários corporativos administrados centralmente, foi adicionada uma regra , que permite proibir a instalação de complementos externos no dispositivo.
- Implementado uma verificação única de toda a cadeia de propriedades ou chamadas em JavaScript. Por exemplo, ao acessar “db.user.name.length”, anteriormente era necessário verificar sequencialmente a definição de todas as partes compostas, como “if (db && db.user && db.user.name)”. Agora, usando a operação “?.”, é possível acessar o valor “db?.user?.name?.length” sem verificações prévias, e essa chamada não resultará em erro. Em caso de problemas (se algum elemento for processado como null ou undefined), será retornado o valor “undefined”.
- Em JavaScript, foi proposto um novo operador lógico de união “??”, que retorna o operando à direita se o operando à esquerda tiver o valor NULL ou undefined, e vice-versa. Por exemplo, “const foo = bar ?? ‘string padrão’” se bar for igual a null, retornará a string ou o valor de bar caso contrário, incluindo quando bar for 0 e ‘’, diferentemente do operador “||”.
- No modo Origin Trials (recursos experimentais que exigem uma ) foi proposto o API Content Indexing. O Origin Trial inclui a possibilidade de trabalhar com a referida API a partir de aplicativos carregados com localhost ou 127.0.0.1, ou após registro e obtenção de um token especial, que tem um tempo limitado de validade para um site específico. API , fornece metadados sobre o conteúdo que foi anteriormente armazenado em cache por aplicativos da web que funcionam no modo Progressive Web Apps (PWS). O aplicativo pode armazenar diferentes dados no lado do navegador, incluindo imagens, vídeos e artigos, e, quando a conexão de rede é perdida, pode usá-los através da API Cache Storage e IndexedDB. A Content Indexing API permite adicionar, localizar e remover tais recursos. Esse API já é utilizado no navegador para listar páginas e dados multimídia disponíveis para visualização offline.
- Foi estabilizada e agora é distribuída fora dos Trials de Origem a interface de programação , permitindo que o usuário selecione registros do catálogo de endereços e envie certos detalhes sobre eles para o site. Ao fazer a solicitação, é determinado a lista de propriedades que precisam ser obtidas. Essas propriedades são claramente exibidas para o usuário, que decide se deseja ou não enviar essas informações. A API pode ser usada, por exemplo, em um cliente de e-mail na web para selecionar destinatários para um email enviado, em um aplicativo web com função VoIP para iniciar uma chamada para um determinado número ou em uma rede social para procurar amigos já cadastrados. Nesse contexto, novos atributos do Contact Picker foram propostos dentro dos Origin Trials: além das informações previamente disponíveis, como nome completo, email e número de telefone, agora é possível enviar o endereço postal e uma imagem.
- Nos Web Workers , uma nova maneira de carregar módulos ECMAScript, permitindo evitar o uso da função importScripts(), que bloqueia o funcionamento do worker enquanto processa o script importado e o executa no contexto global. A nova abordagem implica a criação de módulos especiais para Web Workers, que suportam os mecanismos de importação padrão do JavaScript e podem ser carregados dinamicamente, sem bloquear a execução do worker. Para carregar os módulos, foi introduzido um novo tipo de recurso no construtor Worker — ‘module’:
const worker = new Worker(‘worker.js’, {
type: ‘module’
}); - , uma funcionalidade interna para processar fluxos comprimidos em JavaScript, que não requer bibliotecas externas. Para compressão e descompressão, foram adicionadas as APIs . A compressão é suportada usando os algoritmos gzip e deflate.
const compressionReadableStream
= inputReadableStream.pipeThrough(new CompressionStream(‘gzip’)); - Foi adicionado o atributo CSS "«, permitindo quebras em qualquer nível de caractere tipográfico, incluindo quebras ao lado de caracteres de pontuação, espaços pré-definidos (<pre>) e no meio de palavras. Também foi adicionado a propriedade CSS «» permitindo quebrar sequências de caracteres não separáveis em qualquer local, se não conseguir encontrar uma posição adequada para a quebra na linha.
- Para o contexto de mídia, processado de forma criptografada, foi implementado suporte ao método , que fornece informações sobre as capacidades do navegador relacionadas à decodificação de conteúdo protegido (por exemplo, o método especificado pode ser usado para escolher scripts de decodificação de alta qualidade ou que economizam energia, levando em consideração a largura de banda disponível e o tamanho da tela).
- Método adicionado , através do qual é possível obter informações sobre o desempenho da reprodução de vídeo para ajustar a taxa de bits, resolução e outros parâmetros de vídeo.
- Na API , que simplifica a integração com sistemas de pagamento existentes, foi adicionada a possibilidade de processar o endereço e informações de contato para um processador de pagamentos externo (o aplicativo de pagamento pode ter informações mais precisas do que o navegador).
- Adicionada a suporte ao cabeçalho HTTP , que permite enviar metadados adicionais sobre o tipo de conteúdo relacionado à requisição (por exemplo, para uma requisição através da tag img, o tipo é 'image', para fontes é 'font', para scripts é 'script', e para estilos é 'style', etc.). Com base no tipo especificado, o servidor pode tomar medidas para se proteger contra certos tipos de ataques (por exemplo, é improvável que um link para um handler de transferência de dinheiro seja definido através de uma tag img, portanto, tais requisições não precisam ser processadas).
- No mecanismo JavaScript V8 do armazenamento de ponteiros na heap. Em vez de armazenar o valor completo de 64 bits, é armazenado apenas os bits inferiores únicos do ponteiro. Essa otimização permitiu reduzir o consumo de memória na heap em 40%, às custas de uma redução de desempenho de 3-8%.


- nas ferramentas para desenvolvedores web:
- Na web console, foi adicionada a possibilidade de reescrever expressões let e class.
- Melhoradas as ferramentas de depuração do WebAssembly. Adicionado suporte ao para depuração passo a passo, definição de pontos de interrupção e análise de rastreamentos de pilha no código-fonte onde o aplicativo WebAssembly é escrito.
- Melhorado o painel para análise de atividade de rede. Adicionada a capacidade de visualizar a cadeia de chamadas de scripts associada à solicitação inicial.
Novas colunas Path e URL foram adicionadas, mostrando o caminho absoluto e a URL completa para cada recurso de rede. A solicitação selecionada é destacada no gráfico de visão geral.
- Na aba Condições de Rede, foi adicionada uma opção para alterar o parâmetro User-Agent.
- Uma nova interface para configurar o painel de auditoria foi proposta.
- Na aba oferece a opção de coletar dados de cobertura para cada função ou para cada bloco de código (estatísticas mais detalhadas, mas requer mais recursos).
- Na web console, foi adicionada a possibilidade de reescrever expressões let e class.
- Ação do manifesto AppCache (tecnologia para operar aplicações web em modo offline) pelo diretório atual do site (se o manifesto foi carregado de www.example.com/foo/bar/, a possibilidade de sobrescrever a URL só será válida dentro de /foo/bar/). No Chrome 82, o suporte ao AppCache está programado para ser completamente removido. A razão dada é a intenção de eliminar um dos vetores para ataques relacionados a scripts entre sites. Em vez de AppCache, é recomendado usar a API .
- suporte à API obsoleta WebVR 1.1, que pode ser substituída pela API , que permite acesso a componentes para criação de realidade virtual e aumentada, unificando o trabalho com diferentes classes de dispositivos, desde headsets de realidade virtual de mesa até soluções baseadas em dispositivos móveis.
- Manipuladores de protocolos, conectados através dos métodos registerProtocolHandler() e unregisterProtocolHandler(), agora só podem funcionar em contextos seguros (quando acessados via HTTPS).
Além das inovações e correções de bugs, na nova versão foram eliminadas . Muitas das vulnerabilidades foram descobertas através de teste automatizado com ferramentas , , , e . Nenhum problema crítico que permita contornar todos os níveis de proteção do navegador e executar código no sistema fora do ambiente sandbox foi identificado. No âmbito do programa de recompensas por vulnerabilidades para esta versão, a Google pagou 37 prêmios totalizando 48 mil dólares (um prêmio de $10,000, três prêmios de $5,000, três prêmios de $3,000, quatro prêmios de $2,000, três prêmios de $1,000 e seis prêmios de $500). O valor de 17 recompensas ainda não foi definido.
Fonte: opennet.ru


