Mà que revela el missatge "Eines de superposició revelades", que simbolitza l'exposició de les eines de superposició d'accessibilitat.

Descripció de la imatge: Mà que revela el missatge "Eines de superposició revelades", que simbolitza l'exposició de les eines de superposició d'accessibilitat.

Hem interceptat totes les sol·licituds de cinc eines d'accessibilitat. Això és el que fan realment al vostre lloc web.

Hem interceptat totes les sol·licituds de cinc eines d'accessibilitat. Això és el que fan realment al vostre lloc web.

Una auditoria tècnica independent de quatre superposicions d'accessibilitat i una solució només de monitorització: què canvien realment, què amaguen als usuaris amb discapacitat i per què més de 1.000 empreses que utilitzen superposicions van ser demandades només el 2024.

El que vam trobar quan vam mirar a dins

🔴
141 botons de pagament, enllaços de productes i controls de cistella ocults als usuaris cecs
Amazon Pay, Shop Pay, Klarna, les entrades de quantitat del carretó de la compra, els resultats de la cerca: tot invisible als lectors de pantalla. Els usuaris vidents ho veuen tot. Els usuaris cecs obtenen una versió filtrada i reduïda de la mateixa pàgina.
🤖
5.066 descripcions d'imatges generades per IA implementades sense una sola revisió humana
Només 2 de 5.068 textos alternatius van ser aprovats per una persona. La IA va descriure el logotip d'una empresa com "un símbol blau i groc" i el bàner d'un producte com a "text".
⚖️
El 26% de les correccions de superposició fan que el lloc web sigui menys accessible
203 regles de correcció introdueixen noves infraccions de les WCAG mentre intenten corregir les existents, incloent-hi fins a 705 nous errors de nivell A per ocultar elements funcionals.
🕐
El 75% del temps de xarxa d'una capa superposada és de seguiment del comportament, no d'accessibilitat.
58 POST d'anàlisi van consumir 25,5 de 33,9 segons. Una altra superposició va malgastar 38,8 segons en sol·licituds de preflight CORS: pura sobrecàrrega d'enginyeria.
💰
1.023 empreses que utilitzaven superposicions d'accessibilitat van ser demandades el 2024. Un proveïdor va ser multat amb 1 milió de dòlars per la FTC.
El 25% de totes les demandes de l'ADA van citar les superposicions com a barreres, no com a solucions. El 2025, les demandes relacionades amb les superposicions es registren a més de 100 al mes.
🔒
Les superposicions tenen accés d'escriptura complet a la pàgina de pagament: la mateixa superfície que Magecart va explotar.
Hem confirmat les regles de correcció dirigides a #cardNumber, #billingState i botons de pagament. Una CDN superposada compromesa podia robar dades de targetes de tots els llocs web dels clients.

Totes les troballes es basen en el trànsit de producció interceptat: 924 sol·licituds, 579 cossos de resposta complets, en 14 llocs de comerç electrònic en directe, a més d'instantànies DOM desades amb modificacions de superposició incorporades.


Com ho vam fer: La metodologia de recerca

La majoria de les revisions de les superposicions d'accessibilitat es basen en afirmacions de màrqueting, documentació del proveïdor o proves a nivell superficial. Vam adoptar un enfocament fonamentalment diferent: vam interceptar cada byte de dades que fluïa entre el navegador i els servidors de cada eina, vam extreure els fitxers de correcció de JavaScript i les dades de remediació reals i vam analitzar exactament què fa cada eina al DOM en directe dels llocs web de comerç electrònic de producció.

La configuració tècnica

Vam implementar mitmproxy , un proxy HTTPS de codi obert, configurat per capturar els cossos complets de sol·licitud i resposta de tot el trànsit als dominis CDN i API de les eines. Vam instal·lar el certificat CA arrel del proxy al navegador per habilitar la intercepció HTTPS transparent i, a continuació, vam llançar una instància de Chrome dedicada encaminada exclusivament a través del proxy. Vam configurar filtres de domini per capturar només el trànsit als servidors d'eines d'accessibilitat, assegurant-nos que només analitzàvem el que injecten aquestes eines, no el trànsit dels propis llocs web.

A continuació, vam navegar per 14 llocs de comerç electrònic en directe com ho faria un usuari normal: carregant la pàgina d'inici, navegant a les pàgines de llistat de productes, visualitzant les pàgines de detalls del producte, afegint articles al carretó, procedint al pagament, visitant les pàgines del compte i del registre, i interactuant amb modals, carrusels i cerques. Cada sessió de navegació es va capturar com un fitxer d'arxiu HTTP (HAR) amb cossos de resposta complets, el mateix format que els navegadors utilitzen internament, però enriquit amb el contingut real de cada fitxer JavaScript, cada full d'estil CSS, cada configuració JSON i cada resposta API que les eines servien.

Després de la captura, vam escriure scripts d'anàlisi en Python que analitzaven cada cos de resposta, classificaven cada fitxer per eina i funció, extreien cada selector CSS de les definicions de correccions, comptaven cada patró de manipulació DOM en codi JavaScript, identificaven cada instància de contingut ocult a la tecnologia assistiva i assignaven cada correcció a l'àrea de la pàgina que afecta (pagament, cistella, llistat de productes, navegació, etc.).

01Configuració del proxy

mitmproxy intercepta HTTPS amb cossos de resposta complets

02Captura de trànsit

He navegat per 14 llocs web de tots els tipus de pàgina

03Extracció de dades

He extret tots els fitxers JS, CSS i JSON de les respostes.

04Anàlisi de codi

Regles de correcció analitzades, selectors, modificacions ARIA

05Classificació

Categoritzat per àrea de pàgina, nivell de risc i potencial de trencament

El proxy va capturar 924 sol·licituds HTTP amb 579 cossos de resposta complets en tres sessions de captura, incloent-hi tots els scripts de correcció per lloc, tots els JSON de correcció, tots els fitxers de configuració i totes les càrregues analítiques. També vam desar instantànies DOM completes de pàgines amb modificacions de superposició aplicades, cosa que ens va permetre inspeccionar els valors exactes d'aria-etiqueta i els atributs de dades del proveïdor injectats en temps d'execució. A continuació, vam escriure scripts d'anàlisi automatitzats per analitzar el JavaScript, comptar tots els patrons de modificació DOM, extreure tots els selectors CSS, classificar totes les correccions per àrea de la pàgina i identificar totes les instàncias de contingut que s'oculten a la tecnologia assistiva.

924
Sol·licituds HTTP capturades
579
Cossos de resposta extrets
14
Llocs de comerç electrònic en directe
3
Sessions de captura independents

Què hem analitzat

Tipus d'einaFitxers JSCSSJSON/DadesTotal analitzatLlocs web
Superposició A20718.633 KB5 (moda, xocolata, equipatge, bosses de mà)
Superposició B104306.739 KB3 (telecomunicacions, agència web, banca)
Superposició C2054.713 KB3 (moda, rellotges, rebosteria)
Superposició D11103.320 KB3 (joguines, begudes, articles de papereria)
Eina de monitorització23042.334 KB8 projectes

Els llocs web abastaven els principals minoristes de moda, marques de xocolata de luxe, fabricants de maletes, botigues de bosses de mà de disseny, empreses de joguines, un proveïdor de telecomunicacions, un banc nacional, marques de begudes, papereria, rellotges i confiteria, cobrint tant els mercats de la UE com dels EUA.

Una observació crítica: no hi ha cap delimitació d'abast a nivell de pàgina en cap superposició d'accessibilitat.

Una de les troballes més sorprenents va sorgir abans que analitzéssim les regles de correcció: cada capa d'accessibilitat carrega tot el seu conjunt de correccions a cada pàgina , independentment del tipus de pàgina. Les correccions específiques del pagament s'activen a la pàgina d'inici. Les regles de quantitat del carretó s'executen a la pàgina "Sobre nosaltres". Les correccions de les tessel·les del producte s'executen al formulari d'inici de sessió.

