CGI - CGI en linux que autentique usuario

 
Vista:

CGI en linux que autentique usuario

Publicado por Claudin (1 intervención) el 23/01/2001 00:00:00
Necesito saber si alguien me sabe decir que funcion debo agregar el un script CGI hecho en C, para lograr autenticar contra el archivo passwd o shadow. He revisado algunas funciones pero no puedo encontrar cual lo hace. El tema es ingresar usuario y contraseña en un formulario, utilizar el metodo post y que el script me valide contra el Linux.
Desde ya muchas gracias y exitos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Autenticación de usuarios en C para Linux

Publicado por Alejandro (140 intervenciones) el 22/08/2023 20:13:33
Para autenticar usuarios contra los archivos "passwd" o "shadow" en Linux en un script CGI hecho en C, generalmente se utiliza la función `getpwnam()` para acceder a la información del usuario desde el archivo "passwd". Sin embargo, debido a que los archivos "shadow" contienen información sensible como contraseñas encriptadas, no se recomienda acceder directamente a ellos. En su lugar, puedes utilizar la función `getspnam()` para acceder a la información del usuario desde el archivo "shadow" de manera segura.

A continuación te muestro un ejemplo básico de cómo podrías hacer esto en un script CGI en C:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <shadow.h>
#include <crypt.h>
 
int main() {
    printf("Content-type: text/html\n\n");
 
    char *user = getenv("REMOTE_USER");
    char *password = getenv("REMOTE_PASSWORD");
 
    if (user && password) {
        struct spwd *shadow_entry = getspnam(user);
 
        if (shadow_entry) {
            char *encrypted_password = crypt(password, shadow_entry->sp_pwdp);
 
            if (strcmp(encrypted_password, shadow_entry->sp_pwdp) == 0) {
                printf("Autenticación exitosa para el usuario: %s\n", user);
            } else {
                printf("Autenticación fallida\n");
            }
        } else {
            printf("Usuario no encontrado\n");
        }
    } else {
        printf("Por favor, ingrese usuario y contraseña\n");
    }
 
    return 0;
}

Nota: Este es solo un ejemplo básico y no incluye manejo de errores robusto ni manejo de contraseñas encriptadas con algoritmos más seguros como bcrypt. Para una implementación más segura y completa, se recomienda utilizar bibliotecas y métodos de autenticación más avanzados.

Recuerda que el manejo de contraseñas y autenticación es un asunto crítico de seguridad. Asegúrate de implementar prácticas seguras y utilizar métodos de encriptación sólidos al tratar con contraseñas de usuarios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar