Newsgroup: it.comp.os.linux.sys
Titolo: Reverse Proxy?

Ciao a tutti,
ho un problema che riguarda un sistema web e non ho molte idee su come
risolverlo.
Ho una pagina (B) che deve viene chiamata da un link incluso in
un'altra pagina (A) che sta su un altro server.
Vorrei evitare che si potesse chiamare direttamente la pagina B senza
passare da A.
Come posso fare?Pensavo di mettere un reverse proxy in A e obbligare a
passare da lì?è corretta come idea?


Dovresti dettagliare un poco che cosa vuoi ottenere...
Anche se proxy la pagina B e la esporti sottoforma di pagina C dal
server che ospita A, cosa impedisce di puntare direttamente il browser
sulla pagina C, bypassando nuovamente la pagina A?
Se l'obiettivo è consentire la visualizzazione (o l'esecuzione) della
pagina B previ controlli fatti altrove, l'unica maniera sensata che ci
vedo è far sì che a prelevare la pagina B sia direttamente
l'applicazione eseguita nella pagina A (cia curl, pe' capisse).
Oppure generare un token dalla pagina A da includere nel link, e che poi
venga validato dall'applicazione che genera la pagina B: se il token
"batte" mostra la pagina, altrimenti rutta in faccia all'utente.
Ma in tal caso devi porre attenzione a come generi e validi il token in
questione, onde evitare la possibilità di replay-attack (studiare
qualche rudimento di crittografia è consigliabile, se l'applicazione
deve garantire qualche livello di confidenza su questi aspetti).
E magari tutta 'sta roba è eccessiva per quel che vuoi ottenere...
-- 
Paranoia is a disease unto itself. And may I add: the person standing
next to you may not be who they appear to be, so take precaution.
-----------------------------------------------------------------------------
http://bofhskull.wordpress.com/

 E magari tutta 'sta roba eccessiva per quel che vuoi ottenere...
Difatti, la pagina è una cavolata, ma mi servirebbe proteggerla un
po'.
mod_security potrebbe aiutarmi?



Salvo salti mortali, direi di no.
La soluzione in questi casi è a livello di applicazione, in linea di
massima...


 mod_security potrebbe aiutarmi?
Segui quanto detto da Skull: usa un token che ti passi come parametro.
In base alla sicurezza che vuoi ottenere il token puň essere piů o meno
complesso.
Si puň andare da un md5 fatto concatenando una sharedkey e magari il
timestamp (quindi cambia ogni secondo) o cifrando una roba del genere:
sharedkey;timestamp;porcate_random
di la decritti la stringa (visto che avrai la chiave AES su ambo i lati)
e verifichi la stringa sharedkey ignorando il resto (che serve solo a
generare un token diverso ogni volta)
Va da se che non ci passerai i dati della carta di credito con
un sistema del genere ma basta ed avanza per togliere di mezzo gli
spaccamaroni.
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito č di fare il possibile per la
salvezza degli anni nei quali viviamo,
sradicando il male dai campi che conosciamo.

 spaccamaroni.
Quella del timestamp è l'idea che avevo anche io.
Vedo un po' se riesco a metterla in pratica.
Grazie delle dritte.

 Grazie delle dritte.
Non 'del timestamp' ma della sharedkey.
Quello che conta è la shared-key tra le due pagine,
il timestamp serve solo per pseudo-randomizzare
il token, che sarà sempre diverso, e darne una
una scadenza temporale altrimenti:
a) se usi la sola sharedkey ti basta intercettare
la stringa cifrata, che è sempre uguale, e ti
bypassano il check
b) se usi il solo timestamp sei facilmente prevedibile.
se li metti insieme, bisogna intuire sia la sharedkey,
sia il timestamp, e non sei soggetto replay attack
perchè il timestamp ti farà scadere tutti i token
precedenti. (se i server non son sincronizzati puoi
verificare i 2 secondi prima ed i 2 secondi dopo,
per un totale di 5 token alla volta)
Metodo elementare, ma basta per tenere lontani i
bimbiminkia (e solo loro) che credo sia quello che
serve a te.
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito è di fare il possibile per la


 una scadenza temporale altrimenti:
Sì sì, ovviamente... :-)