EinaQuè es carrega a cada pàginaÀmbit de pàgina?Execució malgastada
Superposició ATotes les 383 regles de correcció (el lloc web més gran)NoCorreccions de pagament, cistella i productes a la pàgina d'inici, preguntes freqüents i contacte
Superposició BJSON de correcció completa d'1,25 MBNo4.974 textos alternatius d'imatges + 2.000 entrades de PDF carregades a cada pàgina
Superposició CPaquet monolític de 794 KBNoMateix codi, mateixos observadors, mateixos selectors genèrics: a cada pàgina
Superposició DConfiguració completa + motor de 649 KBNoTots els selectors s'avaluen fins i tot si els elements de destinació no existeixen en aquesta pàgina.
MonitoritzacióScript de 4,2 KB + 1 balisaN/A – sense correccionsCap: l'escaneig només s'executa sota demanda, no a tots els visitants

Això significa que al lloc web del proveïdor de telecomunicacions, cada visitant de cada pàgina descarrega un fitxer JSON d'1,25 MB que conté 4.974 descripcions d'imatges i 2.000 entrades de correcció en PDF, fins i tot en pàgines sense imatges. Al minorista de bosses de mà de disseny, s'executen 383 regles de correcció DOM a cada càrrega de pàgina, intentant que coincideixin selectors que només existeixen en tipus de pàgina específics. Quan un selector específic del pagament com ara #targetaNúmero no coincideix a la pàgina d'inici, el motor de correcció de la superposició encara dedica cicles de CPU a avaluar-lo; multiplicat per centenars de regles, això crea una pèrdua de rendiment mesurable a cada visualització de pàgina.

La superposició A només escaneja el 4,5% de les sessions

Enterrat a les dades analítiques POST de la capa superior A, vam descobrir un camp que revelava la seva taxa de mostreig d'escaneig real:

// From intercepted analytics POST to Overlay A’s report endpoint: { “phase”: “after”, “scanId”: “6ede145b-b78e-…”, “samplingRate”: 0.045, “scannerVersion”: “11.0.28”, “evaluationCount”: 464684, “scanTimingReport”: { “wallDuration”: 858.7 } }

Una taxa de mostreig de 0,045 significa que només el 4,5% de les sessions de visitants desencadenen una anàlisi de compliment en aquest minorista de moda. En un altre lloc, una marca de xocolata de luxe, la taxa va ser encara més baixa: només l'1,7% . És possible que el proveïdor de la capa superior realitzi una anàlisi inicial més completa durant la incorporació o la configuració i, a continuació, redueixi la taxa de mostreig per a la supervisió contínua. Tanmateix, la implicació per a les operacions diàries continua sent significativa.

El codi del paquet d'inici de la superposició d'accessibilitat confirma tres nivells operatius: ReleaseVersionReport (escaneig complet + informe: el percentatge mostrejat), ShadowVersionReport (escaneig d'ombra, sense acció directa a l'usuari) i RunReleaseFixesNoReport (aplica totes les regles de correcció però no executa cap escaneig). Això significa que durant el funcionament normal, la gran majoria dels visitants reben modificacions del DOM que no es validen durant la seva sessió.

El risc pràctic és aquest: si un desplegament de lloc web canvia l'estructura del DOM i incompleix una o més regles de correcció, la baixa taxa de mostreig contínua significa que la regressió pot passar desapercebuda durant un període prolongat. Amb només un 1,7–4,5% de les sessions escanejades, una correcció incorrecta podria afectar milers de visitants abans que la següent sessió mostrejada s'activi a la pàgina afectada i marqui el problema. Durant aquesta finestra, tots els visitants reben correccions obsoletes o mal dirigides, i ni l'operador del lloc web ni el proveïdor de la capa superior poden ser conscients del problema.


Les troballes: Correcció de regles i modificacions del DOM

1,058
Regles de correcció del DOM
(Superposició A, 5 llocs)
9,070
Entrades de correcció
(Superposició B, 3 llocs)
0
Modificacions del DOM
(Eina de monitorització)

Superposició A: Fitxers de correcció de JavaScript per lloc web

Aquesta capa superposada manté un fitxer de correcció de JavaScript separat per a cada lloc web de client, que conté regles que tenen com a objectiu selectors CSS específics. Als cinc llocs web que hem analitzat, hem trobat:

Tipus de llocCorregir reglesamagaDelATrol=presència/capalt=""Sempre activat
Minorista de moda59121342
marca de xocolata4523445
Fabricant d'equipatge1766277176
Bosses de mà de dissenyador (Regne Unit)360573015358
Bosses de mà de dissenyador (UE)383645434381
Total1,023141115631,002
🔴 141 elements ocults als lectors de pantalla

Aquest és un dels patrons més perjudicials en les eines de superposició d'accessibilitat: el hideFromAT() La funció elimina elements completament de l'arbre d'accessibilitat. L'element roman visible a la pantalla, però per a una persona cega que utilitzi un lector de pantalla, no existeixHem trobat botons de pagament, controls de cistella de la compra, enllaços de productes, resultats de cerca, valoracions per estrelles, rutes de navegació i formularis de pagament ocults.

També vam trobar 7 instàncies on la cadena literal "true" es va injectar com a aria-label – un error de codi on es passava un valor booleà en comptes de text descriptiu. Els lectors de pantalla anuncien "botó, cert", sense cap sentit. En un altre lloc, "Cerca" estava mal escrit com a "Cerca" en una etiqueta injectada.

Superposició B: text alternatiu generat per IA a escala

Aquesta capa superposada descarrega fitxers JSON de correcció massiva que contenen descripcions d'imatges generades per IA. En tres llocs:

5,068
Textos alternatius generats per IA
2
Aprovat per un humà
0,04%
241
Descripcions vagues
(«text», «fitxer», «ciutat»)

Exemples reals de les dades de remediació:

// Text alt real del JSON de correcció: alt="text" ← per a una imatge de bàner promocional alt="fitxer" ← per a una captura de pantalla de la pàgina d'inici alt="ciutat" ← per a una imatge principal d'una capital alt="un rètol blau i groc" ← per al logotip d'una empresa alt="Un simple rectangle negre" ← per a una icona de navegació

323 descripcions superaven els 125 caràcters, cosa que provocava una verbositat del lector de pantalla on el lector s'aturava durant 10-15 segons per imatge. 156 començava redundantment amb "imatge de", un antipatró WCAG, ja que els lectors de pantalla ja anuncien el tipus d'element.

Eina de monitorització: zero modificacions – verificat al codi font

🟢 Verificació del codi font

Vam extreure l'script complet de 4,2 KB de l'eina de monitorització i vam analitzar cada funció. Resultat: zero aria-hidden, zero innerHTML, zero MutationObserver, zero modificacions de rol, zero intercepció d'esdeveniments de teclat. Només envia l'URL de la pàgina i el tipus de dispositiu: sense ID d'usuari, sense tokens de sessió, sense empremtes digitals.


Què significa "Amaga't d'AT" per a usuaris reals

Quan una superposició amaga un element de la tecnologia assistiva, l'element roman visible a la pantalla però esdevé completament invisible per als lectors de pantalla . Hem classificat cada element ocult per l'àrea de la pàgina que afecta:

Elements ocults als lectors de pantalla: per àrea de pàgina (superposició A, 5 llocs)
Imatges i contingut multimèdia
18 elements ocults
Pàgines de productes
15 elements ocults
Navegació
12 elements ocults
Altres
10 elements amagats
Finalitzar la compra
8 elements ocults
Carrusels
8 elements ocults
Modals
7 elements ocults
Carro
4 elements ocults
Peu de pàgina
2 elements ocults

Dades de fitxers de correcció active.js per lloc reals extretes mitjançant mitmproxy. Cada recompte representa un selector CSS únic al qual s'adreça hideFromAT().

A la pàgina de pagament d'una botiga de luxe, els elements ocults als lectors de pantalla incloïen:

