Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    distinguere due host

    Salve a tutti
    ho un problema che non riesco a risolvere!
    sul mio server su cui ho montato Apache, vi sono due siti in due cartelle, ognuno dei quali è accessibile tramite il proprio sottodominio. Sono completamente indipendenti (sub1.dominio1.it e sub2.dominio2.eu) su due dns differenti. Adesso!! Ho uno script C nella cartella cgi-bin del server. Se entrambi fanno una richiesta GET allo script, come faccio a distinguere chi dei due ha effettuato la richiesta?
    Se uso getenv("REMOTE_ADDR"), i due hanno lo stesso indirizzo, se uso
    gethostbyaddr((char *) &addr, sizeof(addr), AF_INET) mi restituisce il nome del router.

    spero di essere stato chiaro
    grazie

  2. #2
    nessuno?!?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Non si capisce da "Adesso!!" in avanti:
    Potresti rispiegare cosa significa: << Ho uno script C nella cartella cgi-bin del server. Se entrambi fanno una richiesta GET allo script, come faccio a distinguere chi dei due ha effettuato la richiesta? >>

    Per script C intendi un programma C? Come lo esegui, da shell o è un CGI? Perché dici che entrambi (intentendo i siti??? in che modo i siti fanno richieste???) fanno una richiesta GET allo script?

  4. #4
    Potrei dire una stupidaggine (non ho mai lavorato con CGI), ma negli header HTTP 1.1 viene specificato il nome dell'host di destinazione nell'header Host (in base al quale, tra l'altro, lo stesso Apache decide a quale virtual host ci si sta riferendo). Ora, dovresti poter recuperare questa informazione tramite le variabili ambiente del tuo programma CGI: in base a quello, puoi discriminare a quale dei due server era destinata la richiesta.

    (tra parentesi, ho aggiunto il tag C-CGI al titolo della discussione, come da regolamento di sezione )
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    E' un programma C che eseguo come cgi . Viene lanciato attraverso uno JavaScript che esegue una richiesta GET tramite Ajax

    $.ajax({
    type: 'GET',
    url: 'http://localhost/cgi-bin/programma.cgi',
    ...

    il programma funziona correttamente e la pagina che lo richiama tramite JavaScript si comporta come deve, volevo solo (in più) riconoscere chi ha fatto la richiesta. Non tramite l'IP in quanto vorrei distinguere le richieste che provengono dai due siti che stanno sulla stessa macchina e che quindi hanno lo stesso IP. Entrambi hanno accesso al cgi e possono richiamarlo, sempre con JavaScript.
    Spero di aver chiarito

    grazie

  6. #6
    Ciao MItaly

    ti chiedo scusa, ma effettivamente non sono stato molto chiaro nella mia esposizione. Il mio problema non è riconoscere il destinatario della richiesta, che come dici tu è nell'header nel campo Host, ma vorrei riconoscere il mittente. Potrei con l'IP se i due mittenti fossero su macchine diverse. ma purtroppo sono sullo stesso server.

    grazie

  7. #7
    Hmmm... prova a vedere l'header Referer, dovresti essere in grado di distinguere da che pagina è arrivata la richiesta.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Ciao, ora è più chiaro.
    La cosa più semplice secondo me è che aggiungi dei parametri in modo
    da differenziare le richieste.

    Quando richiedi tramite una pagina del sito1:
    $.ajax({
    type: 'GET',
    url: 'http://localhost/cgi-bin/programma.cgi?from=sito1',
    ...

    Quando richiedi tramite una pagina del sito2:
    $.ajax({
    type: 'GET',
    url: 'http://localhost/cgi-bin/programma.cgi?from=sito2',
    ...

    e poi nel tuo CGI leggi la query string con
    getenv("QUERY_STRING");

    Ciao.

  9. #9
    Si ci avevo pensato, però poi sito 2 potrebbe, malevolmente, fingersi sito 1!!!
    come leggo il campo Referer dell'header con C?

    grazie

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Beh neanche l'header Referer è sicuro.
    Posso crearmi una finta richiesta http e inviarla via netcat.
    Ancora una volta dovresti spiegare cosa stai cercando di fare.
    Ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.