0% encontró este documento útil (0 votos)
2 vistas2 páginas

Seguridad en Consultas SQL: Mínimos Privilegios

El documento enfatiza la importancia de configurar el acceso a la base de datos con mínimos privilegios, utilizando cuentas de solo lectura cuando sea posible para prevenir ataques de inyección SQL. Se desaconseja el uso de StringBuilder para concatenar consultas SQL directamente, ya que esto puede exponer la aplicación a vulnerabilidades. En su lugar, se recomienda usar PreparedStatement para manejar los valores de las consultas de manera segura.

Cargado por

fernandaotalora
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2 vistas2 páginas

Seguridad en Consultas SQL: Mínimos Privilegios

El documento enfatiza la importancia de configurar el acceso a la base de datos con mínimos privilegios, utilizando cuentas de solo lectura cuando sea posible para prevenir ataques de inyección SQL. Se desaconseja el uso de StringBuilder para concatenar consultas SQL directamente, ya que esto puede exponer la aplicación a vulnerabilidades. En su lugar, se recomienda usar PreparedStatement para manejar los valores de las consultas de manera segura.

Cargado por

fernandaotalora
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

5.

Configura el Acceso a la Base de Datos con Mínimos Privilegios

Si la cuenta de base de datos solo necesita lectura, usa un usuario con permisos
restringidos (SELECT en lugar de INSERT, UPDATE o DELETE cuando sea posible).

Estas técnicas te ayudarán a prevenir ataques de inyección SQL y mejorar la seguridad


en tus consultas. ¿Quieres ayuda con un caso específico en tu aplicación?

4o

Dijiste:

String builder

ChatGPT dijo:

Si necesitas construir consultas dinámicas en Java, no uses StringBuilder para


concatenar valores directamente en la consulta, ya que esto puede exponer tu
aplicación a inyección SQL.

Mala práctica (Vulnerable a SQL Injection)

java

CopiarEditar

StringBuilder query = new StringBuilder();

[Link]("SELECT * FROM tramite WHERE estado = '")

.append(estado) // Riesgo de inyección si `estado` proviene de entrada del


usuario

.append("'");

Statement stmt = [Link]();

ResultSet rs = [Link]([Link]());

Si estado contiene algo como ' OR 1=1 --, la consulta se convierte en:

sql

CopiarEditar

SELECT * FROM tramite WHERE estado = '' OR 1=1 --'

Esto devuelve todos los registros y compromete la seguridad de la base de datos.


Buena práctica (StringBuilder con PreparedStatement)

Si necesitas construir consultas dinámicas, usa StringBuilder solo para armar la


estructura de la consulta, pero usa PreparedStatement para los valores.

java

CopiarEditar

StringBuilder query = new StringBuilder();

[Link]("SELECT * FROM tramite WHERE 1=1");

if (estado != null && ![Link]()) {

[Link](" AND estado = ?");

PreparedStatement pstmt = [Link]([Link]());

[Link](1, estado); // Previene SQL Injection

ResultSet rs = [Link]();

También podría gustarte