# Mètodes de pagament ocults als usuaris cecs: .amazon-pay-onetime-buttonOCULT #shop-pay-button-container buttonOCULT .checkout-form-area .payment-skeletonOCULT (×2) .express-checkout-dividerOCULT # Descobriment de productes ocult als usuaris cecs: #product-search-results > aOCULT .product-info .item-image aOCULT .ratings-container svgOCULT

Així és com les eines de superposició d'accessibilitat creen una experiència de compra de dos nivells : els usuaris vidents veuen totes les opcions de pagament i poden triar entre targeta de crèdit, PayPal, Amazon Pay, Shop Pay i Klarna. Els usuaris cecs només poden trobar els mètodes de pagament que la superposició no ha amagat. En una botiga de moda, el botó d'entrada de la quantitat al carretó i el botó d'actualització estaven ocults: un usuari cec podia afegir articles però no podia canviar les quantitats.

Això planteja una pregunta fonamental: una capa que amaga els botons de pagament als usuaris cecs fa que el lloc web sigui més accessible o menys accessible?


Impacte en el rendiment

Temps de xarxa acumulat: totes les pàgines capturades
Eina de monitorització
7,3 segons
Superposició C
4,0 segons
Superposició D
10,4 segons
Superposició A
33,9 segons
Superposició B
83,7 segons
🔴 Superposició B: 83 vols previs CORS = 38,8 segons perduts

Cada crida a l'API de text alternatiu d'IA activa una verificació prèvia de CORS, duplicant el nombre de sol·licituds. El 46% del temps total de xarxa d'aquesta superposició és purament sobrecàrrega de protocol.

🟡 Superposició A: 75% del temps dedicat a l'analítica

58 POST de seguiment al punt final d'anàlisi del proveïdor van consumir 25,5 segons; tres quartes parts del temps total de la superposició van ser de vigilància del comportament, no d'accessibilitat.

On va cada segon: temps per domini del servidor
Propòsit del dominiEinaSol·licitudsTempsQuè fa
API de text alternatiu d'IASuperposició B13543.1sGeneració de descripcions d'imatges + verificacions prèvies de CORS
API d'enllaços/ajustamentsSuperposició B9835.8sComprovació d'enllaços trencats, configuració, trucades de contribució
Punt final d'anàlisiSuperposició A6025.5sPOST de seguiment del comportament, no d'accessibilitat
CDN de widgetsSuperposició D11110.2sWidget JS, CSS, més de 20 fitxers d'icones SVG
CDN de scriptsSuperposició A1536.9sTots els paquets JS, escàner, correccions per lloc
balisa mètricaMonitorització293.3sPOST de visita a una pàgina petita (només URL + tipus de dispositiu)

Què passa després del desplegament d'un lloc web

Potser el risc més insidiós de les eines de superposició només es fa visible amb el temps: les correccions es degraden silenciosament . A diferència d'un error de JavaScript que es bloqueja visiblement o d'un disseny trencat que algú nota, una correcció de superposició obsoleta no produeix cap error, cap alerta ni cap canvi visual. Simplement deixa de funcionar i la barrera d'accessibilitat que estava emmascarant reapareix sense que ningú ho sàpiga.

Per entendre això, tingueu en compte com cada tipus de superposició s'acobla a l'estructura DOM del vostre lloc web.

Correccions basades en selectors: un rellotge que fa tic-tac

La capa A, com la majoria de solucions de capa d'accessibilitat, manté fitxers de correcció de JavaScript per lloc que contenen regles com aquesta (reconstruïdes a partir del codi capturat real):

// Real fix rule from a fashion retailer’s active.js: defineFix({ ruleName: “Button_Name_WeakName”, selector: “.js-recommendation_carousel button.slick-prev.slick-arrow”, fix: (element) => element.attr(“aria-label”, “Previous slide”), runMode: “always” })

Aquesta regla té com a objectiu el botó de fletxa anterior d'un carrusel de Slick mitjançant tres classes CSS: .js-recommendation_carousel, .slick-prev, i .slick-arrowTotes les parts d'aquest selector són fràgils. Si l'equip del lloc web canvia el nom de la classe del contenidor del carrusel, canvia de Slick a Splide o Swiper, o simplement actualitza la biblioteca Slick a una versió que canvia la convenció de nomenament de les classes, el selector no coincideix amb res. El botó perd l'etiqueta "Diapositiva anterior". Els usuaris del lector de pantalla ja no el poden identificar.

En els cinc llocs que vam analitzar per a la Superposició A, vam trobar El 98% de tots els selectors contenen noms de classe específics del marc de treball – classes amb prefix .js-, .b-, .chakra-, .splide__, o resums CSS-in-JS com ara .css-acuo7nAquests no són identificadors semàntics estables, sinó detalls d'implementació que canvien amb cada actualització del marc de treball, refactorització de components o modificació del sistema de compilació.

En una botiga de bosses de mà de disseny, vam trobar selectors dirigits a components de la interfície d'usuari de Chakra. La interfície d'usuari de Chakra publica canvis importants en les versions principals: els noms de les classes, l'estructura dels components i els patrons ARIA evolucionen. Quan aquest lloc actualitza Chakra, potencialment centenars de regles de correcció de superposició es trencaran silenciosament. El proveïdor de la superposició ha d'auditar manualment la nova estructura DOM, reescriure tots els selectors afectats i implementar fitxers de correcció actualitzats. Durant l'interval entre la implementació del lloc i l'actualització del proveïdor de la superposició, el lloc funciona amb correccions obsoletes: algunes no fan res, altres potencialment s'apliquen als elements incorrectes.

Correccions basades en URL: Encara més fràgil

La correcció de la superposició B enllaça amb la clau JSON de cada entrada de text alternatiu a l'URL exacta de la imatge font. Hem trobat entrades com ara:

// From the actual consolidated remediation JSON (1.17 MB): { “src”: “https://example.com/web/files/devices/13555/images/thumb_86x86_Product.png”, “alt”: “A gaming console standing vertically next to its controller”, “approved”: false, “decorative”: false }

Fixeu-vos en la fragilitat: l'URL conté un ID de dispositiu (13555), una dimensió de miniatura (86x86) i un nom de fitxer que inclogui el nom del producte. Qualsevol d'aquests pot canviar independentment. Si el CMS regenera miniatures amb una mida diferent, el thumb_86x86 part de l'URL canvia i l'entrada ja no coincideix. Si l'equip del producte penja una foto nova amb un nom de fitxer diferent, l'entrada queda òrfena. Si el lloc migra els seus continguts multimèdia a una CDN amb un domini diferent, totes les entrades del JSON d'1,17 MB es converteixen en un pes mort i totes les imatges del lloc perden el seu text alternatiu simultàniament.

El pitjor escenari és un error de coincidència parcial: algunes imatges mantenen les seves URL antigues (i reben text alternatiu), mentre que les imatges noves o actualitzades no coincideixen amb cap entrada (i no reben res). El resultat és una experiència inconsistent on algunes imatges es descriuen i d'altres s'ometen silenciosament, cosa molt més confusa per a un usuari de lector de pantalla que una absència consistent de text alternatiu.

Correccions d'abast global: el problema de la cascada

L'enfocament de Overlay C: adjuntar un MutationObserver a tot el document i aplicar correccions genèriques a tots els elements de certs tipus (a, button, input, img, h1) – crea un patró de trencament diferent però igualment perillós. En lloc de fallar silenciosament quan els selectors es tornen obsolets, aquesta superposició lluita activament amb el nou codi.

Imaginem un escenari comú: l'equip del lloc web implementa un nou component de diàleg modal accessible que implementa correctament la captura de focus, l'escapada per tancar i els atributs ARIA. El MutationObserver de la superposició detecta els nous elements DOM, els avalua en funció de les seves regles genèriques i, en trobar elements que coincideixin amb els seus patrons, aplica la seva pròpia gestió del focus, controladors de teclat i atributs ARIA a sobre de la implementació correcta existent del component. El resultat és un focus doblement atrapat, controladors de teclat duplicats i atributs ARIA contradictoris. El modal que funcionava perfectament abans que es carregués la superposició ara es comporta de manera erràtica.

