¿Cómo otorgarle a alguien acceso a un archivo, en un sitio web, de forma segura sin depender de una sola contraseña?

0

He creado un formulario de donación en línea para una biblioteca pública. El formulario recopila nombres, números de teléfono, correos electrónicos, direcciones (mucha información personal). El formulario se envía a un script PHP que guarda la información en un archivo CSV y envía al usuario a un formulario de pago de PayPal por el monto de la donación que ingresaron. Las personas no pueden acceder al archivo CSV porque hay un archivo .htaccess con lo siguiente:

Order Allow,Deny
Deny from all

La gente de la biblioteca desea poder acceder a la información para enviar notas de agradecimiento y para los registros.

¿Cómo puedo conceder a alguien acceso a un archivo, en un sitio web, de forma segura sin depender de una sola contraseña?

Pensé en utilizar la autenticación básica, pero se basa en una única contraseña que puede ser fácilmente forzada o demasiado complicada de recordar. Además, podría ser socialmente diseñado u olvidado.

Tenga en cuenta que no tengo acceso de shell al servidor ni a los archivos de configuración de Apache.

    
pregunta JBis 02.04.2018 - 22:06
fuente

2 respuestas

3

La respuesta canónica sería: utilizar fichas criptográficas. En algunos países u organizaciones, dichos tokens o tarjetas de identificación ya se han emitido y están ampliamente disponibles.

Pero dado el contexto, probablemente debería considerar mecanismos de entrega alternativos. Por ejemplo, un correo electrónico nocturno automatizado a un bibliotecario, con las entradas relevantes recién agregadas, no necesita introducir ningún nuevo mecanismo de autenticación, tiene un costo de mantenimiento y un perfil de ataque bastante limitados, y generalmente bien entendidos, encaja bien con muchos Los estilos modernos de la rutina de la oficina, y tiene solo una parte móvil que puede ser empujada directamente por un atacante desde el extremo del sitio web. Debería considerar si el correo electrónico necesita estar cifrado o no, y qué campos son relevantes en su contexto, por supuesto.

    
respondido por el dig 02.04.2018 - 23:39
fuente
1

Simple: Utilice el número de IP de la biblioteca en cuestión para autorizar el acceso.

Sin embargo, la Orden / Denegación se deprecia y necesita usar lo siguiente (con el acceso IP agregado) en el archivo .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>

También asegúrese de que estas IP no se asignen a las terminales públicas a menos que las terminales públicas estén bien cerradas. En ese caso, exántenlos. Con algo similar 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>

Si el apache está ejecutando una versión anterior, y debe usar las directivas order / allow / deny, use:

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

Tenga en cuenta que debido a la "Orden Permitir, Denegar" no necesita una Denegación de todos, lo que incondicionalmente denegaría la solicitud incluso si algunas IP coinciden. (lo contrario, a permitir por defecto, es Denegar orden, Permitir).

    
respondido por el sebastian nielsen 02.04.2018 - 22:27
fuente

Lea otras preguntas en las etiquetas