<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://darfe.es/ciberwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Warid.F</id>
	<title>CiberWiki - Contribuciones del usuario [es]</title>
	<link rel="self" type="application/atom+xml" href="https://darfe.es/ciberwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Warid.F"/>
	<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=Especial:Contribuciones/Warid.F"/>
	<updated>2026-10-17T19:28:01Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=SQLite&amp;diff=2930</id>
		<title>SQLite</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=SQLite&amp;diff=2930"/>
		<updated>2026-04-16T22:43:47Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SQLite =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SQLite&#039;&#039;&#039; es un sistema de gestión de bases de datos relacional (RDBMS) ligero, embebido y sin servidor, implementado como una biblioteca en C. Fue creado por D. Richard Hipp en el año 2000 y es de dominio público.&lt;br /&gt;
&lt;br /&gt;
A diferencia de otros motores como MySQL o PostgreSQL, SQLite no utiliza arquitectura cliente-servidor, sino que funciona directamente dentro de la aplicación que lo usa.&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Sin servidor (serverless)&#039;&#039;&#039;: no requiere instalación ni configuración de un servicio.&lt;br /&gt;
* &#039;&#039;&#039;Archivo único&#039;&#039;&#039;: la base de datos completa se almacena en un solo archivo.&lt;br /&gt;
* &#039;&#039;&#039;Ligero&#039;&#039;&#039;: tamaño muy reducido.&lt;br /&gt;
* &#039;&#039;&#039;Portable&#039;&#039;&#039;: funciona en múltiples sistemas operativos sin cambios.&lt;br /&gt;
* &#039;&#039;&#039;ACID&#039;&#039;&#039;: garantiza atomicidad, consistencia, aislamiento y durabilidad.&lt;br /&gt;
* &#039;&#039;&#039;Embebido&#039;&#039;&#039;: se integra directamente en la aplicación.&lt;br /&gt;
* &#039;&#039;&#039;Transaccional&#039;&#039;&#039;: soporta transacciones completas.&lt;br /&gt;
* &#039;&#039;&#039;Multiplataforma&#039;&#039;&#039;: Windows, Linux, macOS, Android, iOS.&lt;br /&gt;
&lt;br /&gt;
== Arquitectura ==&lt;br /&gt;
&lt;br /&gt;
SQLite no sigue el modelo cliente-servidor:&lt;br /&gt;
&lt;br /&gt;
* La aplicación accede directamente al archivo de base de datos.&lt;br /&gt;
* No hay procesos en segundo plano.&lt;br /&gt;
* Todo se maneja mediante llamadas a la biblioteca SQLite.&lt;br /&gt;
&lt;br /&gt;
== Funcionamiento ==&lt;br /&gt;
&lt;br /&gt;
SQLite ejecuta sentencias SQL estándar sobre un archivo local.&lt;br /&gt;
&lt;br /&gt;
Operaciones principales:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CREATE&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;INSERT&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;UPDATE&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE usuarios (&lt;br /&gt;
    id INTEGER PRIMARY KEY,&lt;br /&gt;
    nombre TEXT,&lt;br /&gt;
    edad INTEGER&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
INSERT INTO usuarios (nombre, edad)&lt;br /&gt;
VALUES (&#039;Juan&#039;, 25);&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM usuarios;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tipos de datos ==&lt;br /&gt;
&lt;br /&gt;
SQLite usa tipado dinámico. Tipos principales:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;NULL&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;INTEGER&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;REAL&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;TEXT&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;BLOB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ventajas ==&lt;br /&gt;
&lt;br /&gt;
* No requiere instalación&lt;br /&gt;
* Muy rápido en local&lt;br /&gt;
* Bajo consumo de recursos&lt;br /&gt;
* Fácil de transportar&lt;br /&gt;
* Ideal para apps pequeñas o embebidas&lt;br /&gt;
&lt;br /&gt;
== Desventajas ==&lt;br /&gt;
&lt;br /&gt;
* Concurrencia limitada&lt;br /&gt;
* No escala bien a sistemas grandes&lt;br /&gt;
* Sin gestión avanzada de usuarios&lt;br /&gt;
* Bloqueo de escritura a nivel de archivo&lt;br /&gt;
&lt;br /&gt;
== Casos de uso ==&lt;br /&gt;
&lt;br /&gt;
* Aplicaciones móviles&lt;br /&gt;
* Software de escritorio&lt;br /&gt;
* Sistemas embebidos / IoT&lt;br /&gt;
* Navegadores&lt;br /&gt;
* Prototipos&lt;br /&gt;
&lt;br /&gt;
== Comparación ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Característica !! SQLite !! PostgreSQL / MySQL&lt;br /&gt;
|-&lt;br /&gt;
| Arquitectura || Embebida || Cliente-servidor&lt;br /&gt;
|-&lt;br /&gt;
| Instalación || No || Sí&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidad || Baja || Alta&lt;br /&gt;
|-&lt;br /&gt;
| Concurrencia || Limitada || Alta&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comandos útiles ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;.open archivo.db&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;.tables&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;.schema&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;.exit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Seguridad ==&lt;br /&gt;
&lt;br /&gt;
SQLite no tiene autenticación interna. Depende de:&lt;br /&gt;
&lt;br /&gt;
* Permisos del sistema operativo&lt;br /&gt;
* Encriptación externa (ej: SQLCipher)&lt;br /&gt;
&lt;br /&gt;
== Licencia ==&lt;br /&gt;
&lt;br /&gt;
Dominio público. Uso libre sin restricciones.&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=SQLite&amp;diff=2929</id>
		<title>SQLite</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=SQLite&amp;diff=2929"/>
		<updated>2026-04-16T22:42:22Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: Página creada con «&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; SQLite  &amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;SQLite** es un sistema de gestión de bases de datos relacional (RDBMS) ligero, embebido y sin servidor, implementado como una biblioteca en C. Fue creado por D. Richard Hipp en el año 2000 y es de dominio público.  A diferencia de otros motores como MySQL o PostgreSQL, SQLite no utiliza arquitectura cliente-servidor, sino que funciona directamente dentro de la aplicación que lo usa.  ---  &amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Caracterí…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; SQLite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;SQLite** es un sistema de gestión de bases de datos relacional (RDBMS) ligero, embebido y sin servidor, implementado como una biblioteca en C. Fue creado por D. Richard Hipp en el año 2000 y es de dominio público.&lt;br /&gt;
&lt;br /&gt;
A diferencia de otros motores como MySQL o PostgreSQL, SQLite no utiliza arquitectura cliente-servidor, sino que funciona directamente dentro de la aplicación que lo usa.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Características&lt;br /&gt;
&lt;br /&gt;
- **Sin servidor (serverless)**: no requiere instalación ni configuración de un servicio.&lt;br /&gt;
&lt;br /&gt;
- **Archivo único**: la base de datos completa se almacena en un solo archivo.&lt;br /&gt;
&lt;br /&gt;
- **Ligero**: tamaño muy reducido.&lt;br /&gt;
&lt;br /&gt;
- **Portable**: funciona en múltiples sistemas operativos sin cambios.&lt;br /&gt;
&lt;br /&gt;
- **ACID**: garantiza atomicidad, consistencia, aislamiento y durabilidad.&lt;br /&gt;
&lt;br /&gt;
- **Embebido**: se integra directamente en la aplicación.&lt;br /&gt;
&lt;br /&gt;
- **Transaccional**: soporta transacciones completas.&lt;br /&gt;
&lt;br /&gt;
- **Multiplataforma**: Windows, Linux, macOS, Android, iOS.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Arquitectura&lt;br /&gt;
&lt;br /&gt;
SQLite no sigue el modelo cliente-servidor:&lt;br /&gt;
&lt;br /&gt;
- La aplicación accede directamente al archivo de base de datos.&lt;br /&gt;
&lt;br /&gt;
- No hay procesos en segundo plano.&lt;br /&gt;
&lt;br /&gt;
- Todo se maneja mediante llamadas a la biblioteca SQLite.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Funcionamiento&lt;br /&gt;
&lt;br /&gt;
SQLite ejecuta sentencias SQL estándar sobre un archivo local.&lt;br /&gt;
&lt;br /&gt;
Operaciones principales:&lt;br /&gt;
&lt;br /&gt;
- `CREATE`&lt;br /&gt;
&lt;br /&gt;
- `INSERT`&lt;br /&gt;
&lt;br /&gt;
- `SELECT`&lt;br /&gt;
&lt;br /&gt;
- `UPDATE`&lt;br /&gt;
&lt;br /&gt;
- `DELETE`&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
```sql&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE usuarios (&lt;br /&gt;
&lt;br /&gt;
    id INTEGER PRIMARY KEY,&lt;br /&gt;
&lt;br /&gt;
    nombre TEXT,&lt;br /&gt;
&lt;br /&gt;
    edad INTEGER&lt;br /&gt;
&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
INSERT INTO usuarios (nombre, edad)&lt;br /&gt;
&lt;br /&gt;
VALUES (&#039;Juan&#039;, 25);&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM usuarios;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Tipos de datos&lt;br /&gt;
&lt;br /&gt;
SQLite usa tipado dinámico. Tipos principales:&lt;br /&gt;
&lt;br /&gt;
- **NULL**&lt;br /&gt;
&lt;br /&gt;
- **INTEGER**&lt;br /&gt;
&lt;br /&gt;
- **REAL**&lt;br /&gt;
&lt;br /&gt;
- **TEXT**&lt;br /&gt;
&lt;br /&gt;
- **BLOB**&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Ventajas&lt;br /&gt;
&lt;br /&gt;
- No requiere instalación&lt;br /&gt;
&lt;br /&gt;
- Muy rápido en local&lt;br /&gt;
&lt;br /&gt;
- Bajo consumo de recursos&lt;br /&gt;
&lt;br /&gt;
- Fácil de transportar&lt;br /&gt;
&lt;br /&gt;
- Ideal para apps pequeñas o embebidas&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Desventajas&lt;br /&gt;
&lt;br /&gt;
- Concurrencia limitada&lt;br /&gt;
&lt;br /&gt;
- No escala bien a sistemas grandes&lt;br /&gt;
&lt;br /&gt;
- Sin gestión avanzada de usuarios&lt;br /&gt;
&lt;br /&gt;
- Bloqueo de escritura a nivel de archivo&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Casos de uso&lt;br /&gt;
&lt;br /&gt;
- Aplicaciones móviles&lt;br /&gt;
&lt;br /&gt;
- Software de escritorio&lt;br /&gt;
&lt;br /&gt;
- Sistemas embebidos / IoT&lt;br /&gt;
&lt;br /&gt;
- Navegadores&lt;br /&gt;
&lt;br /&gt;
- Prototipos&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Comparación&lt;br /&gt;
&lt;br /&gt;
| Característica | SQLite | PostgreSQL / MySQL |&lt;br /&gt;
&lt;br /&gt;
|--------------|--------|--------------------|&lt;br /&gt;
&lt;br /&gt;
| Arquitectura | Embebida | Cliente-servidor |&lt;br /&gt;
&lt;br /&gt;
| Instalación | No | Sí |&lt;br /&gt;
&lt;br /&gt;
| Escalabilidad | Baja | Alta |&lt;br /&gt;
&lt;br /&gt;
| Concurrencia | Limitada | Alta |&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Comandos útiles&lt;br /&gt;
&lt;br /&gt;
- `.open archivo.db`&lt;br /&gt;
&lt;br /&gt;
- `.tables`&lt;br /&gt;
&lt;br /&gt;
- `.schema`&lt;br /&gt;
&lt;br /&gt;
- `.exit`&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Seguridad&lt;br /&gt;
&lt;br /&gt;
SQLite no tiene autenticación interna. Depende de:&lt;br /&gt;
&lt;br /&gt;
- Permisos del sistema operativo&lt;br /&gt;
&lt;br /&gt;
- Encriptación externa (ej: SQLCipher)&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt; Licencia&lt;br /&gt;
&lt;br /&gt;
Dominio público. Uso libre sin restricciones.&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=Postgres&amp;diff=2629</id>
		<title>Postgres</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=Postgres&amp;diff=2629"/>
		<updated>2025-11-11T18:34:39Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: Extensión de contenido&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Logo PostgreSQL.png|thumb|right|200px|https://www.postgresql.org/]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PostgreSQL&#039;&#039;&#039; o también llamado &#039;&#039;&#039;Postgres&#039;&#039;&#039; es un potente sistema de base de datos objeto-relacional de código abierto con más de 35 años de desarrollo activo que le ha valido una sólida reputación por su fiabilidad, robustez de características y rendimiento.&lt;br /&gt;
&lt;br /&gt;
Existe una gran cantidad de información que describe cómo instalar y utilizar PostgreSQL a través de la documentación oficial. La comunidad de código abierto proporciona muchos lugares útiles para familiarizarse con PostgreSQL, descubrir cómo funciona y encontrar oportunidades de carrera.&lt;br /&gt;
&lt;br /&gt;
= PostgreSQL en Ciberseguridad =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PostgreSQL&#039;&#039;&#039; es un sistema de gestión de bases de datos relacional y orientado a objetos (ORDBMS) ampliamente utilizado en entornos donde la integridad, el rendimiento y la seguridad son fundamentales.&lt;br /&gt;
&lt;br /&gt;
Su diseño modular, su enfoque en el cumplimiento de estándares y la capacidad de extenderlo con módulos personalizados lo convierten en una base sólida para proyectos de seguridad ofensiva y defensiva.&lt;br /&gt;
&lt;br /&gt;
== Arquitectura general ==&lt;br /&gt;
&lt;br /&gt;
PostgreSQL se basa en una arquitectura cliente-servidor, donde cada conexión activa se maneja mediante un proceso independiente. El motor principal gestiona la concurrencia, el almacenamiento y la recuperación mediante un mecanismo de registro previo de escritura (Write Ahead Logging, WAL), que garantiza la consistencia incluso ante fallos del sistema.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
# Estructura simplificada de PostgreSQL&lt;br /&gt;
- postmaster (proceso principal)&lt;br /&gt;
- backend processes (uno por conexión)&lt;br /&gt;
- wal writer (manejo de transacciones)&lt;br /&gt;
- bgwriter (escritura en segundo plano)&lt;br /&gt;
- autovacuum launcher (mantenimiento automático)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este diseño multiproceso, en lugar de multihilo, ofrece un aislamiento más seguro entre sesiones y reduce el riesgo de corrupción de memoria compartida, algo esencial en entornos con múltiples usuarios o scripts automatizados.&lt;br /&gt;
&lt;br /&gt;
== Seguridad interna ==&lt;br /&gt;
&lt;br /&gt;
PostgreSQL incorpora múltiples capas de seguridad:&lt;br /&gt;
* &#039;&#039;&#039;Autenticación múltiple:&#039;&#039;&#039; admite contraseñas, certificados SSL, GSSAPI, LDAP y autenticación por IP.&lt;br /&gt;
* &#039;&#039;&#039;Control de acceso granular:&#039;&#039;&#039; a través de roles, herencia de privilegios y políticas de seguridad a nivel de fila (RLS - Row Level Security).&lt;br /&gt;
* &#039;&#039;&#039;Cifrado:&#039;&#039;&#039; soporte nativo de SSL/TLS y posibilidad de cifrar datos sensibles mediante extensiones como `pgcrypto`.&lt;br /&gt;
* &#039;&#039;&#039;Auditoría:&#039;&#039;&#039; integración con `pgaudit` para registrar eventos de autenticación, consultas y operaciones críticas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
-- Ejemplo: activación de seguridad por fila&lt;br /&gt;
ALTER TABLE registros ENABLE ROW LEVEL SECURITY;&lt;br /&gt;
CREATE POLICY solo_propietario ON registros&lt;br /&gt;
USING (usuario = current_user);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto garantiza que incluso un atacante con acceso parcial a la base no pueda ver datos pertenecientes a otros usuarios, aplicando aislamiento lógico dentro del propio SGBD.&lt;br /&gt;
&lt;br /&gt;
== Extensibilidad y automatización ==&lt;br /&gt;
&lt;br /&gt;
Una de las mayores fortalezas de PostgreSQL es su capacidad de extenderse.  &lt;br /&gt;
Permite crear:&lt;br /&gt;
* Funciones en múltiples lenguajes (SQL, PL/pgSQL, Python, C, Perl, etc.).&lt;br /&gt;
* Tipos de datos definidos por el usuario.&lt;br /&gt;
* Módulos personalizados para cifrado, auditoría o análisis.&lt;br /&gt;
&lt;br /&gt;
Esto lo hace ideal para sistemas de detección, correlación de logs o sandboxing de datos sensibles. &lt;br /&gt;
&lt;br /&gt;
Ejemplo de función definida en Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
CREATE FUNCTION hash_password(pwd TEXT)&lt;br /&gt;
RETURNS TEXT AS $$&lt;br /&gt;
import hashlib&lt;br /&gt;
return hashlib.sha256(pwd.encode()).hexdigest()&lt;br /&gt;
$$ LANGUAGE plpython3u;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rendimiento y mantenimiento ==&lt;br /&gt;
&lt;br /&gt;
PostgreSQL implementa estrategias de optimización como:&lt;br /&gt;
* &#039;&#039;&#039;VACUUM&#039;&#039;&#039; y &#039;&#039;&#039;AUTOVACUUM&#039;&#039;&#039; para limpiar registros muertos.&lt;br /&gt;
* &#039;&#039;&#039;Query planner&#039;&#039;&#039; avanzado con índices B-tree, Hash, GIN y GiST.&lt;br /&gt;
* &#039;&#039;&#039;Particionamiento nativo&#039;&#039;&#039; y replicación lógica.&lt;br /&gt;
&lt;br /&gt;
Estas capacidades permiten mantener grandes volúmenes de información sin degradación significativa, lo que lo hace apto para entornos donde se procesan logs, registros de red o métricas de seguridad en tiempo real.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL frente a SQL estándar ==&lt;br /&gt;
&lt;br /&gt;
Mientras que SQL describe el lenguaje y las reglas básicas de manipulación de datos, PostgreSQL representa una implementación que &#039;&#039;&#039;trasciende el estándar&#039;&#039;&#039;.  SQL define el “qué”, pero PostgreSQL define el “cómo” con:&lt;br /&gt;
* Mayor cumplimiento y extensión del estándar ANSI.&lt;br /&gt;
* Seguridad interna granular (RLS, roles jerárquicos).&lt;br /&gt;
* Mecanismos avanzados de recuperación (WAL).&lt;br /&gt;
* Modularidad y extensibilidad a bajo nivel.&lt;br /&gt;
* Integración nativa con lenguajes de scripting.&lt;br /&gt;
&lt;br /&gt;
En resumen, SQL es el lenguaje, PostgreSQL es la &#039;&#039;&#039;plataforma&#039;&#039;&#039;. Un experto en ciberseguridad que domine PostgreSQL no solo entiende consultas, sino también políticas, cifrado y auditoría a nivel estructural.&lt;br /&gt;
[[Categoría:Bases de datos]]&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=NoSQL&amp;diff=2628</id>
		<title>NoSQL</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=NoSQL&amp;diff=2628"/>
		<updated>2025-11-01T14:31:48Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: Arreglo de categoria&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NoSQL =&lt;br /&gt;
&#039;&#039;&#039;NoSQL&#039;&#039;&#039; (&#039;&#039;Not Only SQL&#039;&#039;) es un conjunto de sistemas de gestión de &#039;&#039;&#039;BD&#039;&#039;&#039; (bases de datos) diseñados para manejar grandes volúmenes de datos no estructurados o semiestructurados.  A diferencia de los sistemas basados en &#039;&#039;&#039;SQL&#039;&#039;&#039;, los motores NoSQL no dependen de un esquema rígido de tablas y relaciones, lo que les otorga mayor flexibilidad, escalabilidad y rendimiento en entornos distribuidos.&lt;br /&gt;
&lt;br /&gt;
En el ámbito de la &#039;&#039;&#039;seguridad&#039;&#039;&#039;, comprender el funcionamiento de NoSQL es crucial para proteger &#039;&#039;apps&#039;&#039;, &#039;&#039;srv&#039;&#039; y &#039;&#039;API&#039;&#039; modernas que utilizan bases de datos no relacionales.&lt;br /&gt;
&lt;br /&gt;
== Características principales ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Sin esquema fijo:&#039;&#039;&#039; Los datos pueden almacenarse en distintos formatos (documentos, grafos, pares clave-valor o columnas).&lt;br /&gt;
* &#039;&#039;&#039;Escalabilidad horizontal:&#039;&#039;&#039; Los datos se distribuyen entre múltiples &#039;&#039;srv&#039;&#039; o nodos, favoreciendo la expansión del sistema sin pérdida de rendimiento.&lt;br /&gt;
* &#039;&#039;&#039;Alto rendimiento:&#039;&#039;&#039; Optimizado para operaciones de lectura/escritura masiva y consultas en tiempo real.&lt;br /&gt;
* &#039;&#039;&#039;Alta disponibilidad (HA):&#039;&#039;&#039; Mediante replicación y redundancia entre nodos.&lt;br /&gt;
* &#039;&#039;&#039;Flexibilidad:&#039;&#039;&#039; Ideal para &#039;&#039;apps&#039;&#039; con estructuras dinámicas y datos cambiantes.&lt;br /&gt;
&lt;br /&gt;
== Tipos de BD NoSQL ==&lt;br /&gt;
&lt;br /&gt;
===== 1. Clave-Valor =====&lt;br /&gt;
&lt;br /&gt;
* Almacenan información como pares de &#039;&#039;&#039;clave → valor&#039;&#039;&#039;.&lt;br /&gt;
* Ideales para &#039;&#039;cache&#039;&#039;, sesiones de &#039;&#039;usr&#039;&#039; o &#039;&#039;cfg&#039;&#039; temporales.&lt;br /&gt;
* Ejemplos: &#039;&#039;&#039;Redis&#039;&#039;&#039;, &#039;&#039;&#039;Riak&#039;&#039;&#039;, &#039;&#039;&#039;Amazon DynamoDB&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
SET usr:1 &amp;quot;Darfe&amp;quot;&lt;br /&gt;
GET usr:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 2. Documentales =====&lt;br /&gt;
&lt;br /&gt;
* Los datos se almacenan en documentos tipo &#039;&#039;&#039;JSON&#039;&#039;&#039; o &#039;&#039;&#039;BSON&#039;&#039;&#039;.&lt;br /&gt;
* Permiten consultas complejas sin esquema predefinido.&lt;br /&gt;
* Usadas en &#039;&#039;apps&#039;&#039; web, móviles y &#039;&#039;microservicios&#039;&#039;.&lt;br /&gt;
* Ejemplos: &#039;&#039;&#039;MongoDB&#039;&#039;&#039;, &#039;&#039;&#039;CouchDB&#039;&#039;&#039;, &#039;&#039;&#039;Firestore&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;_id&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;nombre&amp;quot;: &amp;quot;Darfe&amp;quot;,&lt;br /&gt;
  &amp;quot;correo&amp;quot;: &amp;quot;user@darfe.es&amp;quot;,&lt;br /&gt;
  &amp;quot;rol&amp;quot;: &amp;quot;admin&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 3. Columnar =====&lt;br /&gt;
&lt;br /&gt;
* Organizan la información por columnas en lugar de filas.&lt;br /&gt;
* Son ideales para análisis de datos y consultas masivas.&lt;br /&gt;
* Ejemplos: &#039;&#039;&#039;Cassandra&#039;&#039;&#039;, &#039;&#039;&#039;HBase&#039;&#039;&#039;, &#039;&#039;&#039;ScyllaDB&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE usuarios (&lt;br /&gt;
    id UUID PRIMARY KEY,&lt;br /&gt;
    nombre TEXT,&lt;br /&gt;
    edad INT&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 4. Grafos =====&lt;br /&gt;
&lt;br /&gt;
* Representan relaciones mediante nodos (entidades) y aristas (enlaces).&lt;br /&gt;
* Ideales para &#039;&#039;apps&#039;&#039; de redes sociales, análisis de relaciones o motores de recomendación.&lt;br /&gt;
* Ejemplos: &#039;&#039;&#039;Neo4j&#039;&#039;&#039;, &#039;&#039;&#039;ArangoDB&#039;&#039;&#039;, &#039;&#039;&#039;OrientDB&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
CREATE (a:Usuario {nombre: &amp;quot;Darfe&amp;quot;})-[:SIGUE]-&amp;gt;(b:Usuario {nombre: &amp;quot;Lía&amp;quot;})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ventajas y Desventajas ==&lt;br /&gt;
&#039;&#039;&#039;Ventajas:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Escalabilidad masiva y alta disponibilidad.&lt;br /&gt;
* Flexibilidad en el diseño de datos.&lt;br /&gt;
* Ideal para sistemas distribuidos y de alta concurrencia.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desventajas:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Falta de estandarización (cada motor usa su propia sintaxis o API).&lt;br /&gt;
* Pérdida parcial de las propiedades ACID.&lt;br /&gt;
* Complejidad en la replicación y la &#039;&#039;seguridad&#039;&#039; avanzada.&lt;br /&gt;
&lt;br /&gt;
== Seguridad y Buenas Prácticas ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Validación de entradas:&#039;&#039;&#039; Evitar inyecciones NoSQL limitando los operadores permitidos.&lt;br /&gt;
* &#039;&#039;&#039;Control de permisos:&#039;&#039;&#039; Asignar privilegios mínimos a los &#039;&#039;usr&#039;&#039; y &#039;&#039;srv&#039;&#039; de base de datos.&lt;br /&gt;
* &#039;&#039;&#039;Autenticación y cifrado:&#039;&#039;&#039; Activar TLS y autenticación obligatoria.&lt;br /&gt;
* &#039;&#039;&#039;Auditoría constante:&#039;&#039;&#039; Monitorear accesos y operaciones críticas.&lt;br /&gt;
* &#039;&#039;&#039;Evitar exposición pública:&#039;&#039;&#039; No dejar puertos abiertos sin control (ej. :27017 en MongoDB).&lt;br /&gt;
&lt;br /&gt;
== Inyección NoSQL ==&lt;br /&gt;
Una &#039;&#039;&#039;inyección NoSQL&#039;&#039;&#039; ocurre cuando un atacante manipula una consulta construida dinámicamente (por ejemplo, en formato JSON), logrando acceder o modificar datos sin autorización.&lt;br /&gt;
&lt;br /&gt;
Ejemplo de vulnerabilidad:&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;usr&amp;quot;: {&amp;quot;$ne&amp;quot;: null},&lt;br /&gt;
  &amp;quot;pass&amp;quot;: {&amp;quot;$ne&amp;quot;: null}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;Esto fuerza la coincidencia de cualquier registro, permitiendo acceso no autorizado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prevención:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Usar consultas parametrizadas o funciones de validación seguras.&lt;br /&gt;
* Sanitizar la entrada del &#039;&#039;usr&#039;&#039; y rechazar operadores como `$ne`, `$gt`, `$where`.&lt;br /&gt;
* Aplicar autenticación robusta y limitar las respuestas de error.&lt;br /&gt;
&lt;br /&gt;
== Conclusión ==&lt;br /&gt;
NoSQL representa una evolución hacia sistemas más adaptables, distribuidos y escalables.  Sin embargo, su potencia requiere una gestión cuidadosa en cuanto a configuración, permisos y seguridad de datos para evitar brechas críticas en entornos modernos de &#039;&#039;&#039;seguridad.&#039;&#039;&#039;&lt;br /&gt;
[[Categoría:Bases de datos]]&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=NoSQL&amp;diff=2627</id>
		<title>NoSQL</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=NoSQL&amp;diff=2627"/>
		<updated>2025-11-01T14:25:34Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: Página creada con «= NoSQL = &amp;#039;&amp;#039;&amp;#039;NoSQL&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;Not Only SQL&amp;#039;&amp;#039;) es un conjunto de sistemas de gestión de &amp;#039;&amp;#039;&amp;#039;BD&amp;#039;&amp;#039;&amp;#039; (bases de datos) diseñados para manejar grandes volúmenes de datos no estructurados o semiestructurados.  A diferencia de los sistemas basados en &amp;#039;&amp;#039;&amp;#039;SQL&amp;#039;&amp;#039;&amp;#039;, los motores NoSQL no dependen de un esquema rígido de tablas y relaciones, lo que les otorga mayor flexibilidad, escalabilidad y rendimiento en entornos distribuidos.  En el ámbito de la &amp;#039;&amp;#039;&amp;#039;seguridad&amp;#039;&amp;#039;&amp;#039;, comprender el f…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NoSQL =&lt;br /&gt;
&#039;&#039;&#039;NoSQL&#039;&#039;&#039; (&#039;&#039;Not Only SQL&#039;&#039;) es un conjunto de sistemas de gestión de &#039;&#039;&#039;BD&#039;&#039;&#039; (bases de datos) diseñados para manejar grandes volúmenes de datos no estructurados o semiestructurados.  A diferencia de los sistemas basados en &#039;&#039;&#039;SQL&#039;&#039;&#039;, los motores NoSQL no dependen de un esquema rígido de tablas y relaciones, lo que les otorga mayor flexibilidad, escalabilidad y rendimiento en entornos distribuidos.&lt;br /&gt;
&lt;br /&gt;
En el ámbito de la &#039;&#039;&#039;seguridad&#039;&#039;&#039;, comprender el funcionamiento de NoSQL es crucial para proteger &#039;&#039;apps&#039;&#039;, &#039;&#039;srv&#039;&#039; y &#039;&#039;API&#039;&#039; modernas que utilizan bases de datos no relacionales.&lt;br /&gt;
&lt;br /&gt;
== Características principales ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Sin esquema fijo:&#039;&#039;&#039; Los datos pueden almacenarse en distintos formatos (documentos, grafos, pares clave-valor o columnas).&lt;br /&gt;
* &#039;&#039;&#039;Escalabilidad horizontal:&#039;&#039;&#039; Los datos se distribuyen entre múltiples &#039;&#039;srv&#039;&#039; o nodos, favoreciendo la expansión del sistema sin pérdida de rendimiento.&lt;br /&gt;
* &#039;&#039;&#039;Alto rendimiento:&#039;&#039;&#039; Optimizado para operaciones de lectura/escritura masiva y consultas en tiempo real.&lt;br /&gt;
* &#039;&#039;&#039;Alta disponibilidad (HA):&#039;&#039;&#039; Mediante replicación y redundancia entre nodos.&lt;br /&gt;
* &#039;&#039;&#039;Flexibilidad:&#039;&#039;&#039; Ideal para &#039;&#039;apps&#039;&#039; con estructuras dinámicas y datos cambiantes.&lt;br /&gt;
&lt;br /&gt;
== Tipos de BD NoSQL ==&lt;br /&gt;
&lt;br /&gt;
===== 1. Clave-Valor =====&lt;br /&gt;
&lt;br /&gt;
* Almacenan información como pares de &#039;&#039;&#039;clave → valor&#039;&#039;&#039;.&lt;br /&gt;
* Ideales para &#039;&#039;cache&#039;&#039;, sesiones de &#039;&#039;usr&#039;&#039; o &#039;&#039;cfg&#039;&#039; temporales.&lt;br /&gt;
* Ejemplos: &#039;&#039;&#039;Redis&#039;&#039;&#039;, &#039;&#039;&#039;Riak&#039;&#039;&#039;, &#039;&#039;&#039;Amazon DynamoDB&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
SET usr:1 &amp;quot;Darfe&amp;quot;&lt;br /&gt;
GET usr:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 2. Documentales =====&lt;br /&gt;
&lt;br /&gt;
* Los datos se almacenan en documentos tipo &#039;&#039;&#039;JSON&#039;&#039;&#039; o &#039;&#039;&#039;BSON&#039;&#039;&#039;.&lt;br /&gt;
* Permiten consultas complejas sin esquema predefinido.&lt;br /&gt;
* Usadas en &#039;&#039;apps&#039;&#039; web, móviles y &#039;&#039;microservicios&#039;&#039;.&lt;br /&gt;
* Ejemplos: &#039;&#039;&#039;MongoDB&#039;&#039;&#039;, &#039;&#039;&#039;CouchDB&#039;&#039;&#039;, &#039;&#039;&#039;Firestore&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;_id&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;nombre&amp;quot;: &amp;quot;Darfe&amp;quot;,&lt;br /&gt;
  &amp;quot;correo&amp;quot;: &amp;quot;user@darfe.es&amp;quot;,&lt;br /&gt;
  &amp;quot;rol&amp;quot;: &amp;quot;admin&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 3. Columnar =====&lt;br /&gt;
&lt;br /&gt;
* Organizan la información por columnas en lugar de filas.&lt;br /&gt;
* Son ideales para análisis de datos y consultas masivas.&lt;br /&gt;
* Ejemplos: &#039;&#039;&#039;Cassandra&#039;&#039;&#039;, &#039;&#039;&#039;HBase&#039;&#039;&#039;, &#039;&#039;&#039;ScyllaDB&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE usuarios (&lt;br /&gt;
    id UUID PRIMARY KEY,&lt;br /&gt;
    nombre TEXT,&lt;br /&gt;
    edad INT&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 4. Grafos =====&lt;br /&gt;
&lt;br /&gt;
* Representan relaciones mediante nodos (entidades) y aristas (enlaces).&lt;br /&gt;
* Ideales para &#039;&#039;apps&#039;&#039; de redes sociales, análisis de relaciones o motores de recomendación.&lt;br /&gt;
* Ejemplos: &#039;&#039;&#039;Neo4j&#039;&#039;&#039;, &#039;&#039;&#039;ArangoDB&#039;&#039;&#039;, &#039;&#039;&#039;OrientDB&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
CREATE (a:Usuario {nombre: &amp;quot;Darfe&amp;quot;})-[:SIGUE]-&amp;gt;(b:Usuario {nombre: &amp;quot;Lía&amp;quot;})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ventajas y Desventajas ==&lt;br /&gt;
&#039;&#039;&#039;Ventajas:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Escalabilidad masiva y alta disponibilidad.&lt;br /&gt;
* Flexibilidad en el diseño de datos.&lt;br /&gt;
* Ideal para sistemas distribuidos y de alta concurrencia.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desventajas:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Falta de estandarización (cada motor usa su propia sintaxis o API).&lt;br /&gt;
* Pérdida parcial de las propiedades ACID.&lt;br /&gt;
* Complejidad en la replicación y la &#039;&#039;seguridad&#039;&#039; avanzada.&lt;br /&gt;
&lt;br /&gt;
== Seguridad y Buenas Prácticas ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Validación de entradas:&#039;&#039;&#039; Evitar inyecciones NoSQL limitando los operadores permitidos.&lt;br /&gt;
* &#039;&#039;&#039;Control de permisos:&#039;&#039;&#039; Asignar privilegios mínimos a los &#039;&#039;usr&#039;&#039; y &#039;&#039;srv&#039;&#039; de base de datos.&lt;br /&gt;
* &#039;&#039;&#039;Autenticación y cifrado:&#039;&#039;&#039; Activar TLS y autenticación obligatoria.&lt;br /&gt;
* &#039;&#039;&#039;Auditoría constante:&#039;&#039;&#039; Monitorear accesos y operaciones críticas.&lt;br /&gt;
* &#039;&#039;&#039;Evitar exposición pública:&#039;&#039;&#039; No dejar puertos abiertos sin control (ej. :27017 en MongoDB).&lt;br /&gt;
&lt;br /&gt;
== Inyección NoSQL ==&lt;br /&gt;
Una &#039;&#039;&#039;inyección NoSQL&#039;&#039;&#039; ocurre cuando un atacante manipula una consulta construida dinámicamente (por ejemplo, en formato JSON), logrando acceder o modificar datos sin autorización.&lt;br /&gt;
&lt;br /&gt;
Ejemplo de vulnerabilidad:&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;usr&amp;quot;: {&amp;quot;$ne&amp;quot;: null},&lt;br /&gt;
  &amp;quot;pass&amp;quot;: {&amp;quot;$ne&amp;quot;: null}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;Esto fuerza la coincidencia de cualquier registro, permitiendo acceso no autorizado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prevención:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Usar consultas parametrizadas o funciones de validación seguras.&lt;br /&gt;
* Sanitizar la entrada del &#039;&#039;usr&#039;&#039; y rechazar operadores como `$ne`, `$gt`, `$where`.&lt;br /&gt;
* Aplicar autenticación robusta y limitar las respuestas de error.&lt;br /&gt;
&lt;br /&gt;
== Conclusión ==&lt;br /&gt;
NoSQL representa una evolución hacia sistemas más adaptables, distribuidos y escalables.  Sin embargo, su potencia requiere una gestión cuidadosa en cuanto a configuración, permisos y seguridad de datos para evitar brechas críticas en entornos modernos de &#039;&#039;&#039;seguridad.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=SQL&amp;diff=2626</id>
		<title>SQL</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=SQL&amp;diff=2626"/>
		<updated>2025-10-28T21:03:37Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;SQL&#039;&#039;&#039; (Structured Query Language) es el lenguaje estándar utilizado para gestionar y manipular bases de datos relacionales.  En el ámbito de la &#039;&#039;&#039;ciberseguridad&#039;&#039;&#039;, comprender SQL es fundamental para identificar vulnerabilidades, prevenir inyecciones maliciosas y asegurar la integridad de los datos.&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
===== 1. Jerárquico: =====&lt;br /&gt;
&lt;br /&gt;
* Estructura tipo &#039;&#039;&#039;árbol invertido&#039;&#039;&#039; (nodos primarios y secundarios).&lt;br /&gt;
* Un &#039;&#039;&#039;nodo principal&#039;&#039;&#039; puede tener muchos secundarios, pero un nodo secundario solo un principal.&lt;br /&gt;
* Datos organizados en &#039;&#039;&#039;nodos&#039;&#039;&#039;, equivalente lógico a tablas.&lt;br /&gt;
* &#039;&#039;&#039;Limitaciones:&#039;&#039;&#039; inflexible, difícil manejar relaciones complejas.&lt;br /&gt;
&lt;br /&gt;
Ejemplo: &#039;&#039;&#039;IMS de IBM&#039;&#039;&#039;, que añade características para superar limitaciones.&lt;br /&gt;
&lt;br /&gt;
===== 2. Red: =====&lt;br /&gt;
&lt;br /&gt;
* Mejora las limitaciones del modelo jerárquico.&lt;br /&gt;
* Datos organizados en &#039;&#039;&#039;tipos de registro&#039;&#039;&#039;, equivalente lógico a tablas.&lt;br /&gt;
* Relaciona pares de registros como &#039;&#039;&#039;propietarios y miembros&#039;&#039;&#039;, permitiendo relaciones más complejas.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Limitaciones:&#039;&#039;&#039; complejidad, requiere que el usuario conozca la estructura, difícil modificar sin afectar aplicaciones&lt;br /&gt;
&lt;br /&gt;
===== 3. Relacional: =====&lt;br /&gt;
&lt;br /&gt;
* Basado en &#039;&#039;&#039;tablas (relaciones)&#039;&#039;&#039; y relaciones entre ellas.&lt;br /&gt;
* Independiente de la aplicación: cambios en la estructura &#039;&#039;&#039;no afectan la aplicación&#039;&#039;&#039;.&lt;br /&gt;
* Permite definir &#039;&#039;&#039;relaciones complejas&#039;&#039;&#039; sin necesidad de navegar por estructuras jerárquicas o de red.&lt;br /&gt;
* &#039;&#039;&#039;Ventaja:&#039;&#039;&#039; acceso directo a cada tabla sin las limitaciones de jerarquía o propietario/miembro.&lt;br /&gt;
&lt;br /&gt;
* Mejora la &#039;&#039;&#039;flexibilidad y mantenibilidad&#039;&#039;&#039; respecto a jerárquico y en red.&lt;br /&gt;
&lt;br /&gt;
== Conceptos Fundamentales ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Base de datos (Database)&#039;&#039; — Colección organizada de información.&lt;br /&gt;
* &#039;&#039;Tabla (Table)&#039;&#039; — Estructura que almacena los datos en filas y columnas.&lt;br /&gt;
* &#039;&#039;Registro (Row)&#039;&#039; — Una entrada individual dentro de una tabla.&lt;br /&gt;
* &#039;&#039;Campo (Field)&#039;&#039; — Un atributo específico dentro de una tabla.&lt;br /&gt;
* &#039;&#039;Clave primaria (Primary Key)&#039;&#039; — Identificador único de cada registro.&lt;br /&gt;
* &#039;&#039;Índice (Index)&#039;&#039; — Estructura que acelera búsquedas sobre columnas.&lt;br /&gt;
* &#039;&#039;Normalización&#039;&#039; — Proceso de diseñar tablas para reducir redundancia y mejorar integridad.&lt;br /&gt;
* &#039;&#039;Transacción&#039;&#039; — Conjunto de operaciones que se ejecutan de forma atómica (ACID).&lt;br /&gt;
&lt;br /&gt;
Ejemplo de creación de tabla:&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE usuarios (&lt;br /&gt;
    id INT PRIMARY KEY AUTO_INCREMENT,&lt;br /&gt;
    nombre VARCHAR(50),&lt;br /&gt;
    correo VARCHAR(100),&lt;br /&gt;
    contraseña VARCHAR(100)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Estructura y Diseño ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Normalización&#039;&#039;&#039;: aplicar formas normales (1FN, 2FN, 3FN...) para evitar datos redundantes y anomalías de actualización.&lt;br /&gt;
* &#039;&#039;&#039;Desnormalización&#039;&#039;&#039;: a veces usada por motivos de rendimiento en consultas analíticas o sistemas OLAP.&lt;br /&gt;
* &#039;&#039;&#039;Constraints (Restricciones)&#039;&#039;&#039;: NOT NULL, UNIQUE, CHECK, FOREIGN KEY para mantener la integridad referencial.&lt;br /&gt;
* &#039;&#039;&#039;Índices&#039;&#039;&#039;: deben diseñarse con cuidado; ayudan a acelerar SELECT pero pueden ralentizar INSERT/UPDATE/DELETE.&lt;br /&gt;
* &#039;&#039;&#039;Particionamiento y Sharding&#039;&#039;&#039;: técnicas para distribuir datos en varias unidades físicas para escalabilidad.&lt;br /&gt;
* &#039;&#039;&#039;Backups y recuperación&#039;&#039;&#039;: estrategias (completos, incrementales, logs de transacción) y pruebas periódicas de restauración.&lt;br /&gt;
&lt;br /&gt;
== Consultas SQL Básicas ==&lt;br /&gt;
&lt;br /&gt;
; SELECT&lt;br /&gt;
: Utilizado para consultar información dentro de una base de datos.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM usuarios;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; INSERT&lt;br /&gt;
: Añade nuevos registros a una tabla.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO usuarios (nombre, correo, contraseña)&lt;br /&gt;
VALUES (&#039;user&#039;, &#039;user@darfe.es&#039;, &#039;clave123&#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; UPDATE&lt;br /&gt;
: Modifica registros existentes.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE usuarios&lt;br /&gt;
SET contraseña = &#039;claveNueva&#039;&lt;br /&gt;
WHERE nombre = &#039;Darfe&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; DELETE&lt;br /&gt;
: Elimina registros de una tabla.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
DELETE FROM usuarios WHERE id = 3;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Operaciones Avanzadas ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;JOINs&#039;&#039;&#039;: INNER JOIN, LEFT/RIGHT JOIN, FULL OUTER JOIN para combinar datos de varias tablas.&lt;br /&gt;
* &#039;&#039;&#039;Subconsultas&#039;&#039;&#039;: consultas dentro de otras consultas para operaciones complejas.&lt;br /&gt;
* &#039;&#039;&#039;Funciones de agregación&#039;&#039;&#039;: COUNT(), SUM(), AVG(), MIN(), MAX() y GROUP BY para resúmenes.&lt;br /&gt;
* &#039;&#039;&#039;Views (Vistas)&#039;&#039;&#039;: consultas guardadas que simplifican acceso y encapsulan lógica.&lt;br /&gt;
* &#039;&#039;&#039;Stored Procedures y Triggers&#039;&#039;&#039;: lógica almacenada en la BD — cuidado con la complejidad y permisos.&lt;br /&gt;
* &#039;&#039;&#039;Optimización de consultas&#039;&#039;&#039;: EXPLAIN/EXPLAIN ANALYZE para revisar planes de ejecución y refinar índices.&lt;br /&gt;
&lt;br /&gt;
== Seguridad y Buenas Prácticas ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Validación de entradas:&#039;&#039;&#039; Evita la inyección SQL usando consultas preparadas y validación estricta de tipos y longitudes.&lt;br /&gt;
* &#039;&#039;&#039;Principio de menor privilegio:&#039;&#039;&#039; Las cuentas que acceden a la BD deben tener solo los permisos necesarios (no usar root/sa en la app).&lt;br /&gt;
* &#039;&#039;&#039;Cifrado:&#039;&#039;&#039; Almacenar contraseñas usando hash con sal (por ejemplo, bcrypt o Argon2). No almacenar contraseñas en texto plano.&lt;br /&gt;
* &#039;&#039;&#039;Auditoría y logging:&#039;&#039;&#039; Monitorear accesos, cambios en esquemas y operaciones en tablas sensibles.&lt;br /&gt;
* &#039;&#039;&#039;Configuración segura:&#039;&#039;&#039; Deshabilitar funciones innecesarias, aplicar parches y mantener la BD actualizada.&lt;br /&gt;
* &#039;&#039;&#039;Seguridad de red:&#039;&#039;&#039; Aislar la infraestructura de BD en segmentos privados, usar TLS/SSL para conexiones y VPNs cuando corresponda.&lt;br /&gt;
* &#039;&#039;&#039;Pruebas regulares:&#039;&#039;&#039; Integrar escaneos de seguridad y pruebas de penetración en el ciclo de desarrollo.&lt;br /&gt;
&lt;br /&gt;
== Inyección SQL (tema desarrollado) ==&lt;br /&gt;
&lt;br /&gt;
=== Definición ===&lt;br /&gt;
La &#039;&#039;&#039;inyección SQL&#039;&#039;&#039; (SQL Injection) es una vulnerabilidad que permite a un atacante insertar, manipular o alterar consultas SQL construidas dinámicamente por una aplicación. Sucede cuando datos controlados por el usuario se incorporan directamente en una consulta sin separación clara entre código y datos.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo representativo ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
&#039; OR &#039;1&#039;=&#039;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Si esta cadena se concatena en una consulta de autenticación sin protección, la condición lógica puede resultar siempre verdadera y permitir acceso no autorizado. Este ejemplo se usa para ilustrar el concepto; la exposición real siempre depende del contexto de la consulta y del tratamiento que haga la aplicación de la entrada.&lt;br /&gt;
&lt;br /&gt;
=== Tipos comunes de inyección (visión general) ===&lt;br /&gt;
* &#039;&#039;&#039;Basada en errores (Error-based):&#039;&#039;&#039; El atacante provoca errores que pueden revelar información sobre la estructura de la BD.&lt;br /&gt;
* &#039;&#039;&#039;Basada en booleanos (Boolean-based / Blind):&#039;&#039;&#039; El atacante envía consultas que devuelven true/false y deduce información a partir de la respuesta de la aplicación.&lt;br /&gt;
* &#039;&#039;&#039;Basada en tiempo (Time-based / Blind):&#039;&#039;&#039; Se inyectan operaciones que tardan en ejecutarse para inferir datos según la latencia observada.&lt;br /&gt;
* &#039;&#039;&#039;UNION-based:&#039;&#039;&#039; Combinar resultados de consultas adicionales usando UNION para extraer datos.&lt;br /&gt;
* &#039;&#039;&#039;Stacked queries (consultas apiladas):&#039;&#039;&#039; Ejecutar múltiples sentencias en una sola petición (no soportado por todas las BD o APIs).&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Nota: aquí no se proporcionan payloads avanzados ni instrucciones para explotar sistemas — el objetivo es entender los vectores para diseñar defensas efectivas.&lt;br /&gt;
&lt;br /&gt;
=== Indicadores y detección ===&lt;br /&gt;
* Comportamiento inesperado en formularios (logins, búsquedas).&lt;br /&gt;
* Mensajes de error SQL reveladores en la interfaz (evitar mostrarlos a usuarios).&lt;br /&gt;
* Respuestas distintas al introducir caracteres especiales (&#039; &amp;quot; ; -- /*).&lt;br /&gt;
* Auditoría que muestra consultas construidas dinámicamente con concatenación de inputs.&lt;br /&gt;
* Pruebas automatizadas y herramientas de escaneo (SAST/DAST) que señalan puntos de inyección.&lt;br /&gt;
&lt;br /&gt;
=== Consecuencias potenciales ===&lt;br /&gt;
* Acceso no autorizado a datos sensibles (usuarios, contraseñas, registros financieros).&lt;br /&gt;
* Exfiltración masiva de datos.&lt;br /&gt;
* Alteración o borrado de información crítica.&lt;br /&gt;
* Escalada de privilegios o ejecución de código si la BD o entorno lo permite.&lt;br /&gt;
* Compromiso del sistema completo si la aplicación y la BD están integradas sin separación.&lt;br /&gt;
&lt;br /&gt;
=== Prevención y mitigación (prácticas recomendadas) ===&lt;br /&gt;
1. Mantener separación entre código y datos&lt;br /&gt;
* &#039;&#039;&#039;Consultas preparadas / parámetros enlazados&#039;&#039;&#039; (prepared statements): la forma más efectiva de evitar que la entrada del usuario sea interpretada como código SQL.&lt;br /&gt;
Ejemplo en PHP (PDO):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
$stmt = $pdo-&amp;gt;prepare(&#039;SELECT * FROM usuarios WHERE correo = ? AND contraseña = ?&#039;);&lt;br /&gt;
$stmt-&amp;gt;execute([$correo, $hash]);&lt;br /&gt;
$result = $stmt-&amp;gt;fetch();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en Python (psycopg2):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
cur.execute(&amp;quot;SELECT * FROM usuarios WHERE correo = %s AND contraseña = %s&amp;quot;, (correo, hash))&lt;br /&gt;
&amp;lt;/pre&amp;gt;2. Validación y saneamiento&lt;br /&gt;
* Validar tipo, longitud, formato (ej. emails, números, fechas) antes de procesar.&lt;br /&gt;
* Rechazar o normalizar entradas inesperadas.&lt;br /&gt;
* Evitar la construcción dinámica de SQL con concatenación de strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Principio de menor privilegio&lt;br /&gt;
* La cuenta que usa la aplicación para conectarse debe tener permisos mínimos (por ejemplo SELECT/INSERT/UPDATE en tablas necesarias, sin DROP ni DDL excesivo).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Uso de ORMs con cuidado&lt;br /&gt;
* Los ORMs suelen parametrizar consultas correctamente, pero el uso de consultas «raw» o concatenadas puede introducir riesgos. Revisar y auditar el código que construye SQL manualmente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Manejo seguro de errores y mensajes&lt;br /&gt;
* No mostrar trazas o errores SQL al usuario. Registrar internamente la información suficiente para investigar sin exponer estructura ni datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Registro, monitoreo y respuesta&lt;br /&gt;
* Implementar alertas ante patrones sospechosos (picos de errores, inputs raros).&lt;br /&gt;
* Mantener logs de consultas y accesos para análisis forense.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Controles adicionales&lt;br /&gt;
* Web Application Firewall (WAF) como capa adicional — útil pero no sustituye buenas prácticas de codificación.&lt;br /&gt;
* Hardening y parches de la BD y del servidor de aplicaciones.&lt;br /&gt;
* Revisión de código y pruebas de seguridad (pentests, fuzzing) periódicas.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos de corrección (antes / después) ===&lt;br /&gt;
&lt;br /&gt;
*Código vulnerable (no usar):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
$sql = &amp;quot;SELECT * FROM usuarios WHERE correo = &#039;&amp;quot; . $_POST[&#039;correo&#039;] . &amp;quot;&#039; AND contraseña = &#039;&amp;quot; . $_POST[&#039;pass&#039;] . &amp;quot;&#039;&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Corrección con prepared statement (recomendada):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
$stmt = $pdo-&amp;gt;prepare(&amp;quot;SELECT * FROM usuarios WHERE correo = :correo AND contraseña = :pass&amp;quot;);&lt;br /&gt;
$stmt-&amp;gt;bindParam(&#039;:correo&#039;, $_POST[&#039;correo&#039;]);&lt;br /&gt;
$stmt-&amp;gt;bindParam(&#039;:pass&#039;, $hash);&lt;br /&gt;
$stmt-&amp;gt;execute();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Respuesta ante un incidente ===&lt;br /&gt;
1. Contener: desactivar vectores afectados (ej. endpoints vulnerables), cambiar credenciales si fuera necesario.&lt;br /&gt;
&lt;br /&gt;
2. Analizar logs para identificar alcance y vectores.&lt;br /&gt;
&lt;br /&gt;
3. Restaurar desde backups conocidas si hay pérdida o corrupción de datos.&lt;br /&gt;
&lt;br /&gt;
4. Corregir la vulnerabilidad (parche, refactorización de consultas) y ejecutar pruebas.&lt;br /&gt;
&lt;br /&gt;
5. Notificar a las partes afectadas según normativa/Política de divulgación y cumplimiento legal.&lt;br /&gt;
&lt;br /&gt;
=== Recursos y pruebas seguras ===&lt;br /&gt;
* Usar entornos de laboratorio aislados (no en producción) para practicar detección/mitigación.&lt;br /&gt;
* Emplear herramientas de seguridad para evaluar de forma controlada (sólo en sistemas de prueba o con autorización explícita).&lt;br /&gt;
&lt;br /&gt;
== Referencias rápidas ==&lt;br /&gt;
* Aprender SQL es clave para desarrollar con seguridad: entender cómo se construyen consultas permite tanto optimizar rendimiento como prevenir fallos de seguridad.&lt;br /&gt;
* Revisar siempre los puntos del código que generan SQL dinámico y tratarlos como zonas críticas de seguridad.&lt;br /&gt;
&lt;br /&gt;
== Bibliografía ==&lt;br /&gt;
[https://pedrobeltrancanessa-biblioteca.weebly.com/uploads/1/2/4/0/12405072/fundamentos_de_sql_3edi_oppel.pdf Fundamentos de SQL - Andy Oppel Robert Sheldon]&lt;br /&gt;
&lt;br /&gt;
[https://es.wikipedia.org/wiki/MySQL MySQL - Wikipedia]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Bases de datos]]&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=TCP/IP&amp;diff=2625</id>
		<title>TCP/IP</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=TCP/IP&amp;diff=2625"/>
		<updated>2025-10-28T20:46:46Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Modelo capas-OSI y TCP-IP.jpg|thumb|Modelo capas-OSI y TCP-IP|right|200px]]&lt;br /&gt;
El &#039;&#039;&#039;modelo TCP/IP&#039;&#039;&#039; es considerado un &#039;&#039;&#039;estándar de comunicación&#039;&#039;&#039; ampliamente adoptado en el ámbito de las redes informáticas. Su función principal es &#039;&#039;&#039;definir el procedimiento mediante el cual los datos generados en el origen son transmitidos, entregados y comprendidos correctamente en el destino&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Para lograrlo, el modelo hace uso de &#039;&#039;&#039;diversos protocolos&#039;&#039;&#039;, que pueden operar &#039;&#039;&#039;de forma simultánea o individual&#039;&#039;&#039;, cada uno con &#039;&#039;&#039;una función específica y un rol bien definido&#039;&#039;&#039; dentro del proceso de comunicación.&lt;br /&gt;
&lt;br /&gt;
Una forma sencilla de comprender el funcionamiento del modelo TCP/IP —comúnmente utilizada en la literatura técnica— es &#039;&#039;&#039;compararlo con una red telefónica&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
Si reemplazamos un teléfono celular antiguo por uno más reciente, &#039;&#039;&#039;no tendríamos inconvenientes al comunicarnos&#039;&#039;&#039; dentro de la red. No sería necesario realizar configuraciones complejas ni reconstruir toda la infraestructura de comunicación, ya que ambos dispositivos —el viejo y el nuevo— &#039;&#039;&#039;emplean los mismos protocolos y estándares globales de transmisión&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Esta &#039;&#039;&#039;uniformidad en los protocolos&#039;&#039;&#039; es precisamente lo que &#039;&#039;&#039;evita la obsolescencia tecnológica&#039;&#039;&#039; en la comunicación básica, permitiendo que &#039;&#039;&#039;nuevos dispositivos sean compatibles con las redes existentes&#039;&#039;&#039;, siempre que respeten las mismas normas y estándares definidos por el modelo TCP/IP.[[File:Portada_del_libro_Seguridad_por_Niveles.jpg|left|120px|thumb|Portada del libro]]&lt;br /&gt;
Este tema lo encontrarás ampliamente desarrollado en el &amp;quot;CAPÍTULO 1: Introducción&amp;quot; de nuestro libro &amp;lt;b&amp;gt;[[Seguridad por Niveles]]&amp;lt;/b&amp;gt; (que puedes descargar gratuitamente de nuestra web: https://darfe.es).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Muchas de las imágenes y explicaciones, también las podrás encontrar en [[Wikipedia]] en el siguiente enlace:&lt;br /&gt;
&lt;br /&gt;
    https://es.wikipedia.org/wiki/Familia_de_protocolos_de_internet&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Tenemos un video qu epuede ser de tu interés sobre este tema&lt;br /&gt;
|-&lt;br /&gt;
! Nombre del video !! Enlace&lt;br /&gt;
|-&lt;br /&gt;
| TCP/IP usando Wireshark||&amp;lt;youtube width=&amp;quot;130&amp;quot; height=&amp;quot;60&amp;quot;&amp;gt;Moe5Mj_Wo5w&amp;lt;/youtube&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Categoría:Nivel de Transporte]]&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=SQL&amp;diff=2624</id>
		<title>SQL</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=SQL&amp;diff=2624"/>
		<updated>2025-10-28T20:39:37Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: Adicion de informacion, protocolo de respuesta, ejemplo de errores y referencias. Nota: La corrección de puntuacion esta hecho por IA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SQL =&lt;br /&gt;
&#039;&#039;&#039;SQL&#039;&#039;&#039; (Structured Query Language) es el lenguaje estándar utilizado para gestionar y manipular bases de datos relacionales.  En el ámbito de la &#039;&#039;&#039;ciberseguridad&#039;&#039;&#039;, comprender SQL es fundamental para identificar vulnerabilidades, prevenir inyecciones maliciosas y asegurar la integridad de los datos.&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
===== 1. Jerárquico: =====&lt;br /&gt;
&lt;br /&gt;
* Estructura tipo &#039;&#039;&#039;árbol invertido&#039;&#039;&#039; (nodos primarios y secundarios).&lt;br /&gt;
* Un &#039;&#039;&#039;nodo principal&#039;&#039;&#039; puede tener muchos secundarios, pero un nodo secundario solo un principal.&lt;br /&gt;
* Datos organizados en &#039;&#039;&#039;nodos&#039;&#039;&#039;, equivalente lógico a tablas.&lt;br /&gt;
* &#039;&#039;&#039;Limitaciones:&#039;&#039;&#039; inflexible, difícil manejar relaciones complejas.&lt;br /&gt;
&lt;br /&gt;
Ejemplo: &#039;&#039;&#039;IMS de IBM&#039;&#039;&#039;, que añade características para superar limitaciones.&lt;br /&gt;
&lt;br /&gt;
===== 2. Red: =====&lt;br /&gt;
&lt;br /&gt;
* Mejora las limitaciones del modelo jerárquico.&lt;br /&gt;
* Datos organizados en &#039;&#039;&#039;tipos de registro&#039;&#039;&#039;, equivalente lógico a tablas.&lt;br /&gt;
* Relaciona pares de registros como &#039;&#039;&#039;propietarios y miembros&#039;&#039;&#039;, permitiendo relaciones más complejas.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Limitaciones:&#039;&#039;&#039; complejidad, requiere que el usuario conozca la estructura, difícil modificar sin afectar aplicaciones&lt;br /&gt;
&lt;br /&gt;
===== 3. Relacional: =====&lt;br /&gt;
&lt;br /&gt;
* Basado en &#039;&#039;&#039;tablas (relaciones)&#039;&#039;&#039; y relaciones entre ellas.&lt;br /&gt;
* Independiente de la aplicación: cambios en la estructura &#039;&#039;&#039;no afectan la aplicación&#039;&#039;&#039;.&lt;br /&gt;
* Permite definir &#039;&#039;&#039;relaciones complejas&#039;&#039;&#039; sin necesidad de navegar por estructuras jerárquicas o de red.&lt;br /&gt;
* &#039;&#039;&#039;Ventaja:&#039;&#039;&#039; acceso directo a cada tabla sin las limitaciones de jerarquía o propietario/miembro.&lt;br /&gt;
&lt;br /&gt;
* Mejora la &#039;&#039;&#039;flexibilidad y mantenibilidad&#039;&#039;&#039; respecto a jerárquico y en red.&lt;br /&gt;
&lt;br /&gt;
== Conceptos Fundamentales ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Base de datos (Database)&#039;&#039; — Colección organizada de información.&lt;br /&gt;
* &#039;&#039;Tabla (Table)&#039;&#039; — Estructura que almacena los datos en filas y columnas.&lt;br /&gt;
* &#039;&#039;Registro (Row)&#039;&#039; — Una entrada individual dentro de una tabla.&lt;br /&gt;
* &#039;&#039;Campo (Field)&#039;&#039; — Un atributo específico dentro de una tabla.&lt;br /&gt;
* &#039;&#039;Clave primaria (Primary Key)&#039;&#039; — Identificador único de cada registro.&lt;br /&gt;
* &#039;&#039;Índice (Index)&#039;&#039; — Estructura que acelera búsquedas sobre columnas.&lt;br /&gt;
* &#039;&#039;Normalización&#039;&#039; — Proceso de diseñar tablas para reducir redundancia y mejorar integridad.&lt;br /&gt;
* &#039;&#039;Transacción&#039;&#039; — Conjunto de operaciones que se ejecutan de forma atómica (ACID).&lt;br /&gt;
&lt;br /&gt;
Ejemplo de creación de tabla:&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE usuarios (&lt;br /&gt;
    id INT PRIMARY KEY AUTO_INCREMENT,&lt;br /&gt;
    nombre VARCHAR(50),&lt;br /&gt;
    correo VARCHAR(100),&lt;br /&gt;
    contraseña VARCHAR(100)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Estructura y Diseño ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Normalización&#039;&#039;&#039;: aplicar formas normales (1FN, 2FN, 3FN...) para evitar datos redundantes y anomalías de actualización.&lt;br /&gt;
* &#039;&#039;&#039;Desnormalización&#039;&#039;&#039;: a veces usada por motivos de rendimiento en consultas analíticas o sistemas OLAP.&lt;br /&gt;
* &#039;&#039;&#039;Constraints (Restricciones)&#039;&#039;&#039;: NOT NULL, UNIQUE, CHECK, FOREIGN KEY para mantener la integridad referencial.&lt;br /&gt;
* &#039;&#039;&#039;Índices&#039;&#039;&#039;: deben diseñarse con cuidado; ayudan a acelerar SELECT pero pueden ralentizar INSERT/UPDATE/DELETE.&lt;br /&gt;
* &#039;&#039;&#039;Particionamiento y Sharding&#039;&#039;&#039;: técnicas para distribuir datos en varias unidades físicas para escalabilidad.&lt;br /&gt;
* &#039;&#039;&#039;Backups y recuperación&#039;&#039;&#039;: estrategias (completos, incrementales, logs de transacción) y pruebas periódicas de restauración.&lt;br /&gt;
&lt;br /&gt;
== Consultas SQL Básicas ==&lt;br /&gt;
&lt;br /&gt;
; SELECT&lt;br /&gt;
: Utilizado para consultar información dentro de una base de datos.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM usuarios;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; INSERT&lt;br /&gt;
: Añade nuevos registros a una tabla.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO usuarios (nombre, correo, contraseña)&lt;br /&gt;
VALUES (&#039;user&#039;, &#039;user@darfe.es&#039;, &#039;clave123&#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; UPDATE&lt;br /&gt;
: Modifica registros existentes.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE usuarios&lt;br /&gt;
SET contraseña = &#039;claveNueva&#039;&lt;br /&gt;
WHERE nombre = &#039;Darfe&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; DELETE&lt;br /&gt;
: Elimina registros de una tabla.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
DELETE FROM usuarios WHERE id = 3;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Operaciones Avanzadas ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;JOINs&#039;&#039;&#039;: INNER JOIN, LEFT/RIGHT JOIN, FULL OUTER JOIN para combinar datos de varias tablas.&lt;br /&gt;
* &#039;&#039;&#039;Subconsultas&#039;&#039;&#039;: consultas dentro de otras consultas para operaciones complejas.&lt;br /&gt;
* &#039;&#039;&#039;Funciones de agregación&#039;&#039;&#039;: COUNT(), SUM(), AVG(), MIN(), MAX() y GROUP BY para resúmenes.&lt;br /&gt;
* &#039;&#039;&#039;Views (Vistas)&#039;&#039;&#039;: consultas guardadas que simplifican acceso y encapsulan lógica.&lt;br /&gt;
* &#039;&#039;&#039;Stored Procedures y Triggers&#039;&#039;&#039;: lógica almacenada en la BD — cuidado con la complejidad y permisos.&lt;br /&gt;
* &#039;&#039;&#039;Optimización de consultas&#039;&#039;&#039;: EXPLAIN/EXPLAIN ANALYZE para revisar planes de ejecución y refinar índices.&lt;br /&gt;
&lt;br /&gt;
== Seguridad y Buenas Prácticas ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Validación de entradas:&#039;&#039;&#039; Evita la inyección SQL usando consultas preparadas y validación estricta de tipos y longitudes.&lt;br /&gt;
* &#039;&#039;&#039;Principio de menor privilegio:&#039;&#039;&#039; Las cuentas que acceden a la BD deben tener solo los permisos necesarios (no usar root/sa en la app).&lt;br /&gt;
* &#039;&#039;&#039;Cifrado:&#039;&#039;&#039; Almacenar contraseñas usando hash con sal (por ejemplo, bcrypt o Argon2). No almacenar contraseñas en texto plano.&lt;br /&gt;
* &#039;&#039;&#039;Auditoría y logging:&#039;&#039;&#039; Monitorear accesos, cambios en esquemas y operaciones en tablas sensibles.&lt;br /&gt;
* &#039;&#039;&#039;Configuración segura:&#039;&#039;&#039; Deshabilitar funciones innecesarias, aplicar parches y mantener la BD actualizada.&lt;br /&gt;
* &#039;&#039;&#039;Seguridad de red:&#039;&#039;&#039; Aislar la infraestructura de BD en segmentos privados, usar TLS/SSL para conexiones y VPNs cuando corresponda.&lt;br /&gt;
* &#039;&#039;&#039;Pruebas regulares:&#039;&#039;&#039; Integrar escaneos de seguridad y pruebas de penetración en el ciclo de desarrollo.&lt;br /&gt;
&lt;br /&gt;
== Inyección SQL (tema desarrollado) ==&lt;br /&gt;
&lt;br /&gt;
=== Definición ===&lt;br /&gt;
La &#039;&#039;&#039;inyección SQL&#039;&#039;&#039; (SQL Injection) es una vulnerabilidad que permite a un atacante insertar, manipular o alterar consultas SQL construidas dinámicamente por una aplicación. Sucede cuando datos controlados por el usuario se incorporan directamente en una consulta sin separación clara entre código y datos.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo representativo ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
&#039; OR &#039;1&#039;=&#039;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Si esta cadena se concatena en una consulta de autenticación sin protección, la condición lógica puede resultar siempre verdadera y permitir acceso no autorizado. Este ejemplo se usa para ilustrar el concepto; la exposición real siempre depende del contexto de la consulta y del tratamiento que haga la aplicación de la entrada.&lt;br /&gt;
&lt;br /&gt;
=== Tipos comunes de inyección (visión general) ===&lt;br /&gt;
* &#039;&#039;&#039;Basada en errores (Error-based):&#039;&#039;&#039; El atacante provoca errores que pueden revelar información sobre la estructura de la BD.&lt;br /&gt;
* &#039;&#039;&#039;Basada en booleanos (Boolean-based / Blind):&#039;&#039;&#039; El atacante envía consultas que devuelven true/false y deduce información a partir de la respuesta de la aplicación.&lt;br /&gt;
* &#039;&#039;&#039;Basada en tiempo (Time-based / Blind):&#039;&#039;&#039; Se inyectan operaciones que tardan en ejecutarse para inferir datos según la latencia observada.&lt;br /&gt;
* &#039;&#039;&#039;UNION-based:&#039;&#039;&#039; Combinar resultados de consultas adicionales usando UNION para extraer datos.&lt;br /&gt;
* &#039;&#039;&#039;Stacked queries (consultas apiladas):&#039;&#039;&#039; Ejecutar múltiples sentencias en una sola petición (no soportado por todas las BD o APIs).&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Nota: aquí no se proporcionan payloads avanzados ni instrucciones para explotar sistemas — el objetivo es entender los vectores para diseñar defensas efectivas.&lt;br /&gt;
&lt;br /&gt;
=== Indicadores y detección ===&lt;br /&gt;
* Comportamiento inesperado en formularios (logins, búsquedas).&lt;br /&gt;
* Mensajes de error SQL reveladores en la interfaz (evitar mostrarlos a usuarios).&lt;br /&gt;
* Respuestas distintas al introducir caracteres especiales (&#039; &amp;quot; ; -- /*).&lt;br /&gt;
* Auditoría que muestra consultas construidas dinámicamente con concatenación de inputs.&lt;br /&gt;
* Pruebas automatizadas y herramientas de escaneo (SAST/DAST) que señalan puntos de inyección.&lt;br /&gt;
&lt;br /&gt;
=== Consecuencias potenciales ===&lt;br /&gt;
* Acceso no autorizado a datos sensibles (usuarios, contraseñas, registros financieros).&lt;br /&gt;
* Exfiltración masiva de datos.&lt;br /&gt;
* Alteración o borrado de información crítica.&lt;br /&gt;
* Escalada de privilegios o ejecución de código si la BD o entorno lo permite.&lt;br /&gt;
* Compromiso del sistema completo si la aplicación y la BD están integradas sin separación.&lt;br /&gt;
&lt;br /&gt;
=== Prevención y mitigación (prácticas recomendadas) ===&lt;br /&gt;
1. Mantener separación entre código y datos&lt;br /&gt;
* &#039;&#039;&#039;Consultas preparadas / parámetros enlazados&#039;&#039;&#039; (prepared statements): la forma más efectiva de evitar que la entrada del usuario sea interpretada como código SQL.&lt;br /&gt;
Ejemplo en PHP (PDO):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
$stmt = $pdo-&amp;gt;prepare(&#039;SELECT * FROM usuarios WHERE correo = ? AND contraseña = ?&#039;);&lt;br /&gt;
$stmt-&amp;gt;execute([$correo, $hash]);&lt;br /&gt;
$result = $stmt-&amp;gt;fetch();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en Python (psycopg2):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
cur.execute(&amp;quot;SELECT * FROM usuarios WHERE correo = %s AND contraseña = %s&amp;quot;, (correo, hash))&lt;br /&gt;
&amp;lt;/pre&amp;gt;2. Validación y saneamiento&lt;br /&gt;
* Validar tipo, longitud, formato (ej. emails, números, fechas) antes de procesar.&lt;br /&gt;
* Rechazar o normalizar entradas inesperadas.&lt;br /&gt;
* Evitar la construcción dinámica de SQL con concatenación de strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Principio de menor privilegio&lt;br /&gt;
* La cuenta que usa la aplicación para conectarse debe tener permisos mínimos (por ejemplo SELECT/INSERT/UPDATE en tablas necesarias, sin DROP ni DDL excesivo).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Uso de ORMs con cuidado&lt;br /&gt;
* Los ORMs suelen parametrizar consultas correctamente, pero el uso de consultas «raw» o concatenadas puede introducir riesgos. Revisar y auditar el código que construye SQL manualmente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Manejo seguro de errores y mensajes&lt;br /&gt;
* No mostrar trazas o errores SQL al usuario. Registrar internamente la información suficiente para investigar sin exponer estructura ni datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Registro, monitoreo y respuesta&lt;br /&gt;
* Implementar alertas ante patrones sospechosos (picos de errores, inputs raros).&lt;br /&gt;
* Mantener logs de consultas y accesos para análisis forense.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Controles adicionales&lt;br /&gt;
* Web Application Firewall (WAF) como capa adicional — útil pero no sustituye buenas prácticas de codificación.&lt;br /&gt;
* Hardening y parches de la BD y del servidor de aplicaciones.&lt;br /&gt;
* Revisión de código y pruebas de seguridad (pentests, fuzzing) periódicas.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos de corrección (antes / después) ===&lt;br /&gt;
&lt;br /&gt;
*Código vulnerable (no usar):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
$sql = &amp;quot;SELECT * FROM usuarios WHERE correo = &#039;&amp;quot; . $_POST[&#039;correo&#039;] . &amp;quot;&#039; AND contraseña = &#039;&amp;quot; . $_POST[&#039;pass&#039;] . &amp;quot;&#039;&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Corrección con prepared statement (recomendada):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
$stmt = $pdo-&amp;gt;prepare(&amp;quot;SELECT * FROM usuarios WHERE correo = :correo AND contraseña = :pass&amp;quot;);&lt;br /&gt;
$stmt-&amp;gt;bindParam(&#039;:correo&#039;, $_POST[&#039;correo&#039;]);&lt;br /&gt;
$stmt-&amp;gt;bindParam(&#039;:pass&#039;, $hash);&lt;br /&gt;
$stmt-&amp;gt;execute();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Respuesta ante un incidente ===&lt;br /&gt;
1. Contener: desactivar vectores afectados (ej. endpoints vulnerables), cambiar credenciales si fuera necesario.&lt;br /&gt;
&lt;br /&gt;
2. Analizar logs para identificar alcance y vectores.&lt;br /&gt;
&lt;br /&gt;
3. Restaurar desde backups conocidas si hay pérdida o corrupción de datos.&lt;br /&gt;
&lt;br /&gt;
4. Corregir la vulnerabilidad (parche, refactorización de consultas) y ejecutar pruebas.&lt;br /&gt;
&lt;br /&gt;
5. Notificar a las partes afectadas según normativa/Política de divulgación y cumplimiento legal.&lt;br /&gt;
&lt;br /&gt;
=== Recursos y pruebas seguras ===&lt;br /&gt;
* Usar entornos de laboratorio aislados (no en producción) para practicar detección/mitigación.&lt;br /&gt;
* Emplear herramientas de seguridad para evaluar de forma controlada (sólo en sistemas de prueba o con autorización explícita).&lt;br /&gt;
&lt;br /&gt;
== Referencias rápidas ==&lt;br /&gt;
* Aprender SQL es clave para desarrollar con seguridad: entender cómo se construyen consultas permite tanto optimizar rendimiento como prevenir fallos de seguridad.&lt;br /&gt;
* Revisar siempre los puntos del código que generan SQL dinámico y tratarlos como zonas críticas de seguridad.&lt;br /&gt;
&lt;br /&gt;
== Bibliografía ==&lt;br /&gt;
[https://pedrobeltrancanessa-biblioteca.weebly.com/uploads/1/2/4/0/12405072/fundamentos_de_sql_3edi_oppel.pdf Fundamentos de SQL - Andy Oppel Robert Sheldon]&lt;br /&gt;
&lt;br /&gt;
[https://es.wikipedia.org/wiki/MySQL MySQL - Wikipedia]&lt;br /&gt;
&lt;br /&gt;
[[index.php?title=Categoría:Bases de datos]]&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=SQL&amp;diff=2623</id>
		<title>SQL</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=SQL&amp;diff=2623"/>
		<updated>2025-10-28T20:27:18Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SQL =&lt;br /&gt;
&#039;&#039;&#039;SQL&#039;&#039;&#039; (Structured Query Language) es el lenguaje estándar utilizado para gestionar y manipular bases de datos relacionales.  En el ámbito de la &#039;&#039;&#039;ciberseguridad&#039;&#039;&#039;, comprender SQL es fundamental para identificar vulnerabilidades, prevenir inyecciones maliciosas y asegurar la integridad de los datos.&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
===== 1. Jerárquico: =====&lt;br /&gt;
&lt;br /&gt;
* Estructura tipo &#039;&#039;&#039;árbol invertido&#039;&#039;&#039; (nodos primarios y secundarios).&lt;br /&gt;
* Un &#039;&#039;&#039;nodo principal&#039;&#039;&#039; puede tener muchos secundarios, pero un nodo secundario solo un principal.&lt;br /&gt;
* Datos organizados en &#039;&#039;&#039;nodos&#039;&#039;&#039;, equivalente lógico a tablas.&lt;br /&gt;
* &#039;&#039;&#039;Limitaciones:&#039;&#039;&#039; inflexible, difícil manejar relaciones complejas.&lt;br /&gt;
&lt;br /&gt;
Ejemplo: &#039;&#039;&#039;IMS de IBM&#039;&#039;&#039;, que añade características para superar limitaciones.&lt;br /&gt;
&lt;br /&gt;
===== 2. Red: =====&lt;br /&gt;
&lt;br /&gt;
* Mejora las limitaciones del modelo jerárquico.&lt;br /&gt;
* Datos organizados en &#039;&#039;&#039;tipos de registro&#039;&#039;&#039;, equivalente lógico a tablas.&lt;br /&gt;
* Relaciona pares de registros como &#039;&#039;&#039;propietarios y miembros&#039;&#039;&#039;, permitiendo relaciones más complejas.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Limitaciones:&#039;&#039;&#039; complejidad, requiere que el usuario conozca la estructura, difícil modificar sin afectar aplicaciones&lt;br /&gt;
&lt;br /&gt;
===== 3. Relacional: =====&lt;br /&gt;
&lt;br /&gt;
* Basado en &#039;&#039;&#039;tablas (relaciones)&#039;&#039;&#039; y relaciones entre ellas.&lt;br /&gt;
* Independiente de la aplicación: cambios en la estructura &#039;&#039;&#039;no afectan la aplicación&#039;&#039;&#039;.&lt;br /&gt;
* Permite definir &#039;&#039;&#039;relaciones complejas&#039;&#039;&#039; sin necesidad de navegar por estructuras jerárquicas o de red.&lt;br /&gt;
* &#039;&#039;&#039;Ventaja:&#039;&#039;&#039; acceso directo a cada tabla sin las limitaciones de jerarquía o propietario/miembro.&lt;br /&gt;
&lt;br /&gt;
* Mejora la &#039;&#039;&#039;flexibilidad y mantenibilidad&#039;&#039;&#039; respecto a jerárquico y en red.&lt;br /&gt;
&lt;br /&gt;
== Conceptos Fundamentales ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Base de datos (Database)&#039;&#039; — Colección organizada de información.&lt;br /&gt;
* &#039;&#039;Tabla (Table)&#039;&#039; — Estructura que almacena los datos en filas y columnas.&lt;br /&gt;
* &#039;&#039;Registro (Row)&#039;&#039; — Una entrada individual dentro de una tabla.&lt;br /&gt;
* &#039;&#039;Campo (Field)&#039;&#039; — Un atributo específico dentro de una tabla.&lt;br /&gt;
* &#039;&#039;Clave primaria (Primary Key)&#039;&#039; — Identificador único de cada registro.&lt;br /&gt;
* &#039;&#039;Índice (Index)&#039;&#039; — Estructura que acelera búsquedas sobre columnas.&lt;br /&gt;
* &#039;&#039;Normalización&#039;&#039; — Proceso de diseñar tablas para reducir redundancia y mejorar integridad.&lt;br /&gt;
* &#039;&#039;Transacción&#039;&#039; — Conjunto de operaciones que se ejecutan de forma atómica (ACID).&lt;br /&gt;
&lt;br /&gt;
Ejemplo de creación de tabla:&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE usuarios (&lt;br /&gt;
    id INT PRIMARY KEY AUTO_INCREMENT,&lt;br /&gt;
    nombre VARCHAR(50),&lt;br /&gt;
    correo VARCHAR(100),&lt;br /&gt;
    contraseña VARCHAR(100)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Estructura y Diseño ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Normalización&#039;&#039;&#039;: aplicar formas normales (1FN, 2FN, 3FN...) para evitar datos redundantes y anomalías de actualización.&lt;br /&gt;
* &#039;&#039;&#039;Desnormalización&#039;&#039;&#039;: a veces usada por motivos de rendimiento en consultas analíticas o sistemas OLAP.&lt;br /&gt;
* &#039;&#039;&#039;Constraints (Restricciones)&#039;&#039;&#039;: NOT NULL, UNIQUE, CHECK, FOREIGN KEY para mantener la integridad referencial.&lt;br /&gt;
* &#039;&#039;&#039;Índices&#039;&#039;&#039;: deben diseñarse con cuidado; ayudan a acelerar SELECT pero pueden ralentizar INSERT/UPDATE/DELETE.&lt;br /&gt;
* &#039;&#039;&#039;Particionamiento y Sharding&#039;&#039;&#039;: técnicas para distribuir datos en varias unidades físicas para escalabilidad.&lt;br /&gt;
* &#039;&#039;&#039;Backups y recuperación&#039;&#039;&#039;: estrategias (completos, incrementales, logs de transacción) y pruebas periódicas de restauración.&lt;br /&gt;
&lt;br /&gt;
== Consultas SQL Básicas ==&lt;br /&gt;
&lt;br /&gt;
; SELECT&lt;br /&gt;
: Utilizado para consultar información dentro de una base de datos.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM usuarios;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; INSERT&lt;br /&gt;
: Añade nuevos registros a una tabla.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO usuarios (nombre, correo, contraseña)&lt;br /&gt;
VALUES (&#039;user&#039;, &#039;user@darfe.es&#039;, &#039;clave123&#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; UPDATE&lt;br /&gt;
: Modifica registros existentes.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE usuarios&lt;br /&gt;
SET contraseña = &#039;claveNueva&#039;&lt;br /&gt;
WHERE nombre = &#039;Darfe&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; DELETE&lt;br /&gt;
: Elimina registros de una tabla.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
DELETE FROM usuarios WHERE id = 3;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Operaciones Avanzadas ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;JOINs&#039;&#039;&#039;: INNER JOIN, LEFT/RIGHT JOIN, FULL OUTER JOIN para combinar datos de varias tablas.&lt;br /&gt;
* &#039;&#039;&#039;Subconsultas&#039;&#039;&#039;: consultas dentro de otras consultas para operaciones complejas.&lt;br /&gt;
* &#039;&#039;&#039;Funciones de agregación&#039;&#039;&#039;: COUNT(), SUM(), AVG(), MIN(), MAX() y GROUP BY para resúmenes.&lt;br /&gt;
* &#039;&#039;&#039;Views (Vistas)&#039;&#039;&#039;: consultas guardadas que simplifican acceso y encapsulan lógica.&lt;br /&gt;
* &#039;&#039;&#039;Stored Procedures y Triggers&#039;&#039;&#039;: lógica almacenada en la BD — cuidado con la complejidad y permisos.&lt;br /&gt;
* &#039;&#039;&#039;Optimización de consultas&#039;&#039;&#039;: EXPLAIN/EXPLAIN ANALYZE para revisar planes de ejecución y refinar índices.&lt;br /&gt;
&lt;br /&gt;
== Seguridad y Buenas Prácticas ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Validación de entradas:&#039;&#039;&#039; Evita la inyección SQL usando consultas preparadas y validación estricta de tipos y longitudes.&lt;br /&gt;
* &#039;&#039;&#039;Principio de menor privilegio:&#039;&#039;&#039; Las cuentas que acceden a la BD deben tener solo los permisos necesarios (no usar root/sa en la app).&lt;br /&gt;
* &#039;&#039;&#039;Cifrado:&#039;&#039;&#039; Almacenar contraseñas usando hash con sal (por ejemplo, bcrypt o Argon2). No almacenar contraseñas en texto plano.&lt;br /&gt;
* &#039;&#039;&#039;Auditoría y logging:&#039;&#039;&#039; Monitorear accesos, cambios en esquemas y operaciones en tablas sensibles.&lt;br /&gt;
* &#039;&#039;&#039;Configuración segura:&#039;&#039;&#039; Deshabilitar funciones innecesarias, aplicar parches y mantener la BD actualizada.&lt;br /&gt;
* &#039;&#039;&#039;Seguridad de red:&#039;&#039;&#039; Aislar la infraestructura de BD en segmentos privados, usar TLS/SSL para conexiones y VPNs cuando corresponda.&lt;br /&gt;
* &#039;&#039;&#039;Pruebas regulares:&#039;&#039;&#039; Integrar escaneos de seguridad y pruebas de penetración en el ciclo de desarrollo.&lt;br /&gt;
&lt;br /&gt;
== Inyección SQL (tema desarrollado) ==&lt;br /&gt;
&lt;br /&gt;
=== Definición ===&lt;br /&gt;
La &#039;&#039;&#039;inyección SQL&#039;&#039;&#039; (SQL Injection) es una vulnerabilidad que permite a un atacante insertar, manipular o alterar consultas SQL construidas dinámicamente por una aplicación. Sucede cuando datos controlados por el usuario se incorporan directamente en una consulta sin separación clara entre código y datos.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo representativo ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
&#039; OR &#039;1&#039;=&#039;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Si* esta cadena se concatena en una consulta de autenticación sin protección, la condición lógica puede resultar siempre verdadera y permitir acceso no autorizado. Este ejemplo se usa para ilustrar el concepto; la exposición real siempre depende del contexto de la consulta y del tratamiento que haga la aplicación de la entrada.&lt;br /&gt;
&lt;br /&gt;
=== Tipos comunes de inyección (visión general) ===&lt;br /&gt;
* &#039;&#039;&#039;Basada en errores (Error-based):&#039;&#039;&#039; El atacante provoca errores que pueden revelar información sobre la estructura de la BD.&lt;br /&gt;
* &#039;&#039;&#039;Basada en booleanos (Boolean-based / Blind):&#039;&#039;&#039; El atacante envía consultas que devuelven true/false y deduce información a partir de la respuesta de la aplicación.&lt;br /&gt;
* &#039;&#039;&#039;Basada en tiempo (Time-based / Blind):&#039;&#039;&#039; Se inyectan operaciones que tardan en ejecutarse para inferir datos según la latencia observada.&lt;br /&gt;
* &#039;&#039;&#039;UNION-based:&#039;&#039;&#039; Combinar resultados de consultas adicionales usando UNION para extraer datos.&lt;br /&gt;
* &#039;&#039;&#039;Stacked queries (consultas apiladas):&#039;&#039;&#039; Ejecutar múltiples sentencias en una sola petición (no soportado por todas las BD o APIs).&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Nota: aquí no se proporcionan payloads avanzados ni instrucciones para explotar sistemas — el objetivo es entender los vectores para diseñar defensas efectivas.&lt;br /&gt;
&lt;br /&gt;
=== Indicadores y detección ===&lt;br /&gt;
* Comportamiento inesperado en formularios (logins, búsquedas).&lt;br /&gt;
* Mensajes de error SQL reveladores en la interfaz (evitar mostrarlos a usuarios).&lt;br /&gt;
* Respuestas distintas al introducir caracteres especiales (&#039; &amp;quot; ; -- /*).&lt;br /&gt;
* Auditoría que muestra consultas construidas dinámicamente con concatenación de inputs.&lt;br /&gt;
* Pruebas automatizadas y herramientas de escaneo (SAST/DAST) que señalan puntos de inyección.&lt;br /&gt;
&lt;br /&gt;
=== Consecuencias potenciales ===&lt;br /&gt;
* Acceso no autorizado a datos sensibles (usuarios, contraseñas, registros financieros).&lt;br /&gt;
* Exfiltración masiva de datos.&lt;br /&gt;
* Alteración o borrado de información crítica.&lt;br /&gt;
* Escalada de privilegios o ejecución de código si la BD o entorno lo permite.&lt;br /&gt;
* Compromiso del sistema completo si la aplicación y la BD están integradas sin separación.&lt;br /&gt;
&lt;br /&gt;
=== Prevención y mitigación (prácticas recomendadas) ===&lt;br /&gt;
&lt;br /&gt;
# Mantener separación entre código y datos&lt;br /&gt;
* &#039;&#039;&#039;Consultas preparadas / parámetros enlazados&#039;&#039;&#039; (prepared statements): la forma más efectiva de evitar que la entrada del usuario sea interpretada como código SQL.&lt;br /&gt;
Ejemplo en PHP (PDO):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
$stmt = $pdo-&amp;gt;prepare(&#039;SELECT * FROM usuarios WHERE correo = ? AND contraseña = ?&#039;);&lt;br /&gt;
$stmt-&amp;gt;execute([$correo, $hash]);&lt;br /&gt;
$result = $stmt-&amp;gt;fetch();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en Python (psycopg2):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
cur.execute(&amp;quot;SELECT * FROM usuarios WHERE correo = %s AND contraseña = %s&amp;quot;, (correo, hash))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Validación y saneamiento&lt;br /&gt;
* Validar tipo, longitud, formato (ej. emails, números, fechas) antes de procesar.&lt;br /&gt;
* Rechazar o normalizar entradas inesperadas.&lt;br /&gt;
* Evitar la construcción dinámica de SQL con concatenación de strings.&lt;br /&gt;
&lt;br /&gt;
# Principio de menor privilegio&lt;br /&gt;
* La cuenta que usa la aplicación para conectarse debe tener permisos mínimos (por ejemplo SELECT/INSERT/UPDATE en tablas necesarias, sin DROP ni DDL excesivo).&lt;br /&gt;
&lt;br /&gt;
# Uso de ORMs con cuidado&lt;br /&gt;
* Los ORMs suelen parametrizar consultas correctamente, pero el uso de consultas «raw» o concatenadas puede introducir riesgos. Revisar y auditar el código que construye SQL manualmente.&lt;br /&gt;
&lt;br /&gt;
# Manejo seguro de errores y mensajes&lt;br /&gt;
* No mostrar trazas o errores SQL al usuario. Registrar internamente la información suficiente para investigar sin exponer estructura ni datos.&lt;br /&gt;
&lt;br /&gt;
# Registro, monitoreo y respuesta&lt;br /&gt;
* Implementar alertas ante patrones sospechosos (picos de errores, inputs raros).&lt;br /&gt;
* Mantener logs de consultas y accesos para análisis forense.&lt;br /&gt;
&lt;br /&gt;
# Controles adicionales&lt;br /&gt;
* Web Application Firewall (WAF) como capa adicional — útil pero no sustituye buenas prácticas de codificación.&lt;br /&gt;
* Hardening y parches de la BD y del servidor de aplicaciones.&lt;br /&gt;
* Revisión de código y pruebas de seguridad (pentests, fuzzing) periódicas.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos de corrección (antes / después) ===&lt;br /&gt;
&lt;br /&gt;
*Código vulnerable (no usar):*&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
$sql = &amp;quot;SELECT * FROM usuarios WHERE correo = &#039;&amp;quot; . $_POST[&#039;correo&#039;] . &amp;quot;&#039; AND contraseña = &#039;&amp;quot; . $_POST[&#039;pass&#039;] . &amp;quot;&#039;&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Corrección con prepared statement (recomendada):*&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
$stmt = $pdo-&amp;gt;prepare(&amp;quot;SELECT * FROM usuarios WHERE correo = :correo AND contraseña = :pass&amp;quot;);&lt;br /&gt;
$stmt-&amp;gt;bindParam(&#039;:correo&#039;, $_POST[&#039;correo&#039;]);&lt;br /&gt;
$stmt-&amp;gt;bindParam(&#039;:pass&#039;, $hash);&lt;br /&gt;
$stmt-&amp;gt;execute();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Respuesta ante un incidente ===&lt;br /&gt;
1. Contener: desactivar vectores afectados (ej. endpoints vulnerables), cambiar credenciales si fuera necesario.&lt;br /&gt;
2. Analizar logs para identificar alcance y vectores.&lt;br /&gt;
3. Restaurar desde backups conocidas si hay pérdida o corrupción de datos.&lt;br /&gt;
4. Corregir la vulnerabilidad (parche, refactorización de consultas) y ejecutar pruebas.&lt;br /&gt;
5. Notificar a las partes afectadas según normativa/Política de divulgación y cumplimiento legal.&lt;br /&gt;
&lt;br /&gt;
=== Recursos y pruebas seguras ===&lt;br /&gt;
* Usar entornos de laboratorio aislados (no en producción) para practicar detección/mitigación.&lt;br /&gt;
* Emplear herramientas de seguridad para evaluar de forma controlada (sólo en sistemas de prueba o con autorización explícita).&lt;br /&gt;
&lt;br /&gt;
== Referencias rápidas ==&lt;br /&gt;
* Aprender SQL es clave para desarrollar con seguridad: entender cómo se construyen consultas permite tanto optimizar rendimiento como prevenir fallos de seguridad.&lt;br /&gt;
* Revisar siempre los puntos del código que generan SQL dinámico y tratarlos como zonas críticas de seguridad.&lt;br /&gt;
&lt;br /&gt;
[[index.php?title=Categoría:Bases de datos]]&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=Categor%C3%ADa:Bases_de_datos&amp;diff=2622</id>
		<title>Categoría:Bases de datos</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=Categor%C3%ADa:Bases_de_datos&amp;diff=2622"/>
		<updated>2025-10-28T20:13:12Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: Adición de resumen de la categoria&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Una &#039;&#039;&#039;base de datos (BD)&#039;&#039;&#039; es un sistema organizado para &#039;&#039;&#039;almacenar, gestionar y recuperar información&#039;&#039;&#039; de manera eficiente. Permite que múltiples usuarios o aplicaciones accedan a los datos de forma estructurada y segura.&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=TCP/IP&amp;diff=2621</id>
		<title>TCP/IP</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=TCP/IP&amp;diff=2621"/>
		<updated>2025-10-28T19:49:14Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Modelo capas-OSI y TCP-IP.jpg|thumb|Modelo capas-OSI y TCP-IP|right|200px]]&lt;br /&gt;
El &#039;&#039;&#039;modelo TCP/IP&#039;&#039;&#039; es considerado un &#039;&#039;&#039;estándar de comunicación&#039;&#039;&#039; ampliamente adoptado en el ámbito de las redes informáticas. Su función principal es &#039;&#039;&#039;definir el procedimiento mediante el cual los datos generados en el origen son transmitidos, entregados y comprendidos correctamente en el destino&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Para lograrlo, el modelo hace uso de &#039;&#039;&#039;diversos protocolos&#039;&#039;&#039;, que pueden operar &#039;&#039;&#039;de forma simultánea o individual&#039;&#039;&#039;, cada uno con &#039;&#039;&#039;una función específica y un rol bien definido&#039;&#039;&#039; dentro del proceso de comunicación.&lt;br /&gt;
&lt;br /&gt;
Una forma sencilla de comprender el funcionamiento del modelo TCP/IP —comúnmente utilizada en la literatura técnica— es &#039;&#039;&#039;compararlo con una red telefónica&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
Si reemplazamos un teléfono celular antiguo por uno más reciente, &#039;&#039;&#039;no tendríamos inconvenientes al comunicarnos&#039;&#039;&#039; dentro de la red. No sería necesario realizar configuraciones complejas ni reconstruir toda la infraestructura de comunicación, ya que ambos dispositivos —el viejo y el nuevo— &#039;&#039;&#039;emplean los mismos protocolos y estándares globales de transmisión&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Esta &#039;&#039;&#039;uniformidad en los protocolos&#039;&#039;&#039; es precisamente lo que &#039;&#039;&#039;evita la obsolescencia tecnológica&#039;&#039;&#039; en la comunicación básica, permitiendo que &#039;&#039;&#039;nuevos dispositivos sean compatibles con las redes existentes&#039;&#039;&#039;, siempre que respeten las mismas normas y estándares definidos por el modelo TCP/IP.[[File:Portada_del_libro_Seguridad_por_Niveles.jpg|left|120px|thumb|Portada del libro]]&lt;br /&gt;
Este tema lo encontrarás ampliamente desarrollado en el &amp;quot;CAPÍTULO 1: Introducción&amp;quot; de nuestro libro &amp;lt;b&amp;gt;[[Seguridad por Niveles]]&amp;lt;/b&amp;gt; (que puedes descargar gratuitamente de nuestra web: https://darfe.es).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Muchas de las imágenes y explicaciones, también las podrás encontrar en [[Wikipedia]] en el siguiente enlace:&lt;br /&gt;
&lt;br /&gt;
    https://es.wikipedia.org/wiki/Familia_de_protocolos_de_internet&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Tenemos un video qu epuede ser de tu interés sobre este tema&lt;br /&gt;
|-&lt;br /&gt;
! Nombre del video !! Enlace&lt;br /&gt;
|-&lt;br /&gt;
| TCP/IP usando Wireshark||&amp;lt;youtube width=&amp;quot;130&amp;quot; height=&amp;quot;60&amp;quot;&amp;gt;Moe5Mj_Wo5w&amp;lt;/youtube&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=SQL&amp;diff=2620</id>
		<title>SQL</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=SQL&amp;diff=2620"/>
		<updated>2025-10-28T02:05:51Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= SQL =&lt;br /&gt;
&#039;&#039;&#039;SQL&#039;&#039;&#039; (Structured Query Language) es el lenguaje estándar utilizado para gestionar y manipular bases de datos relacionales.  En el ámbito de la &#039;&#039;&#039;ciberseguridad&#039;&#039;&#039;, comprender SQL es fundamental para identificar vulnerabilidades, prevenir inyecciones maliciosas y asegurar la integridad de los datos.&lt;br /&gt;
&lt;br /&gt;
== Conceptos Fundamentales ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Base de datos (Database)&#039;&#039; — Colección organizada de información.&lt;br /&gt;
* &#039;&#039;Tabla (Table)&#039;&#039; — Estructura que almacena los datos en filas y columnas.&lt;br /&gt;
* &#039;&#039;Registro (Row)&#039;&#039; — Una entrada individual dentro de una tabla.&lt;br /&gt;
* &#039;&#039;Campo (Field)&#039;&#039; — Un atributo específico dentro de una tabla.&lt;br /&gt;
&lt;br /&gt;
Ejemplo de creación de tabla:&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE usuarios (&lt;br /&gt;
    id INT PRIMARY KEY AUTO_INCREMENT,&lt;br /&gt;
    nombre VARCHAR(50),&lt;br /&gt;
    correo VARCHAR(100),&lt;br /&gt;
    contraseña VARCHAR(100)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Consultas SQL Básicas ==&lt;br /&gt;
&lt;br /&gt;
; SELECT&lt;br /&gt;
: Utilizado para consultar información dentro de una base de datos.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM usuarios;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; INSERT&lt;br /&gt;
: Añade nuevos registros a una tabla.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO usuarios (nombre, correo, contraseña)&lt;br /&gt;
VALUES (&#039;user&#039;, &#039;user@darfe.es&#039;, &#039;clave123&#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; UPDATE&lt;br /&gt;
: Modifica registros existentes.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE usuarios&lt;br /&gt;
SET contraseña = &#039;claveNueva&#039;&lt;br /&gt;
WHERE nombre = &#039;Darfe&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; DELETE&lt;br /&gt;
: Elimina registros de una tabla.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
DELETE FROM usuarios WHERE id = 3;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Seguridad y Buenas Prácticas ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Validación de entradas:&#039;&#039;&#039; Evita la inyección SQL usando consultas preparadas.&lt;br /&gt;
* &#039;&#039;&#039;Principio de menor privilegio:&#039;&#039;&#039; Los usuarios de base de datos deben tener solo los permisos necesarios.&lt;br /&gt;
* &#039;&#039;&#039;Cifrado:&#039;&#039;&#039; Almacena contraseñas usando hash (por ejemplo, bcrypt o Argon2).&lt;br /&gt;
* &#039;&#039;&#039;Auditoría:&#039;&#039;&#039; Monitorea los accesos y modificaciones en tablas sensibles.&lt;br /&gt;
&lt;br /&gt;
Ejemplo de inyección SQL maliciosa:&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
&#039; OR &#039;1&#039;=&#039;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Categoría:Bases de datos]]&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=SQL&amp;diff=2619</id>
		<title>SQL</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=SQL&amp;diff=2619"/>
		<updated>2025-10-28T02:04:55Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: Creacion del apartado SQL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= SQL =&lt;br /&gt;
&#039;&#039;&#039;SQL&#039;&#039;&#039; (Structured Query Language) es el lenguaje estándar utilizado para gestionar y manipular bases de datos relacionales.  En el ámbito de la &#039;&#039;&#039;ciberseguridad&#039;&#039;&#039;, comprender SQL es fundamental para identificar vulnerabilidades, prevenir inyecciones maliciosas y asegurar la integridad de los datos.&lt;br /&gt;
&lt;br /&gt;
== Conceptos Fundamentales ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Base de datos (Database)&#039;&#039; — Colección organizada de información.&lt;br /&gt;
* &#039;&#039;Tabla (Table)&#039;&#039; — Estructura que almacena los datos en filas y columnas.&lt;br /&gt;
* &#039;&#039;Registro (Row)&#039;&#039; — Una entrada individual dentro de una tabla.&lt;br /&gt;
* &#039;&#039;Campo (Field)&#039;&#039; — Un atributo específico dentro de una tabla.&lt;br /&gt;
&lt;br /&gt;
Ejemplo de creación de tabla:&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE usuarios (&lt;br /&gt;
    id INT PRIMARY KEY AUTO_INCREMENT,&lt;br /&gt;
    nombre VARCHAR(50),&lt;br /&gt;
    correo VARCHAR(100),&lt;br /&gt;
    contraseña VARCHAR(100)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Consultas SQL Básicas ==&lt;br /&gt;
&lt;br /&gt;
; SELECT&lt;br /&gt;
: Utilizado para consultar información dentro de una base de datos.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM usuarios;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; INSERT&lt;br /&gt;
: Añade nuevos registros a una tabla.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO usuarios (nombre, correo, contraseña)&lt;br /&gt;
VALUES (&#039;user&#039;, &#039;user@darfe.es&#039;, &#039;clave123&#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; UPDATE&lt;br /&gt;
: Modifica registros existentes.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE usuarios&lt;br /&gt;
SET contraseña = &#039;claveNueva&#039;&lt;br /&gt;
WHERE nombre = &#039;Darfe&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; DELETE&lt;br /&gt;
: Elimina registros de una tabla.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
DELETE FROM usuarios WHERE id = 3;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Seguridad y Buenas Prácticas ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Validación de entradas:&#039;&#039;&#039; Evita la inyección SQL usando consultas preparadas.&lt;br /&gt;
* &#039;&#039;&#039;Principio de menor privilegio:&#039;&#039;&#039; Los usuarios de base de datos deben tener solo los permisos necesarios.&lt;br /&gt;
* &#039;&#039;&#039;Cifrado:&#039;&#039;&#039; Almacena contraseñas usando hash (por ejemplo, bcrypt o Argon2).&lt;br /&gt;
* &#039;&#039;&#039;Auditoría:&#039;&#039;&#039; Monitorea los accesos y modificaciones en tablas sensibles.&lt;br /&gt;
&lt;br /&gt;
Ejemplo de inyección SQL maliciosa:&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
&#039; OR &#039;1&#039;=&#039;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
	<entry>
		<id>https://darfe.es/ciberwiki/index.php?title=Categor%C3%ADa:Bases_de_datos&amp;diff=2618</id>
		<title>Categoría:Bases de datos</title>
		<link rel="alternate" type="text/html" href="https://darfe.es/ciberwiki/index.php?title=Categor%C3%ADa:Bases_de_datos&amp;diff=2618"/>
		<updated>2025-10-28T01:56:29Z</updated>

		<summary type="html">&lt;p&gt;Warid.F: Página creada con «Bases de Datos»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bases de Datos&lt;/div&gt;</summary>
		<author><name>Warid.F</name></author>
	</entry>
</feed>