Come consentire a qualcuno l'accesso a un file, su un sito Web, in modo sicuro senza fare affidamento su una singola password?

0

Ho creato un modulo di donazione online per una biblioteca pubblica. Il modulo raccoglie nomi, numeri di telefono, e-mail, indirizzi (molte informazioni personali). Il modulo viene inviato a uno script PHP che salva le informazioni nel file CSV e inoltra l'utente a un modulo di pagamento PayPal per l'importo della donazione inserito. Le persone non riescono ad accedere al file CSV perché esiste un file .htaccess con il seguente:

Order Allow,Deny
Deny from all

Le persone della biblioteca vorrebbero poter accedere alle informazioni per inviare note di ringraziamento e per lì i record.

Come posso dare a qualcuno l'accesso a un file, su un sito web, in modo sicuro senza fare affidamento su una singola password?

Ho pensato di usare l'autenticazione di base, ma si basa su una singola password che può essere facilmente forzata o troppo complicata da ricordare. Inoltre, potrebbe essere socialmente progettato o dimenticato.

Tieni presente che non ho accesso alla shell al server o ai file di configurazione di Apache.

    
posta JBis 02.04.2018 - 22:06
fonte

2 risposte

3

La risposta canonica sarebbe - utilizzando token crittografici. In alcuni paesi o organizzazioni, tali token o carte d'identità potrebbero già essere stati pubblicati e ampiamente disponibili.

Ma dato il contesto, dovresti probabilmente considerare meccanismi alternativi di consegna. Ad esempio, un'e-mail notturna automatica a un bibliotecario, con le voci pertinenti appena aggiunte al suo interno, non ha bisogno di introdurre nuovi meccanismi di autenticazione, ha un costo e un profilo di attacco abbastanza limitati - e generalmente ben compreso - e si integra bene con molti stili moderni di routine di ufficio e ha solo una parte mobile che può essere direttamente colpita da un utente malintenzionato dal sito web. Dovresti considerare se l'email deve essere crittografata o meno, e quali campi sono rilevanti nel suo contesto, ovviamente.

    
risposta data 02.04.2018 - 23:39
fonte
1

Semplice: Utilizza il numero IP della libreria in questione, per autorizzarne l'accesso.

Tuttavia, Order / Deny è ammortizzato ed è necessario utilizzare quanto segue (con l'accesso IP aggiunto) nel file .htaccess:

<RequireAny>
    Require ip XX.XX.XX.XX/XX  #LIBRARY's IP1
    Require ip XX.XX.XX.XX/XX  #LIBRARY's IP2
    Require ip XX.XX.XX.XX/XX  #LIBRARY's IP3
</RequireAny>

Assicurati anche che questi IP non siano mappati ai terminali pubblici a meno che i terminali pubblici non siano bloccati saldamente. In tal caso, li esenti. Con qualcosa di simile a:

<RequireAll>
  Require not ip XX.XX.XX.XX/XX #LIBRARY's PUBLIC TERMINAL
  <RequireAny>
    Require ip XX.XX.XX.XX/XX  #LIBRARY's IP1
    Require ip XX.XX.XX.XX/XX  #LIBRARY's IP2
    Require ip XX.XX.XX.XX/XX  #LIBRARY's IP3
  </RequireAny>
</RequireAll>

Se l'apache sta eseguendo una vecchia versione, e devi usare le direttive order / allow / deny, usa:

Order Allow,Deny
Allow from XX.XX.XX.XX/XX #LIBRARY's IP1
Allow from XX.XX.XX.XX/XX #LIBRARY's IP2
Allow from XX.XX.XX.XX/XX #LIBRARY's IP3
Deny from XX.XX.XX.XX/XX #LIBRARY's PUBLIC TERMINAL

Si noti che a causa di "Consenti ordine, Nega" non è necessario negare tutto, che negherebbe incondizionatamente la richiesta anche se alcuni IP corrispondono. (il contrario, per impostazione predefinita, è Nega ordine, Consenti).

    
risposta data 02.04.2018 - 22:27
fonte

Leggi altre domande sui tag