Això no és una preocupació teòrica. Les biblioteques de components del Framework com Radix UI, Headless UI i Chakra UI inverteixen un esforç d'enginyeria significatiu en la correcta implementació d'ARIA. Una capa superior que aplica de manera general els seus propis atributs ARIA a tots button i a és probable que els elements entrin en conflicte amb aquestes implementacions ben provades, fent que els components siguin correctament accessibles menys accessible.

L'eina de monitorització: Res a trencar

L'eina de monitorització que hem analitzat no té correccions basades en selectors, ni entrades amb clau d'URL, ni MutationObserver ni segmentació d'elements genèrics. Quan el lloc web implementa codi nou, la següent exploració de l'eina de monitorització avalua automàticament el nou DOM en relació amb el conjunt de regles estandarditzades d'axe-core i informa de qualsevol nova infracció, sense modificar res. Els resultats de l'exploració apareixen al tauler de control de l'eina amb els nivells de gravetat, el recompte d'elements afectats i els identificadors de regles WCAG estandarditzades. Els desenvolupadors revisen les troballes i implementen correccions a la seva pròpia base de codi, on les correccions passen per la revisió de codi, les proves automatitzades, la validació per proves i la implementació controlada.

Aquest procés és inherentment resistent al canvi: l'eina escaneja qualsevol DOM existent en el moment de l'escaneig, informa dels problemes que troba i comença de nou en el següent escaneig. No hi ha cap deute tècnic acumulat de definicions de correccions, ni selectors obsolets, ni entrades de text alternatiu orfes, ni possibilitat d'aplicar la correcció incorrecta a l'element incorrecte.


Què es trenca quan es torna a implementar

Cada correcció de superposició d'accessibilitat està acoblada a l'estructura DOM actual del lloc. Vam descobrir que El 98% dels selectors d'una superposició tenen com a objectiu noms de classe específics del marc de treball. – classes com .chakra-, .splide__, .js-, .b-, i hashes CSS-in-JS com ara .css-acuo7n que canvien en cada construcció.

Quan el lloc…SuperposicionsEina de monitorització
Canvia els noms de les classes CSSTotes les correccions basades en selectors no funcionenNo afectat
Actualitza la biblioteca del carruselTotes les correccions del carrusel no funcionenNo afectat
Redissenya el procés de compra68 solucions de pagament en riscNo afectat
Actualitza les imatges del producteEntrades de text alternatiu orfesNo afectat
Migra el CMSTotes les definicions de correcció estan obsoletesNo afectat
Actualitzacions React/Vue/AngularCanvi de hashes de CSS-in-JSNo afectat

L'eina de monitorització té "Sense afectar" a cada fila perquè no té cap correcció basada en selectors . No hi ha res que esdevingui obsolet, res que apunti a l'element equivocat, res que es trenqui.


RGPD, privadesa i el problema del consentiment

La nostra anàlisi ha confirmat que tres de les quatre capes d'accessibilitat envien dades a servidors externs abans que es pugui interactuar amb qualsevol bàner de consentiment:

EinaSeguiment d'usuarisEmmagatzematgeEmpremtes dactilarsDestinació de dades
Superposició AID de sessió + ID de càrrega de pàginaservidor dels EUA
Superposició BUUID persistent a totes les pàginesIsrael/EUA
Superposició CANÀLISI DEL COMPORTAMENT DE L'USUARIlocalStorage (3 claus)agent_usuari + màxims_punts_tocalsIsrael
Superposició DNo observatlocalStorage (16 ref.)16 àrbitres de navegacióAlemanya (UE)
MonitoritzacióCap1 indicador de depuracióCapBulgària (UE)

Segons la sentència Planet49 del TJUE, el seguiment no essencial requereix un consentiment previ. Dues capes activen identificadors persistents a la primera sol·licitud de xarxa, abans que es pugui activar qualsevol mecanisme de consentiment. Per als llocs web orientats a la UE, això és un incompliment automàtic del RGPD.


El panorama legal

1,023
Empreses que utilitzen superposicions
demandat per infraccions de l'ADA el 2024
$1M
Multa de la FTC contra un proveïdor de capes superposades
per tergiversar les capacitats de la IA
~5,000
Total de demandes ADA projectades
per al 2025 (+20% interanual)

L'abril de 2025, la Comissió Federal de Comerç dels Estats Units va finalitzar un acord d'1 milió de dòlars contra un dels proveïdors de superposició d'accessibilitat del nostre estudi per tergiversar que la seva eina basada en IA podia fer que qualsevol lloc web complís amb les WCAG. La FTC va determinar que l'eina no feia accessibles els components bàsics del lloc web (menús, encapçalaments, taules, imatges i enregistraments) . En un exemple citat, una foto de filet mignon va rebre la descripció generada per IA "Pa integral en un plat de ceràmica blanca".

Segons les dades de seguiment del sector, el 25% de totes les demandes d'accessibilitat digital del 2024 citaven explícitament els widgets superposats com a barreres, no com a solucions. Durant la primera meitat del 2025, les demandes contra empreses que utilitzen la superposició van continuar superant les 100 al mes. Dos dels proveïdors de superposició del nostre estudi han estat directament involucrats en litigis: un de cada tres casos separats de patents/secrets comercials, i un altre s'enfronta a una demanda col·lectiva d'un client de petites empreses que va ser demandat tot i utilitzar la superposició.

L'eina de monitorització del nostre estudi no té antecedents de litigis relacionats amb fallades d'accessibilitat, una conseqüència lògica de la seva arquitectura: com que mai modifica el DOM, no pot introduir barreres d'accessibilitat.


Dins del codi: Què modifiquen realment les superposicions

Per entendre l'escala de la manipulació del DOM, vam comptar tots els patrons de modificació del JavaScript de cada eina. Les diferències són importants:

Patró de codiMonitoritzacióSuperposició CSuperposició DSuperposició ASuperposició B
setAttribute1227216Per lloc webVia motor
aria-hidden02147141 trucades69 decoratius
aria-label012849Per lloc web5.068 IA
role0822115N/A
MutationObserver02 (tot el document)9En el motorEn el motor
localStorage1 depuració1416
navigator empremta digital0916
keydown/keyup047En el motorPer lloc webajudant de navegació

La capa C mereix una atenció especial. El seu paquet monolític de 794 KB adjunta un MutationObserver a document.documentElement amb la configuració {subtree: true, childList: true, attributes: true, attributeOldValue: true}Això vol dir cada canvi de DOM a tota la pàgina – ja sigui des de la reconciliació DOM virtual de React, un script de proves A/B, un widget de xat o el propi JavaScript del lloc web – activa l'observador de la superposició, que després reavalua i potencialment torna a aplicar les seves correccions. Després d'una redistribució del lloc web, això crea una cascada d'intents de recorrecció en elements que ja poden ser accessibles correctament, i que poden sobreescriure els atributs ARIA correctes per uns d'incorrectes.

Hem confirmat que Overlay C envia USER-BEHAVIOR-ANALYTICS Sol·licituds POST al seu propi receptor de registre, amb càrregues útils que contenen el domini del lloc, la versió del widget, l'idioma de l'usuari i els esdeveniments d'interacció. Combinat amb localStorage persistència i empremta digital del dispositiu mitjançant navigator.userAgent i navigator.maxTouchPoints, això representa una operació de processament de dades que la majoria dels operadors de llocs web desconeixen que s'està produint.

El problema de remediació de JSON

La superposició B descarrega un fitxer JSON massiu (fins a 1,17 MB per a un lloc de telecomunicacions) que conté totes les definicions de correccions. En un lloc, vam observar que s'obtenia quatre vegades diferents en una sola sessió de navegació : 4,7 MB d'ample de banda per a un fitxer que s'hauria d'haver desat a la memòria cau. El JSON conté 11 categories, però la gran majoria són descripcions d'imatges generades per IA: 4.974 de 6.975 entrades per a un lloc. Cadascuna està vinculada a una URL d'imatge específica: quan el CMS canvia el nom d'un fitxer, canvia les dimensions de la miniatura o migra dominis CDN, les entrades deixen de coincidir silenciosament. Les imatges de reemplaçament no reben cap text alternatiu, cosa que fa que la pàgina sigui menys accessible que abans d'instal·lar la superposició.

