Está en la página 1de 4

A1 INYECCION.

Está orientado a impedir que a través de diferentes medios se puedan inyectar código (sql,
php siempre que los permisos de administrador, conocer las librerías que permiten abrir las bases
de datos) Proteger y ocultar la estructura de base de datos, si quiere inyectar sql a través de la
misma aplicación lo va a poder hacer porque conoce la estructura de la base de datos. La
estrategia es ocultar la estructura de la base de datos por medio procedimientos almacenados,
detrás de las vistas. Ocupando campos que se han distintos a los almacenados. Si ocupo pdo y no
concateno las querys estoy poniéndole un nivel mas de dificultad al atacante. En la medida que
ponga más cosas será más seguro. Cuando la comunicación es muy privada en especial entre bases
de datos, se usa un túnel entre firewall. Que es un protocolo para comunicación segura. Abro una
sesión de ssh comunico por la aplicación las bases de datos. Lo que circula por allí esta protegido.
Otro es implementar una VPN. Comunicamos 2 redes de datos por internet en forma cifrada.

Que es SSH

SSH o Secure Shell es un protocolo de comunicaciones seguras para conectar de forma remota


dos sistemas operativos para que podamos controlar mediante consola de comandos un equipo
host desde un equipo cliente.

Lo más importante de SSH es que es capaz de encriptar la sesión de conexión, cosa que no es
posible con FTP o Telnet, protocolos mucho más inseguros y ya poco utilizados.

SSH también permite copiar datos de forma segura desde un host a un cliente con la posibilidad
de utilizar claves RSA más seguras que las claves de sesión de usuarios normales y además
podremos tunelizar la transmisión de ficheros para adquirir aún más seguridad.

Actualmente es posible hacer SSH entre prácticamente cualquier equipo tenga el sistema
operativo que tenga, ya que existen programas específicos para obtener estar compatibilidad,
como por ejemplo OpenSSH, Putty, Shell, SSH-Agent entre otros.

Con SSH nos podremos conectar a un equipo configurado como servidor tanto en una red interna
como de forma totalmente remota. Para hacer esto tendremos que abrir el puerto TCP 22, que es
el utilizado por defecto.

Sinopsis de la Clase ¶
PDO {
public __construct ( string $dsn [, string $username [, string $password [, array $options 
]]] )
public beginTransaction ( void ) : bool
public commit ( void ) : bool
public errorCode ( void ) : mixed
public errorInfo ( void ) : array
public exec ( string $statement ) : int
public getAttribute ( int $attribute ) : mixed
public static getAvailableDrivers ( void ) : array
public inTransaction ( void ) : bool
public lastInsertId ([ string $name = NULL ] ) : string
public prepare ( string $statement [, array $driver_options = array() ] ) : PDOStatement
public query ( string $statement ) : PDOStatement
public quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] ) : string
public rollBack ( void ) : bool
public setAttribute ( int $attribute , mixed $value ) : bool
}

Este tipo de estructura no las puedo mandar por api. La tengo que esconder del usuario.

A2 PERDIDA DE AUTENTIFICACIÓN.

Perdida de autentificación por usar usuario y contraseña de cualquier base de datos. Sobre todo si
es de administrador. Para evitar esto se deben ocupar permisos para los distintos usuarios que
usaran la aplicación según corresponda. Estos usuarios se usan en la aplicación.

A3 EXPOSICION DE DATOS SENSIBLES.

También pudiesen utilizar algún cliente de las bases de datos. Se pueden atacar y obtener acceso
igual a los datos. Se pueden entonces obtener un CRUD sin tener acceso a la aplicación. En la
aplicación normalmente van los datos de conexión. Teniendo controlado los roles y los usuario es
muy difícil el ataque. Por lo tanto, el riesgo está en como se realiza la query. Las apis o web
services muestran todo en forma limpia. Si muestro todo. Usando en las querys * estoy mostrando
la estructura de la base de datos. Los select deben ser selectivos solo mostrar los datos que
necesita conocer. Se deben cambiar los nombres de los campos a mostrar o cambiando los
nombres de las tablas en las vistas. Almacenar los datos cifrados donde se pueda. Mysql no lo
hace, sql server y Oracle si. Si llegamos a tener perdidas de información los datos están cifrados y
no podrán ser leídos.

A4 ENTIDADES EXTERNAS XML

Oracle permite el almacenamiento y procesamiento de XML como un tipo de datos y


eventualmente podría ganar privilegios sobre la base de datos. Oracle permite ejecutar cosas.
Mysql no. Se podría llegar a la ejecución de código desde un XML almacenado ese XML lo puedo
transformar en un objeto y ese objeto llamar a un método y ejecutarlo , se puede hacer pero no es
habitual. Se genera en su propio protocolo. Si uso JSON si permiten validación de JSON. Si envio
JSON el motor de base de datos se procupa de la validación. Ej. MariDB.

A5 PÉRDIDA DE CONTROL DE ACCESO.

No aplica.

A6 CONFIGURACIÓN DE SEGURIDAD INCORRECTA.

Debo verificar que el sistema operativo tenga todos sus parches de actualización. Esto es para
evitar que tenga acceso al acceso físico. Configurar correctamente los archivos include para el
acceso a las páginas que contiene la configuración de acceso a las bases de datos. Estos archivos
deben estar en una ubicación distinta.

A7 cross- site scripting(xss)

No aplica

A8 Deserialización insegura.

No aplica

A9 Uso de componentes con vulnerabilidades conocidas.

Para conectarse a bases de datos se tiene que descargar una librería. En el caso de JAVA .jav, un dll
para .net o un .co para apache. El que se conecta no es php sino que apache. Para que se conecten
las librerías deben actualizarse frecuentemente. El objeto parchar las grietas de la librería. Estas
librerías deben estar revisadas y probadas por el autor, recomendadas por el y para el framework
en caso de .net.

A10 Registro y Monitoreo Insuficientes

Todas las bases de datos hacen registros es conveniente tener un sistemas o algo que monitoree
los registros log. No solo por los ataques sino por fallos en las querys que están procesando. Mysql
no siempre lo permiten, pero oracle y Sql server tiene tareas. Si esos datos no se están ejecutando
no me voy a dar cuenta de estas faltas. Estos registros no tienen que ver con los registros que
nosotros debemos tener en la base de datos.

¿Qué es una VPN?

Una conexión VPN lo que te permite es crear una red local sin necesidad que sus integrantes estén
físicamente conectados entre sí, sino a través de Internet. Es el componente "virtual" del que
hablábamos antes. Obtienes las ventajas de la red local (y alguna extra), con una mayor
flexibilidad, pues la conexión es a través de Internet y puede por ejemplo ser de una punta del
mundo a la otra.
Las VPN son muy seguras. Existen varias OpenVPN es una de ellas. The fortiner.

También podría gustarte