noticias
Serverspace Tecnologías en los Emiratos Árabes Unidos: lanzamiento de Falconcloud
RF
30 de mayo de 2023
Actualizado junio 30, 2023

Protegiendo un Linux base de datos de inyección SQL

Bases de datos Debian Redes

Familiarícese con los conceptos básicos de seguridad de aplicaciones web y cómo prevenir ataques a sus bases de datos. Como parte de la instrucción, domine las habilidades de búsqueda de vulnerabilidades y aprenda a aplicar varios métodos de protección contra este tipo de ataques para garantizar la seguridad de sus aplicaciones.

SQL

SQL (Structured Query Language) es un lenguaje que tiene reglas de sintaxis estrictas en la construcción de consultas y realiza la función de administrar bases de datos relacionales. SQL es un lenguaje declarativo, pero su dirección principal son las bases de datos, puede acceder a él directamente o puede usar un programaramlenguaje ming con bibliotecas preinstaladas.

Inyecciones SQL

La primera y principal acción de seguridad en cualquier sistema es bastante simple, necesitamos actualizar el software de la máquina. En Debian, este comando será:

sudo apt update && sudo apt upgrade -y
Update machine packets
Captura de pantalla №1: Actualizar paquetes de máquina

Entonces usamos el Python biblioteca para solicitar nuestra base de datos. Descarga el paquete necesario:

pip install psycopg2
Install psycopg2
Captura de pantalla №2 — Instalar psycopg2

Si ve el mensaje de error "No se encontró el comando pip" en un Debian sistema>, ingrese este comando:

sudo apt-get install python3-pip

Si ve el mensaje de error "No se pudo encontrar una versión que cumpla con el requisito psycopg2", ingrese este comando:

pip install psycopg2-binary

Para asegurarse de que puede escribir CLI:

pip --version
Pip installation
Captura de pantalla №3 — Instalación de pip

ParamConsultas eterizadas

Supongamos que tiene una aplicación web que permite a los usuarios buscar productos por nombre. En lugar de usar una consulta como:

SELECT * FROM products WHERE name = 'searchterm';

You need to use a parameterized query that can predict input non–validation data like in this config:

SELECT * FROM products WHERE name = ?;

And pass the search term as a parameter, for example, present below:

import psycopg2

conn = psycopg2.connect(database="mydb", user="myuser", password="mypassword", host="localhost", port="5432")

cur = conn.cursor()

search_term = "apple"

cur.execute("SELECT * FROM products WHERE name = %s;", (search_term,))

rows = cur.fetchall()

for row in rows:
print(row)

conn.close()

first-method
Captura de pantalla №4 — Primer método

Validación de entrada

Supongamos que tiene un formulario donde los usuarios pueden enviar comentarios. Antes de insertar el comentario en la base de datos, valide la entrada para asegurarse de que solo contiene caracteres válidos. Por ejemplo, en PHP, puede usar la función preg_match para buscar caracteres alfanuméricos y spaces.

$comment = $_POST['comment'];

if (!preg_match('/^[a-zA-Z0-9 ]+$/', $comment)) {
// Invalid input, do something
} else {
// Insert comment into database
}

second_method
Captura de pantalla №5 — Segundo método

Acceso con privilegios mínimos

Tiene una base de datos con varias tablas y desea crear un usuario que solo pueda leer datos de una tabla. Cree un nuevo usuario y concédale solo privilegios SELECT en esa tabla. Ejemplo de visualización a continuación:

CREATE USER readonly_user;
GRANT SELECT ON products TO readonly_user;

Manejo de errores

Supongamos que tiene un formulario de inicio de sesión donde los usuarios pueden ingresar su nombre de usuario y contraseña. Si hay un error, como un nombre de usuario o una contraseña incorrectos, muestre un mensaje de error genérico en lugar de uno detallado. Por ejemplo, en Java, puede capturar la SQLException y mostrar un mensaje de error genérico.

try {
// Execute query to check if the username and password match
} catch (SQLException e) {
System.out.println("Error: Could not log in.");
}
third-method
Captura de pantalla №6 — Tercer método

Protección contra la inyección de SQL

En conclusión, la seguridad de las aplicaciones web es un aspecto crucial del desarrollo de software. Ataques de inyección SQL son uno de los tipos más comunes de ataques a bases de datos que pueden causar daños significativos a una organización. Para evitar este tipo de ataques, es importante aprender los principios básicos del lenguaje SQL y sus vulnerabilidades, estudiar técnicas de inyección de SQL y analizar ejemplos de código que contienen vulnerabilidades de inyección de SQL.

Además, los desarrolladores deben aplicar varios métodos de protección contra Inyecciones SQL, como usar paramconsultas eterizadas, validación de entrada, acceso con privilegios mínimos y manejo de errores. Al implementar estas técnicas, los desarrolladores pueden garantizar la seguridad de sus aplicaciones y proteger los datos confidenciales del acceso no autorizado. Es esencial mantenerse actualizado con las últimas medidas de seguridad y mantener el software actualizado para evitar posibles vulnerabilidades.

Votar:
5 de 5
Calificación promedio: 5
Calificado por: 1
1101 CT Ámsterdam Países Bajos, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300

También te podría interesar...

Utilizamos cookies para hacer que su experiencia en el Serverspace mejor. Al continuar navegando en nuestro sitio web, usted acepta nuestros
Uso de Cookies y Política de Privacidad.