Aquesta superposició també desplega mòduls d'execució que reescriuen activament la pàgina: un motor de remediació de 110 KB, un auxiliar de menú de navegació de 23 KB que reestructura el maneig del teclat del menú, un pegat de carrusel de 5,8 KB i un escàner del costat del client de 53 KB que utilitza lògica pròpia en lloc del motor axe-core estàndard de la indústria, cosa que significa que les seves troballes no es poden verificar de manera independent.

La capa més transparent, encara arriscada

La capa D tenia l'arquitectura més transparent: fitxers de configuració JSON llegibles per humans amb interruptors d'activació/desactivació explícits. Opcions com ara addAriaHidden, overwriteAlt, i adjustMetaViewport es van configurar explícitament per a false. Tanmateix, el motor subjacent (649 KB) conté 216 setAttribute trucades, 47 aria-hidden referències, 282 addEventListener registres i 9 MutationObserver instàncies. El motor admet mutacions DOM agressives fins i tot si la configuració actual és conservadora; un canvi de configuració del proveïdor podria activar funcions de risc sense el coneixement de l'operador del lloc.

Hem trobat selectors per lloc que contenien sufixos hash generats per JavaScript com ara button.topHeader__infoButton.js-exclusions85ada2b86bb632424e3ad77c14 que canvien en cada compilació, i selectors d'URL de xarxes socials que es tornen obsolets quan el lloc actualitza els seus enllaços de Facebook o Instagram.

La Llei Europea d'Accessibilitat: Per què les superposicions no satisfaran la Llei Europea d'Accessibilitat

A partir del 28 de juny de 2025, la Llei Europea d'Accessibilitat (EAA) exigeix ​​que els productes i serveis digitals venuts a la UE compleixin els estàndards d'accessibilitat d'acord amb la norma EN 301 549, que fa referència a la WCAG 2.1 AA. A diferència de l'ADA, que s'aplica principalment a través de demandes privades, l'EAA l'apliquen les autoritats nacionals de vigilància del mercat, amb la facultat d'imposar multes, ordenar mesures correctores i retirar del mercat els productes no conformes.

Rebuig oficial d'Alemanya a les eines de superposició

Alemanya ha adoptat la posició reguladora més clara de qualsevol país sobre les eines de superposició d'accessibilitat. El BFIT-Bund (Überwachungsstelle des Bundes für Barrierefreiheit von Informationstechnik), l'organisme federal de supervisió de l'accessibilitat de les tecnologies de la informació d'Alemanya, juntament amb tots els organismes de supervisió a nivell estatal, van emetre una avaluació conjunta rebutjant explícitament les eines de superposició per al compliment de les normes d'accessibilitat:

Avaluació conjunta oficial BFIT-Bund

«Actualment, les eines de superposició no permeten que un lloc web amb barreres sigui completament accessible. Sovint passa que l'ús d'aquestes eines crea barreres addicionals al lloc web que no haurien existit sense l'eina.»

– Gemeinsame Einschätzung der Überwachungsstellen des Bundes und der Länder für die Barrierefreiheit von Informationstechnik zur Verwendung von Overlay-Tools

