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.

Annunci

29 pensieri su “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

  2. 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.

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

  4. 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.

  5. 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. 😮

  6. 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

  7. 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. 🙂

  8. 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…

  9. 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. 😀

  10. 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.

  11. 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.

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

  13. 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. 🙂

  14. 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!
    🙂

  15. 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!
    🙂

  16. 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!!
    🙂

  17. Semplicemente sono due siti diversi che si comportano in modo diverso… stiamo comunque esulando dal senso del post adesso. 🙂

Che cosa ne pensi?

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

This site uses Akismet to reduce spam. Learn how your comment data is processed.