Gli articoli premium di Repubblica li può leggere chiunque, senza pagare

Il progetto OWASP (Open Web Application Security Project) mantiene da diversi anni la OWASP Top 10, vale a dire la lista delle dieci vulnerabilità più critiche nell’ambito delle applicazioni web. È una lista conosciuta da tutte le persone che si occupano di sicurezza informatica e, vorrei sperare, anche da chi si occupa di sviluppo web.

Un tipo di vulnerabilità che compare in tutte le edizioni della lista, in un modo o nell’altro, riguarda la possibilità di accesso a risorse che dovrebbero essere protette ma non lo sono in modo adeguato.

Repubblica ha lanciato un servizio premium a Novembre dell’anno scorso, chiamandolo “Rep”. All’interno di esso compaiono articoli di cronaca, pezzi di opinione e molto altro. Chi non è abbonato, visitando un articolo di Rep vede alcune frasi dell’articolo, seguite da un messaggio che recita:

Abbonati a Rep per continuare a leggere

Fino a qui, sembrerebbe tutto normale. Il browser di un utente anonimo riceve un pezzo dell’articolo, ma non può leggere oltre fino a che non effettua il login: è il funzionamento base di un paywall.

Su alcuni siti vulnerabili ci potrebbe essere qualcuno che riesce a bypassare il pagamento e leggere integralmente gli articoli, magari alterando i parametri dell’URL, i cookie o il referer. Questa possibilità esiste, però richiederebbe una specie di “manipolazione” basilare o comunque un intervento da parte dell’utente per ricevere il testo completo.

Il caso di Rep è completamente diverso e mi ha stupito moltissimo quando l’ho visto. Basta infatti guardare il codice sorgente caricato dal browser per scoprire un artificio meramente estetico:

rep_testo
Il testo di un articolo su Rep, visualizzato da un utente non registrato

Si nota infatti che è il sito stesso, cioè l’applicazione Rep, a inviare il testo integrale di ogni articolo al browser di qualsiasi visitatore lo visualizzi. Non c’è nemmeno la possibilità di non riceverlo, arriva infatti in automatico con tutto il resto della pagina.

Il testo viene poi semplicemente nascosto tramite lo stile grafico del sito (una riga di codice CSS che chiunque può disattivare). Ed è questa la cosa più incredibile di questa vicenda:

  • non è necessario installare niente
  • non c’è bisogno di “manipolare” nulla

Rep invia a tutti i visitatori i testi completi di tutti gli articoli, che sono visibili se si disattiva lo stile che li nasconde (o anche navigando con gli stili disattivati, un’opzione di Firefox poco utilizzata ma presente fin dagli albori del browser).

Anzi, se volete provare da voi vi basta visitare un qualsiasi articolo di Rep, aprire gli strumenti di sviluppo del browser e togliere la casellina sulla regola giusta. O ancora più semplicemente, disattivate un attimo gli stili della pagina dal menu di Firefox (Visualizza → Stile pagina → Nessuno stile).

Se siete totalmente pigri, volete automatizzare la cosa per ciascun articolo che visitate, oppure volete farlo da smartphone (in tal caso avrete bisogno di Firefox) ho anche pubblicato un microscopico user-script che funziona con le estensioni Greasemonkey e Tampermonkey. Lo potete installare da qui:

Repubblica “Rep” Aesthetic Paywall Bypass

Naturalmente lo script è solo un proof-of-concept e il sito può venire sistemato in qualsiasi momento.

Quello che abbiamo sotto gli occhi è un tentativo di fare “sicurezza” lato-client, ovvero sulla macchina dell’utente dell’applicazione web. Questo è un approccio che non funziona, anzi è talmente grossolano che sembra dover richiedere un’altra spiegazione.

Alcune persone con cui ho parlato ipotizzano che venga fatto in modo intenzionale, per consentire l’indicizzazione degli articoli da parte di Google. Questo potrebbe certamente essere vero, anche perché sembra strano che nessuno sia intervenuto nel giro di mesi. Però Google fornisce degli strumenti appositi per gli sviluppatori di contenuti protetti da paywall. Forse sarebbe il caso di utilizzarli.

Se anche voi state sviluppando un’applicazione web, assicuratevi di effettuare adeguate valutazioni di tutto il codice, verificando una per una tutte le vulnerabilità della OWASP Top 10 (e non solo quelle). Proteggere i contenuti è fondamentale, specialmente quando i contenuti sono il prodotto. A questo proposito, potrebbe essere una buona idea richiedere un servizio di consulenza professionale in merito.