El 12 de març de 2025 , el Comitè per a la Tecnologia de la Informació Accessible (Ausschuss für barrierefreie Informationstechnik, establert en virtut de l'article 5 BITV 2.0) va reafirmar aquesta posició en la seva sessió, afirmant amb preocupació que els organismes públics continuen intentant complir les seves obligacions d'accessibilitat mitjançant la integració d'eines de superposició. El comitè va concloure que "una representació accessible temporal d'un lloc web mitjançant programari, possiblement només després que l'usuari configure els paràmetres, durant la seva visita no compleix els requisits de les disposicions legals aplicables".

El comitè va advertir explícitament que els organismes públics que utilitzen eines de superposició corren el risc de fer que els seus llocs web siguin menys accessibles , no més, sinó que creïn un empitjorament de l'accessibilitat ("Verschlechterung der Barrierefreiheit"). Això reflecteix directament la nostra conclusió tècnica que el 26% de les regles de correcció de superposició introdueixen noves infraccions de les WCAG.

Segell de prova BIK: denegat per a llocs web que utilitzen superposicions

La xarxa de proves BIK d'Alemanya (els organismes acreditats que avaluen els llocs web segons BITV 2.0, EN 301 549 i WCAG 2.1 AA) ha pres una mesura operativa: els llocs web que utilitzen eines de superposició no poden rebre el segell de prova BIK . Els organismes de proves van declarar que no poden fer una avaluació de conformitat fiable quan hi ha una superposició, perquè la superposició modifica el DOM en temps d'execució de manera que els resultats de la prova no són fiables. El segell BIK s'utilitza àmpliament a tota Alemanya com a prova de compliment de BITV 2.0, i ara no està disponible per a cap lloc web que utilitzi una superposició.

Això no és una preocupació política teòrica. Significa que un lloc web de comerç electrònic alemany que utilitzi qualsevol de les quatre capes que hem provat no pot obtenir la certificació de compliment estàndard que s'utilitza a tot el mercat alemany.

Confirmació a nivell europeu

Aquesta posició reguladora s'estén més enllà d'Alemanya. El Fòrum Europeu de la Discapacitat i l'Associació Internacional de Professionals de l'Accessibilitat van emetre una declaració conjunta el 2023 advertint que les superposicions d'accessibilitat no fan que els llocs web siguin accessibles ni compleixin la legislació europea sobre accessibilitat, inclosa la Llei Europea d'Accessibilitat. La Comissió Europea també ha comentat les afirmacions de conformitat de les superposicions, concloent que les superposicions no poden garantir el compliment de les normes aplicables.

Segons la BFSG (Barrierefreiheitsstärkungsgesetz) d'Alemanya, la transposició alemanya de la Llei d'Aplicacions Econòmiques i Empresarials (EAA), en vigor des del 28 de juny de 2025, les autoritats de vigilància del mercat poden imposar multes de 10.000 a 100.000 euros per infracció . L'avaluació del BFIT-Bund i la negativa de la xarxa de proves BIK a certificar llocs web que utilitzen eines de superposició signifiquen que les eines de superposició no proporcionen cap cobertura reguladora a Alemanya i poden augmentar activament el risc de mesures coercitives.

Dates clau de l'EAA

28 de juny de 2025: Comença l'aplicació de la Llei d'Accessibilitat Europees (EAA) a tots els estats membres de la UE. Els productes i serveis han de complir els requisits d'accessibilitat de la norma EN 301 549.

28 de juny de 2030: Finalització del període de transició per als serveis que ja tenien contracte abans del juny de 2025. Després d'aquesta data, tots els serveis digitals han de complir la normativa independentment de la data del contracte.

Les empreses que depenen de superposicions per al compliment de l'ADA no haurien de suposar que el mateix enfocament satisfarà l'EAA. Els reguladors europeus avaluen l'accessibilitat real del producte, no la presència d'un widget de tercers.

Risc de seguretat i cadena de subministrament

Cada eina de superposició funciona injectant JavaScript de tercers a l'abast global de les vostres pàgines de producció. Aquest JavaScript s'executa amb els mateixos privilegis que el vostre propi codi: pot llegir i modificar qualsevol element DOM, interceptar enviaments de formularis, accedir a cookies, redirigir usuaris i exfiltrar dades. Les implicacions de seguretat d'aquesta disposició són significatives i sovint es passen per alt.

La superfície d'atac

Tingueu en compte la cadena de subministrament: quan afegiu una capa d'accessibilitat al vostre lloc web, esteu concedint a un proveïdor extern accés d'escriptura continu i sense restriccions al vostre DOM de producció en directe . La CDN del proveïdor serveix el JavaScript, l'equip del proveïdor manté el codi i el pipeline de desplegament del proveïdor envia les actualitzacions directament al vostre lloc web, sense la vostra revisió de codi, sense el vostre procés de control de qualitat i sense la vostra aprovació.

Si la CDN del proveïdor de la capa superposada es veu compromesa, l'atacant obté la capacitat d'injectar codi maliciós a tots els llocs que utilitzen aquesta capa superposada. Si un empleat del proveïdor envia una actualització incorrecta, tots els llocs del client es veuen afectats simultàniament. Si el punt final de l'API del proveïdor és segrestat, les dades JSON o de configuració de correcció que es serveixen al vostre lloc es poden manipular per modificar camps de formulari, redirigir enllaços o injectar contingut de phishing.

L'escala d'aquest risc es correlaciona directament amb la petjada DOM de la capa superior:

EinaJS en abast globalAccés d'escriptura al DOMDominis externsDependència de dades de l'API
Superposició A~1.240 KB (actiu)Les regles de correcció per lloc modifiquen qualsevol element coincident3 dominisActive.js per lloc
Superposició B~500 KB (actiu)El motor de remediació modifica qualsevol element coincident3 dominis, 228 crides a l'API1,17 MB JSON
Superposició C1.285 KB (monolític)227 setAttribute, 82 modificacions de rol3 dominisPOST de configuració i anàlisi
Superposició D~740 KB (actiu)216 setAttribute, 47 referències ocultes per ària2 dominisFitxers de configuració JS
Monitorització4,2 KB (passiu)Cap – zero escriptures DOM2 dominisCap

La capa B presenta la superfície de risc de la cadena de subministrament més gran: 228 crides a l'API per sessió en 3 dominis externs, amb una càrrega útil JSON d'1,17 MB que defineix com s'ha de modificar el DOM. Una resposta de l'API compromesa podria instruir el motor de remediació perquè injectés contingut arbitrari a qualsevol element de la pàgina. El paquet monolític d'1.285 KB de la capa C és la càrrega útil de JavaScript individual més gran i, com que està minimitzada i ofuscada, ni l'operador del lloc ni un auditor de seguretat poden revisar de manera significativa el que executa en temps d'execució.

Compliment de la norma PCI DSS: un conflicte directe

Per a qualsevol lloc de comerç electrònic que processi pagaments amb targeta de crèdit, el compliment de la norma PCI DSS no és opcional. I les nostres troballes revelen un conflicte directe entre l'arquitectura de l'eina de superposició d'accessibilitat i els requisits de la norma PCI DSS.

El requisit 6.4.3 de la norma PCI DSS (introduït a la versió 4.0 de la norma PCI DSS, obligatori a partir del 31 de març de 2025) exigeix ​​que tots els scripts de les pàgines de pagament que es carreguen i s'executen al navegador del consumidor es gestionin de la manera següent: s'ha d'implementar un mètode per confirmar que cada script està autoritzat, s'ha de garantir la integritat de cada script i s'ha de mantenir un inventari de tots els scripts amb una justificació escrita de per què cadascun és necessari.

La nostra anàlisi va confirmar que les regles de correcció de superposició s'orienten activament als elements DOM de la pàgina de pagament en diversos llocs:

# Superposició Una correcció de regles dirigides als elements de pagament/checkout (de l'active.js capturat): #cardNumber → modifica els atributs del camp del formulari #billingState → modifica els atributs del camp del formulari .shipping-method-link → modifica el comportament de l'enllaç #g-recaptcha-response → modifica la integració de reCAPTCHA .klarna-express-button → modifica el botó de pagament svg.klarna-option, svg.credit-card-option → elimina els atributs .amazon-pay-onetime-buttonhideFromAT() – ocult als lectors de pantalla #shop-pay-button-container buttonhideFromAT() – ocult als lectors de pantalla #minicart-popover #paypal-button-container → role="presentation" .checkout-form-area .payment-skeletonhideFromAT() – ocult als lectors de pantalla

Això no és un risc teòric: són regles de correcció reals que hem extret dels llocs de producció , modificant activament els camps del número de targeta de crèdit, els selectors d'adreça de facturació, els botons del proveïdor de pagaments i els contenidors del formulari de pagament. Segons la norma PCI DSS 6.4.3, tots aquests scripts de tercers requereixen una autorització documentada, verificació de la integritat i una justificació escrita.

Tingueu en compte què pot fer un script d'un proveïdor de superposició a la vostra pàgina de pagament:

Requisit PCI DSSQuè exigeixRealitat superposada
6.4.3 Gestió de scriptsInventari, autorització i garantia d'integritat per a tots els scripts de pàgines de pagamentLes superposicions carreguen més de 400 KB de JS de tercers que s'actualitza sense l'aprovació del comerciant
6.4.3 Justificació de l'scriptJustificació empresarial escrita de per què cada guió és necessariEls scripts de superposició serveixen per a correccions d'accessibilitat, seguiment analític i monitorització del comportament, cosa que només és parcialment justificable.
11.6.1 Detecció de canvisImplementar un mecanisme de detecció de canvis i manipulacions a les pàgines de pagamentEls proveïdors de superposició publiquen actualitzacions de codi a la seva CDN sense notificar-ho al comerciant: el contingut de l'script canvia silenciosament.
6.2.4 Integritat del programariProtegir contra l'explotació i les fallades en programari personalitzat i de tercersModificacions de Overlay JS #cardNumber, #billingStatei elements de botó de pagament: accés d'escriptura demostrat als camps de dades del titular de la targeta
🔴 El paral·lel de Magecart

Els atacs de Magecart que van comprometre British Airways (380.000 targetes robades), Ticketmaster (40.000 targetes) i Newegg van seguir el mateix patró: el JavaScript de tercers a les pàgines de pagament va ser compromès per robar dades de targetes de crèdit. Les eines de superposició operen exactament sobre la mateixa superfície tècnica : JavaScript de tercers amb accés complet al DOM que s'executa a les pàgines de pagament, amb capacitat demostrada per llegir i modificar els camps del formulari de pagament. La diferència és que els scripts de Magecart es van injectar de manera encoberta; els scripts de superposició són convidats . La superfície d'atac és idèntica.

La nostra anàlisi va demostrar que les regles de correcció de superposició tenen com a objectiu #cardNumber i #billingState per nom, és a dir, que el codi de la superposició té accés programàtic als elements on els clients introdueixen els seus números de targeta de crèdit i adreces de facturació. Una CDN de superposició compromesa podria modificar aquestes regles de correcció per exfiltrar les dades dels titulars de la targeta de tots els llocs web del client simultàniament.

L'eina de monitorització, en canvi, no té capacitat d'escriptura DOM. El seu script de 4,2 KB no pot modificar els camps del formulari, no pot interceptar esdeveniments d'entrada i no pot accedir ni alterar els elements de pagament. Fins i tot si la CDN del proveïdor de monitorització es veiés compromesa, l'atacant obtindria accés a un script que només pot llegir l'URL de la pàgina i el tipus de dispositiu, no un que pugui reescriure el formulari de pagament. A efectes de l'abast de PCI DSS, l'eina de monitorització no crea cap superfície de risc addicional a les pàgines de pagament.

La qüestió de la discriminació

Aquest és el problema de discriminació que hi ha al cor de totes les estratègies d'accessibilitat: la troballa més preocupant no és un defecte tècnic, sinó un patró de negar sistemàticament als usuaris amb discapacitat l'accés a funcionalitats que els usuaris vidents donen per fetes.

Quan una capa superposada amaga un botó d'Amazon Pay de l'arbre d'accessibilitat, un usuari cec veu menys opcions de pagament que un usuari vident. Quan s'amaga la quantitat introduïda al carretó de la compra, un usuari cec no pot ajustar la seva comanda. Quan s'amaguen els enllaços dels resultats de la cerca, es dificulta la descoberta de productes. Quan s'amaguen les qualificacions amb estrelles, un usuari cec no pot avaluar la qualitat del producte de la mateixa manera que ho pot fer un usuari vident.

No es tracta de casos límit, sinó de fluxos de treball bàsics del comerç electrònic que es veuen afectats per les mateixes eines que prometen fer-los accessibles.

La comunitat de persones amb discapacitat fa anys que ho denuncia obertament. La fitxa informativa sobre la superposició, signada per centenars de professionals de l'accessibilitat, adverteix que les superposicions d'accessibilitat "no reparen l'HTML subjacent" i "sovint interfereixen activament amb les persones amb discapacitat". La nostra anàlisi tècnica proporciona les proves: 141 elements funcionals ocults als lectors de pantalla, 7 etiquetes sense sentit injectades i 5.066 descripcions d'IA no revisades desplegades a la producció, en només 14 llocs web.

Per als operadors de llocs web, la qüestió no és si les superposicions són "prou bones", sinó si es pot justificar la implementació d'una eina que crea una experiència de dos nivells: una versió per a usuaris vidents que obtenen totes les funcions, i una versió filtrada, defectuosa i de vegades sense sentit per a usuaris amb discapacitat.

Impacte en el compliment de l'ADA: realment ajuden aquestes solucions?

La promesa principal de cada capa superior és que millora el compliment de l'ADA mitjançant la correcció de les infraccions de les WCAG en temps d'execució. Però la nostra anàlisi revela una paradoxa inquietant: un percentatge significatiu de les correccions de la capa superior introdueixen activament noves infraccions de les WCAG mentre intenten corregir les existents.

Vam assignar cada regla de correcció capturada de la Superposició A al criteri d'èxit específic de les WCAG 2.1 a què es dirigeix. De les 776 regles que es podien assignar, els resultats es van dividir en dues categories: correccions que realment solucionen un problema de les WCAG i correccions que creen una nova violació de les WCAG en el procés.

Superposició de les regles de correcció A assignades a WCAG: genuïnes vs. perjudicials
Criteri d'èxit de les WCAGTotal de correccionsGenuíamagaDelATrol=presènciaalt=""Insecte
4.1.2 Nom, Rol, Valor292260131423
2.4.4 Propòsit de l'enllaç (en context)15810845510
1.3.1 Informació i relacions1099211600
1.1.1 Contingut no textual10828525280
4.1.3 Missatges d'estat44431000
2.1.1 Teclat36226602
Altres (6 criteris)29261200
TOTAL776579 (75%)11948315
75%
de correccions mapejades realment
abordar un problema de les WCAG
26%
de correccions mapades
reduir l'accessibilitat
203
normes individuals que introdueixen
noves infraccions de les WCAG

Per ser justos, tres quartes parts de les correccions assignades són millores genuïnes: afegir etiquetes de botons que falten, corregir jerarquies d'encapçalament, corregir atributs d'autocompletar i implementar trampes de focus modals. Però la quarta part restant és activament perjudicial, i el dany recau de manera desproporcionada sobre els mateixos usuaris que l'eina pretén ajudar.

Com cada patró de risc infringeix les WCAG

El problema no és només que aquestes solucions fallen, sinó que introdueixen violacions de criteris d'èxit específics de les WCAG que no existien abans que s'apliqués la superposició. En una demanda de l'ADA, l'expert d'un demandant pot assenyalar aquestes violacions creades per la superposició com a prova que el lloc web discrimina les persones amb discapacitat.

hideFromAT() – Crea violacions de 5 criteris WCAG simultàniament.

Quan hideFromAT() s'aplica a un element funcional com un botó de pagament o un enllaç de producte, introdueix:

WCAG 1.1.1 (Contingut no textual, Nivell A): les imatges ocultes perden tot l'accés de text alternatiu.

WCAG 1.3.1 (Informació i relacions, Nivell A): s'elimina el significat estructural; el paper de l'element en la jerarquia de la pàgina desapareix.

WCAG 2.1.1 (Teclat, Nivell A): els elements interactius ocults no poden rebre el focus ni ser operats mitjançant el teclat.

WCAG 2.4.4 (Propòsit de l'enllaç, Nivell A): la tecnologia assistiva no pot navegar ni identificar els enllaços ocults.

WCAG 4.1.2 (Nom, Rol, Valor, Nivell A): els elements ocults no tenen cap nom ni rol determinable per programació.

Tots cinc són criteris de nivell A: el nivell mínim d'accessibilitat segons les WCAG. Cada instància de hideFromAT() en un element funcional crea cinc errors simultanis de nivell A. En 5 llocs, hem trobat 141 instàncies d'aquest tipus, que representen potencialment 705 noves violacions de nivell A introduïdes per la pròpia capa superior.

role="presentation" a les taules de dades: destrueix el compliment de les WCAG 1.3.1

Quan role="presentation" s'aplica a una taula de dades, els lectors de pantalla ja no poden navegar per files i columnes. L'estructura de la taula esdevé invisible. Això viola directament WCAG 1.3.1 (Informació i relacions) i 1.3.2 (Seqüència significativa). Hem trobat 115 instàncies de role="presentation" o "none", incloent-hi aplicacions en taules de dades, encapçalaments i elements de referència.

aria-label="true" – Viola les normes WCAG 4.1.2 i 2.4.6

La cadena literal "true" com a nom accessible infringeix les WCAG 4.1.2 (Nom, Rol, Valor) perquè el nom no descriu la finalitat de l'element, i les WCAG 2.4.6 (Encapçalaments i etiquetes) perquè l'etiqueta no és descriptiva. Un usuari d'un lector de pantalla sent "botó, true": no pot determinar què fa el botó, cosa que el fa funcionalment inaccessible. Hem trobat 7 instàncies en 3 llocs web.

Superposició B: text alternatiu d'IA i WCAG 1.1.1

La WCAG 1.1.1 exigeix ​​que el contingut no textual tingui una "alternativa de text que serveixi per a un propòsit equivalent". Un text alternatiu generat per IA que descriu el logotip d'una empresa com "un símbol blau i groc" no serveix per a un propòsit equivalent: el propòsit d'un logotip és la identificació de la marca, no la descripció del color. Un text alternatiu de "text" per a un bàner promocional, o "ciutat" per a una imatge estrella, no compleix el mateix criteri d'una manera diferent: és tan vague que no serveix per a res.

Dels 5.068 textos alternatius generats per IA que vam capturar de la Superposició B, 241 tenien menys de 15 caràcters (massa vagues per ser útils), 323 superaven els 125 caràcters (violant les millors pràctiques per a la usabilitat del lector de pantalla) i 156 començaven amb "imatge de" o "foto de" (redundant perquè els lectors de pantalla ja anuncien el tipus d'element). Només 2 havien estat aprovats per un revisor humà.

Segons les normes de litigi de l'ADA, l'expert en accessibilitat d'un demandant els marcaria com a incompliments de les WCAG 1.1.1, el criteri més citat en les demandes d'accessibilitat web de l'ADA. La superposició no resol la violació; substitueix una forma d'incompliment (text alternatiu que falta) per una altra (text alternatiu inexacte o vague), alhora que crea una falsa sensació de compliment per a l'operador del lloc web.

Superposició B: Injecció d'etiquetes de formulari en temps d'execució: quan "arreglar-ho" empitjora la situació

Beyond the consolidated JSON, Overlay B runs a 110 KB remediation engine (remediation-tool.js) that performs 24 distinct DOM mutation rules at runtime on every page load. One of these rules – the EmptyControls handler – targets unlabeled form fields and attempts to inject accessible names by finding nearby <label> elements.

The mechanism works as follows: for each form control without an accessible name, the engine calls a label-finder function that searches for <label for=”id”> elements matching the input’s ID. If found, it injects the label’s text content as an aria-label:

// Extracted from remediation-tool.js (110.5 KB): // Step 1: Find label element by input ID io = e => { const t = e.getAttribute(“id”); if (!t) return null; return document.querySelector(`label[for=’${t}’]`) } // Step 2: If label found, inject its text as aria-label i.textContent && !e.hasAttribute(“aria-label”) && e.setAttribute(“aria-label”, i.textContent.trim()) // Step 3: Fallback if no label found – check placeholder, then title, then element attributes lo = e => { const r = e.getAttribute(“placeholder”), n = e.getAttribute(“title”); if (r && r.trim()) return r; if (n && n.trim()) return n; // Falls through to construct label from classList, name, tagName, type }

We verified this behavior on a live site – a web agency’s contact page with six form fields. The original HTML had visible labels (“First Name”, “Company Name”, “Last Name”, “Work Email”, “Phone Number”, “Message”) but they were not programmatically associated with their inputs via <label for> or aria-label. Without the overlay, a screen reader would announce each field with no name at all.

Amb el motor de correcció de la capa B actiu, un lector de pantalla va anunciar:

Etiqueta visibleNom d'entrada=Superposició aria-label=Problema
Nomnom«Nom»Truncat – "Nom" perdut. Mateixa etiqueta que el cognom a continuació.
Cognomcognom«Nom»Mateixa etiqueta que el Nom: l'usuari no pot distingir els camps
Correu electrònic de la feinaadreça de correu electrònic"Si us plau, introduïu l'adreça de correu electrònic"Generat a partir del tipus de validació d'entrada, no de l'etiqueta visible "Correu electrònic de treball"
Número de telèfontelèfon"Si us plau, introduïu un número de telèfon"Generat a partir del tipus d'entrada, no de l'etiqueta visible "Número de telèfon"
Nom de l'empresaempresa"Camp de text"No s'ha trobat cap etiqueta; es torna al tipus d'element genèric.
Com et podem ajudar?menú-627"Selecció única"No s'ha trobat cap etiqueta, només el tipus d'element
Missatgeel teu missatge"Àrea de text"No s'ha trobat cap etiqueta, només el tipus d'element

We verified this by examining the saved HTML source with the overlay’s modifications baked in. Every modified element carries a vendor-specific data-*-form=”fx” attribute – the overlay’s own marker confirming it injected the aria-label. The original HTML has <label> elements with correct text (“First Name”, “Last Name”, “Work Email”, etc.) but they have no for attribute and the inputs are not nested inside the labels – so there is no programmatic association. The overlay’s label-finder function only looks for label[for=id], and since the inputs have no id attribute at all, it returns null for every field. The engine then falls back to constructing labels from the name attribute (“first-name” → “Name”, “last-name” → “Name”), input validation type (“email” → “Please enter email address”), or the raw element type (“text” → “Text field”, “select” → “Single select”, “textarea” → “Text area”).

El resultat és pitjor que el formulari original sense etiquetar . Abans de la superposició, un usuari de lector de pantalla es trobava amb set camps sense etiquetar, cosa que resultava confusa, però almenys de manera consistent. Podrien utilitzar l'ordre de tabulació i el context per endevinar quin camp és quin. Després de la intervenció de la superposició, l'usuari es troba amb dos camps amb la mateixa etiqueta ("Nom" tant per al nom com per al cognom), dos camps amb etiquetes d'estil de validació fabricades que no coincideixen amb el text visible i tres camps amb noms basats en el tipus sense sentit. L'etiquetatge parcial i incorrecte és més desorientador que cap etiquetatge, perquè crea una falsa impressió que el formulari s'ha fet accessible quan els camps crítics romanen sense etiquetar o mal etiquetats.

Aquesta troballa també revela el punt cec de remediació del JSON de la superposició B. El JSON contenia 87 entrades de text alternatiu generades per IA i entrades de remediació de forma zero per a aquest lloc. La injecció d'etiquetes del formulari es produeix completament en temps d'execució a través del controlador de regles EmptyControls: no és visible al JSON de remediació consolidat, no es fa un seguiment en cap tauler de control que l'operador del lloc pugui revisar i no està subjecta a aprovació humana. L'operador del lloc no té manera de saber que el seu formulari de contacte està mal etiquetat tret que ho provi ell mateix amb un lector de pantalla.

The remediation engine’s 24 rule handlers collectively perform: aria-label injection on form fields, links, images, and dialogs; aria-hidden toggling; role modification (heading, presentation, menuitem, button, img); tabindex injection to make non-interactive elements focusable; alt text from the AI JSON; style overrides to make hidden elements visible; aria-required injection; aria-describedby associations between fields and error messages; heading text rewrites; broken link URL corrections; <meta viewport> modification; and <html lang> changes. All of this executes at runtime in the visitor’s browser on every page load – none of it is visible in the consolidated remediation JSON.

L'efecte net de compliment de l'ADA

El problema fonamental és que les eines de superposició confonen la cobertura amb el compliment normatiu . Una superposició pot apuntar a 1.058 regles de correcció i afirmar que aborda més de 40 criteris d'èxit de les WCAG. Però quan el 26% d'aquestes correccions introdueixen noves infraccions, incloses les fallades de nivell A creades per ocultar elements funcionals, la posició neta de compliment normatiu pot ser pitjor que la del lloc web sense modificar.

Un lloc web sense una superposició que tingui 50 infraccions de les WCAG està en una posició legal més clara que un lloc web amb una superposició que tingui 30 infraccions originals més 203 infraccions introduïdes per la superposició, perquè les infraccions introduïdes per la superposició demostren que l'operador del lloc web va implementar una eina que discrimina activament els usuaris amb discapacitat, cosa que soscava qualsevol defensa de bona fe.

🟢 L'enfocament de l'eina de monitorització per al compliment de l'ADA

L'eina de supervisió no pot introduir infraccions de les WCAG perquè mai modifica el DOM. En comptes d'això, utilitza axe-core (el mateix motor que utilitzen el Departament de Justícia, la Comissió Europea i la majoria de professionals de les proves d'accessibilitat) per identificar infraccions reals amb identificadors de regles i nivells de gravetat estandarditzats. Els desenvolupadors corregeixen aquestes infraccions al codi font, on les correccions passen per la revisió del codi, les proves automatitzades (incloses les comprovacions d'accessibilitat de CI/CD) i el desplegament controlat. Cada correcció és una millora permanent del codi base, no un pegat temporal en temps d'execució que es pugui quedar obsolet, aplicar-se a l'element equivocat o ocultar contingut als usuaris amb discapacitat.

La conclusió

L'arquitectura de superposició d'accessibilitat crea els problemes que pretén resoldre

Les superposicions amaguen contingut als usuaris amb discapacitat (141 elements en 5 llocs web). Injecten errors a la producció (7 instàncies d'aria-label="true"). No funcionen en cada desplegament del lloc web (el 98% dels selectors tenen com a objectiu classes específiques del framework). Fan un seguiment dels usuaris abans del consentiment (UID persistents i ID de sessió). Consumeixen el 75% del temps de xarxa en anàlisis de proveïdors, no en accessibilitat. I les empreses que les utilitzen són demandades a un ritme de més de 1.000 vegades per any.

Una eina de monitorització que escaneja i genera informes –sense modificar el DOM– elimina tots aquests riscos simultàniament. Les correccions les implementen els propis desenvolupadors del lloc web mitjançant processos normals de revisió de codi, proves i desplegament. Les correccions són duradores perquè formen part del codi font, no d'una capa paral·lela de tercers. I l'eina en si no pot trencar el lloc web, rastrejar els usuaris ni crear barreres d'accessibilitat, perquè mai no toca la pàgina.

Per a les empreses de comerç electrònic que avaluen les superposicions d'accessibilitat, recomanem tres preguntes: primer, aquesta eina modifica el vostre DOM en directe? Si és així, cada correcció és un punt de ruptura potencial en el vostre proper desplegament. segon, aquesta eina fa un seguiment dels vostres usuaris? Si és així, necessiteu un DPA i un mecanisme de consentiment que compleixin amb el RGPD, i heu de revelar el seguiment a la vostra política de privadesa. tercer, podeu auditar què fa aquesta eina? Si la resposta és un únic fitxer minificat de 794 KB amb un MutationObserver a tot el document, la resposta honesta és no.

L'arquitectura superposada es va concebre com una drecera. La nostra investigació demostra que és una drecera per a la responsabilitat legal, la discriminació d'usuaris, la degradació del rendiment i el deute tècnic. L'enfocament de monitorització (escanejar, informar, corregir al codi font) és l'única arquitectura que s'escala sense crear nous problemes.