74 pensieri riguardo “Gli articoli premium di Repubblica li può leggere chiunque, senza pagare

  1. Purtroppo non ho capito come funziona. Ho scaricato il Bypass e ho Tampermonkey su Chrome ma non succede niente. Un aiutino? Grazie

    1. Che pizza, a quanto pare Repubblica su Chrome renderizza le pagina con lo shadow DOM attivo. :\ Vabbè, intanto ho messo un redirect sugli URL da /pwa/ a /ws/detail/ che sembra la stessa cosa ma senza shadow DOM.

      In ogni caso lo script, come scritto sopra, è un proof-of-concept. Quello che conta è il principio.

    2. Grazie per la risposta ma io non sono assolutamente uno pratico e non ho capito niente di quello che hai scritto. Abbi pazienza.

  2. Nel commento precedente spiegavo perché sulla versione del sito che viene mostrata agli utenti Chrome non bastano due righe di CSS, tutto qui. Ho poi scritto qual è il workaround usato nella versione 1.1 dello script.

    Ad ogni modo tutto ciò è relativamente poco importante, quanto è scritto nel post rimane valido, in quanto chiunque può usare Firefox, oppure semplicemente disattivare l’artificio estetico “a mano” e leggersi tutti gli articoli che desidera.

    Lo script è un PoC, non una release di un software che verrà mantenuto aggiornato nel tempo.

    1. Boh, sinceramente sono andato a vedere sul sito e ho provato ad accedere alla sezione Plus… non ho trovato nemmeno un articolo che richieda di iscriversi o altro per leggerlo.

      Sono tutti testi completi senza nessuno script. Non capisco. 😮

  3. Salve il trucchetto del “disabilita stili” da ieri non funziona piu’! che hanno fatto? urgono soluzioni nuove!!! daro’ loro soldi quando leveranno la pubblicità! pagare per vedere pubblicità anche NO! ps. odio i correttori

  4. Leo, sì scusa però… chi ha detto ai lettori di metterci ?preview=true alla fine? 😜

    Direi che si legge bene: http://espresso.repubblica.it/opinioni/pantheon/2018/08/23/news/cl-travolta-da-un-insolito-governo-1.326248

    Andrea, andiamo con ordine. Innanzitutto lo script menzionato nell’articolo funziona ancora senza nessun problema (possiamo discutere su quanto sia bizzarro che dopo mesi non abbiano ancora fatto nulla per risolvere una cosa così semplice ma non voglio divagare).

    urgono soluzioni nuove

    In secondo luogo, anche se fosse… ho scritto piuttosto chiaramente:

    Naturalmente lo script è solo un proof-of-concept e il sito può venire sistemato in qualsiasi momento.

    Lo scopo del post non è quello di trovare “soluzioni” di alcun tipo, serve a illustrare in modo chiaro ed esplicito una mancanza piuttosto madornale sul sito web di un quotidiano nazionale.

    È una constatazione qualitativa che mi permetto di fare da professionista del settore, perché se facessi io una cosa del genere ad un cliente, passerei poi un brutto quarto d’ora a dovergli spiegare come mai ho commesso una castroneria simile quando gli articoli sono il prodotto. Tutto qua. 🙂

  5. Sia in firefox (61.02) sia in Chrome, se incollo l’url senza ?preview=true in automatico me la riscrive impedendomi la lettura. Ho svuotato la cache, ma non risolvo…

  6. Ah sì mi sono dimenticato di dire che ovviamente uso uBlock Origin. A quanto pare se non è attivo la cosa non funziona. Evidentemente c’è uno script esterno che fa questa cosa e uBlock Origin lo blocca. 😮

    PS: simpatica questa cosa, ci potrebbe stare un post separato. 😀

  7. Ho scoperto questa pagina perché da un paio di giorni non c’era più il testo completo. Effettivamente hanno cambiato qualcosa. Il testo sotto paywall non viene più inviato al client.. ma non sempre. Ho provato stasera, per il primo articolo ho ricevuto il testo completo, per i successivi (anche per il primo, ricaricandolo) il testo non viene più inviato.

  8. Come avevo scritto più su:

    Che pizza, a quanto pare Repubblica su Chrome renderizza le pagina con lo shadow DOM attivo. :\ Vabbè, intanto ho messo un redirect sugli URL da /pwa/ a /ws/detail/ che sembra la stessa cosa ma senza shadow DOM.

    Ripeto ancora una volta che lo script continua a funzionare perfettamente.

  9. Non ne ho idea, prova. 🙂 L’articolo descrive la problematica e fa vedere che c’è, poi ognuno può decidere di verificarla come meglio desidera.

    1. Se si visita la homepage di Rep, si clicca sull’icona della ricerca e si visualizzano i risultati, funziona tutto e non noto alcun problema.

      In ogni caso, come ho già scritto sopra (più volte) lo script è un proof-of-concept che serve a mostrare che ciò che ho scritto nell’articolo è vero. Cioè dimostra la mancanza di protezione dei contenuti su Rep, non significa che debba necessariamente essere un programma finito e perfettamente funzionante per un uso abituale. 🙂

  10. Grazie Lazza!
    forse mi son spiegata male..
    se ad es vuoi leggere l’ultimo articolo di M.Recalcati che era sulla home page ma nella sez degli abbonati , quando c’era si poteva leggere con il tuo utilissimo script
    se ora che non c’e’ si cerca si trova, e’ l’ulitmo in ordine di data, ma ha scritto sotto la frase: contenuto a pagamento
    e se ci clicchi sopra ti chiede di abbonarti..
    a te invece non lo fa..?

    grazie mille ancora!
    🙂

    1. Qualsiasi risultato di ricerca su Rep, che sia per la parola “Recalcati” o qualsiasi altro termine, si apre correttamente.

  11. Edit:
    ho scoperto l’arcano!
    la ricerca va fatta nel rettangolino con la scritta “Rep” e i “:” rossi
    e non in quello seguente dove c’e’ scritto -cerca- ed accanto la lente
    grazie mille di cuore
    e scusa la mia imbranataggine!
    🙂

    1. Grazie mille!
      hai mica per caso idea del diverso comportamento della ricerca?
      in fin dei conti cerchi sempre un articolo di Rep
      e’ che se lo cerchi nel primo spazio te lo fa leggere
      se lo cerchi nello spazio classico della ricerca con tanto di lente a fianco
      lo trova ugualmente ed e’ lo stesso scritto ma poi vuole che ti abboni

      ma è una semplice curiosita’ la mia..
      grazie mille ancora di cuore per tutto quello che fai per noi!!
      🙂

    1. Grazie mille Lazza
      per il tempo ed i doni che ci fai!
      sie veramente un grande!
      😉

    1. Vero. Pensavo avessero risolto, invece hanno solo modificato lievemente il modo con cui nascondono il testo vero degli articoli, quindi è bastata una micro-modifica allo script. Che roba bizzarra. 😀

    1. No, entrambi gli script che hai segnalato come non funzionanti in realtà funzionano perfettamente. Testati anche un minuto fa.

      Per carità, potrebbero anche sistemare in futuro (anzi mi stupisco che non sia ancora successo, la notizia è pubblica da quasi un anno) ma non è questo il caso.

  12. Su cosa lo testi? Io sto usando Firefox 60.5.1 con GreaseMonkey e uBlock e il paywall non dà alcun segno di voler sloggiare

  13. Lo script di Rep funziona su Tampermonkey e Greasemonkey 3, a quanto sembra su Greasemonkey 4 hanno rimosso la funzionalità GM_addStyle. Bizzarra scelta.

    Vabbè tanto lo script è facilmente modificabile per gestire anche quel caso lì.

  14. Ciao, potresti pubblicare qualcosa di simile anche per ilcorriere.it , ho trovato in rete solo un vecchio script che non funziona più?
    Grazie!

  15. Ciao Andrea, grazie mille dell’articolo. Ho utilizzato lo script per diversi mesi su android con successo. L’ultima release di firefox per android non supporta nessuno userscript come greasemonkey o tampermonkey. Ho provato ad installare una vecchia versione di firefox ma mi installa automaticamente la più aggiornata. Cosa suggerisci? Grazie mille

    1. È un problema che abbiamo tutti, bisogna aspettare che sistemino dopo aver castrato il browser in questo modo.

      Il problema non sono gli user-script, quanto il fatto che non si possano proprio usare molte estensioni (tra cui Tampermonkey e Greasemonkey).

  16. Da programmatore mi sono stupito io stesso di questa cosa… ho fatto quindi una ricerca per sapere se qualcun altro se n’era accorto e ho trovato il tuo articolo del 2018…

    Piccola parentesi, mi sa che la maggior parte delle persone qui non hanno capito quel che hai scritto e pensano semplicemente a leggere il giornale gratis (per cui non c’è neanche bisogno di uno script basta fare ispeziona elemento su qualsiasi browser il testo è solo nascosto con css roba da 1 elementare), il che mi porta a pensare al fatto che a repubblica e simili (anche la stampa per dire) non interessi minimamente correggere il problema, la maggior parte degli utenti (come dimostrato anche qui) non sa nulla di css quindi, se vuole leggere, paga o cerca script come il tuo che (se non fanno tutto in automatico) “non funzionano”.

    Insomma, stupisce che ci sia una vulnerabilità simile a noi del mestiere, ma pare che l’utenza sia ad un livello abbastanza basso da permettergli di fare siti con queste vulnerabilità.
    D’altronde non gestiscono una banca… il peggio che può capitare è appunto che uno si legga l’articolo a pagamento gratuitamente (certo mi chiedo a questo punto come abbiano implementato il sistema di pagamento… dati della carta di credito in chiaro?).

  17. il che mi porta a pensare al fatto che a repubblica e simili (anche la stampa per dire) non interessi minimamente correggere il problema, la maggior parte degli utenti (come dimostrato anche qui) non sa nulla di css quindi, se vuole leggere, paga o cerca script come il tuo

    Capisco cosa vuoi dire con questo ragionamento e, sappiamo bene, quando si parla di sicurezza informatica ogni misura va presa in base al modello di attaccante che ci si aspetta.

    Tuttavia, ritengo che non si possa pensare la sicurezza informatica partendo da un ragionamento simile a “tutti gli utenti saranno certamente davvero poco esperti per accorgersi di un buco del genere”.

    il peggio che può capitare è appunto che uno si legga l’articolo a pagamento gratuitamente

    Eh, chiaro, ma in teoria quello sarebbe l’unico prodotto che vendono.

  18. Gli articoli di Rep sono su rep.repubblica.it, non su www.repubblica.it. In ogni caso non noto problemi a visualizzare questi ultimi, posto di usare correttamente un ad blocker.

    1. ciao e grazie,
      quindi tu vedi chiaramente anche questo..:
      https://www.repubblica.it/economia/2020/11/06/news/bitcoin_raddoppia_investimento_valore-273365452/?ref=RHTP-VS-I273384042-P8-S1-T1

      io ho disattivato tutti gli ad blocker,perche’ come dici a volte interferiscono con la corretta visualizzazione, ma continua a dirmi che e’ riservato ai soli abbonati e non lo vedo…
      potresti spiegare come andrebbe impostato l’ad blocker se invece che disattivato andasse attivato..?
      grazie ancora per tutto!
      🙂

  19. ..di fatti ho provato pure:
    “O ancora più semplicemente, disattivate un attimo gli stili della pagina dal menu di Firefox (Visualizza → Stile pagina → Nessuno stile).”…:
    stesso risultato..mi chiede di essere abbonata…quindi ,provato pure in safe mode, quindi senza add ons che possono interferire,stesso risultato…e’ veramente strano che il trucco:
    O ancora più semplicemente, disattivate un attimo gli stili della pagina dal menu di Firefox (Visualizza → Stile pagina → Nessuno stile).
    funzioni su rep.repubblica.it e non su repubblica.it…
    e’ questo che non so spiegarmi…perche’ se hanno capito e son corsi ai ripari lo avrebbero dovuto fare su entrambi..
    😉
    🙂

    1. ma se si avvia firefox in safe mode e si usa il tuo suggerimento:
      ” disattivate un attimo gli stili della pagina dal menu di Firefox (Visualizza → Stile pagina → Nessuno stile).”…
      si dovrebbe vedere come si vedono quelli su rep.repubblica.it…
      eppure qui esce la richiesta di abbonarsi…
      come te lo spiegheresti..??
      grazie mille ancora!
      🙂

  20. ..provato con un nuovo profilo intonso di firefox e la soluzione:
    ““O ancora più semplicemente, disattivate un attimo gli stili della pagina dal menu di Firefox (Visualizza → Stile pagina → Nessuno stile).”…:”…:
    stesso comportamento…la soluzione, e quindi poi lo script se si passa a profili con add ons,
    funziona solo su rep.repubblica.it
    ma non su repubblica.it…
    e questo e’ davvero molto strano e incomprensibile…
    sistemano solo uno dei loro siti…??..incomprensibile..
    🙁

  21. Cosa vuol dire “incomprensibile”?

    Il mio articolo parla di Rep, non del portale principale di Repubblica. Su Rep i contenuti sono nascosti tramite CSS, nel portale principale vengono rimossi con JavaScript… ma sinceramente non capisco tutto questo “stupore”, semplicemente sono pagine diverse con modalità di funzionamento diverse.

    Lo script di prova di cui parla l’articolo, peraltro, non si attiva neppure su pagine che non siano di Rep.

    1. sicuramente mi sono espressa male e mi scuso:
      per me e’ incomprensibile che lo stesso gruppo,Gedi, e per la stessa azienda:Repubblica
      su un sito protegga i dati in un modo come hai definito bene poco -forte- dato che basta o lo script o disattivare gli stili e si vede tutto…mentre su l’altro,sempre di repubblica anche se con indirizzo web leggermente diverso usi un altro sistema che invece non e’ aggirabile…a me sembra incomprensibile che uno che ha una casa con due porte davanti ne chiuda solo una e lasci l’altra accostata…
      comunque confermi che sul sito repubblica.it ,essendo un codice java che protegge, il tuo script non funziona come ovviamente anche il disabilitare gli stili nel browser?
      perché mi sembrava di capire che tu vedessi anche i links ultimi che ho postato,quelli su repubblica.it ,che non usano il codice css ma javascript
      grazie e scusami ancora

  22. E’ abbastanza normale, avendone la possibilità, poter sperimentare diverse strategie di protezione per valutarne gli effetti, una protezione forte non è necessariamente migliore. Per esempio, una protezione debole permette un livello di ‘permeabilità’ delle notizie che ne potrebbe agevolare la diffusione. L’indicizzazione è anche importante e Google non è molto trasparente, quindi si procede per tentativi ed esperienza. C’è poi da considerare il fattore industriale, in un grande gruppo è possibile che siti diversi siano su versione tecnologiche diverse della piattaforma di base e servono investimenti per migrare e allineare tutti, investimenti che vengono di solito allineati ad altri progetti (come ridisegno del sito, implementazione di nuove strategie di marketing etc..).

  23. Ecco, oltretutto ci sono grandi testate giornalistiche (tipo il New York Times) che sviluppano codice diverso persino per singole inchieste o pagine. 😛

    1. Grazie mille
      …mi avete aperto un mondo….
      ora non mi sembra piu’ incomprensibile..
      resta la domanda del perche’ su repubblica.it il javascript venga bloccato da ublock ma non da
      ad es abplus..o adblock…che di solito sono sempre assai efficaci…
      ma questa e’ un altra storia ed esula da questo articolo

  24. Io faccio copia del testo in un editor partendo dal titolo in grassetto e selezionando fino al bordo superiore del paywall; poi incollo in un editor di comodo dove leggo tranquillamente tutto.
    Ma occhio che vale solo per quegli articoli che NON finiscono con 3 puntini di sospensione “…” appena prima fel paywall, in qs casi la cesura funziona veramente. (Questi autenticamente “REP:” ). Quelli selezionabili, se la connessione internet non e’ particolarmente fluida, si possono a volte leggere per intero perche’ talvolta la pagina non viene caricata completamente, a volte mancando il CSS well-formed che serve per nascondere (o a volte arriva con qualche ritardo per cui si legge per un momento, e poi viene coperto)

    1. Grazie mille Andrea,
      il fatto e’ che leggendo il tuo articolo non avevo capito che tale estensione funziona solo con vers.AMP…e anche sulla pagina dello sviluppatore mi pare,anche se e’ in inglese quindi posso non aver tradotto bene, che non venga specificato…sbaglio..??
      grazie ancora

    2. grazie davvero per tutto,
      permettimi di dissentire su questo:
      “I miei script sono ormai “superati”
      non lo sono assolutamente, anzi sono l’unica cosa che veramente ci aiuta
      grazie ancora per il tuo preziosissimo impegno
      🙂

  25. Ciao Giusi, con Chrome e l’extension l’articolo che hai postato viene gestito. L’extension rimanda alla versione AMP che è liberamente consultabile.

    1. Grazie mille Camillo!
      Vero!
      Perfetto!!
      …evidentemente è meglio sviluppata per chrome che per firefox…
      grazie!!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *