|
|
 |
CapÃtulo 27. Seguridad de Bases de Datos
Hoy en dÃa, las bases de datos son componentes cardinales
de cualquier aplicación basada en web, permitiendo que los
sitios web provean contenido dinámico. Debido a que
información considerablemente sensible o secreta puede ser
almacenada en una base de datos, usted debe considerar seriamente
la protección de sus bases de datos.
Para recuperar o almacenar cualquier información necesita
conectarse a la base de datos, enviar una consulta válida,
recoger el resultado y cerrar la conexión. Hoy en
dÃa, el lenguaje de consultas usado comúnmente en
estas interacciones es el Lenguaje de Consultas Estructurado (SQL
por sus siglas en Inglés). Puede apreciar cómo un
atacante puede
intentar
acometidas con una consulta SQL.
Como puede suponer, PHP no puede proteger su base de datos por
sà solo. Las siguientes secciones están dirigidas a
servir de introducción a los conceptos básicos de
cómo acceder y manipular bases de datos desde scripts PHP.
Mantenga en mente esta simple regla: protección en
profundidad. Entre más acciones tome para incrementar la
protección de su base de datos, menor será la
probabilidad de que un atacante tenga éxito exponiendo o
abusando de cualquier información almacenada. Un buen
diseño del esquema de la base de datos y de la
aplicación basta para lidiar con sus mayores temores.
El primer paso siempre es crear la base de datos, a menos que
desee usar una creada por alguien más. Cuando una base de
datos es creada, ésta es asignada a un dueño,
quien ejecutó la sentencia de
creación. Usualmente, únicamente el dueño
(o un super-usuario) puede hacer cualquier cosa con los objetos
de esa base de datos, y para que otros usuarios puedan usarla,
deben otorgarse privilegios.
Las aplicaciones nunca deberÃan conectarse a la base de
datos bajo el usuario correspondiente a su dueño, o como
un super-usuario, ya que éstos usuarios pueden, por
ejemplo, ejecutar cualquier consulta a su antojo, modificando el
esquema (p. ej. eliminando tablas) o borrando su contenido
completo.
Usted puede crear diferentes usuarios de la base de datos para
cada aspecto de su aplicación con derechos muy limitados
sobre los objetos de la base de datos. Tan solo deben otorgarse
los privilegios estrictamente necesarios, y evitar que el mismo
usuario pueda interactuar con la base de datos en diferentes
casos de uso. Esto quiere decir que si un intruso gana acceso a
su base de datos usando las credenciales de sus aplicaciones,
él solo puede efectuar tantos cambios como su
aplicación se lo permita.
Es buena idea que no implemente toda la lógica del asunto
en la aplicación web (es decir, en su script); en su
lugar, hágalo en el esquema de la base de datos usando
vistas, disparadores o reglas. Si el sistema evoluciona, se
espera que nuevos puertos sean abiertos a la aplicación,
y tendrá que re-implementar la lógica para cada
cliente de la base de datos. Por sobre todo, los disparadores
pueden ser usados para gestionar de forma transparente todos los
campos automáticamente, lo cual con frecuencia provee
información útil cuando se depuren problemas de su
aplicación, o se realicen rastreos sobre transacciones
particulares.
add a note
User Contributed Notes
Seguridad de Bases de Datos
somebody at whocares dot com
10-May-2006 09:03
Encrypting user input doesn't do much to guard against SQL injection attacks. Naturally, you want to encrypt sensitive information across the wire, but if a user puts in malicious data into an input field, any encryption scheme will just dutifully unpack it at the other and and still run the SQL injection hack if you haven't guarded against it.
Encryption is not magic pixie dust to sprinkle on things to make them more secure.
30-Jun-2005 03:57
you can also chamge CHMOD for some file containing "user names" or "passwords"
webmaster at rackhouse dot net
12-Mar-2005 02:08
On a database design point of view, you should make sure that you design databases in a manor that any query run from them need minimal input from the user and if it requires user input, that you encrypt where possible.
jjahn at SPAMSUCKS dot signicast dot com
20-Jun-2003 10:17
I would say one of the best ways to guard against SQL injection is to use the excellent PEAR DB package. If you prepare() and execute() your queries, PEAR will automagically addslashes and handle the query depending on your RDBMS. And of course, for repeatable queries prepare and execute will give you a bit of a readability and speed increase.
| |
| | Citas célebres | Todos somos muy ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas. Albert Einstein Físico estadounidense (1879-1955) | | Citas en tu mail | | ©Contenidos Gratis |
| Chiste de... Mamá, mamá | | Paranoias | - Mamá, mamá, ¿cuál es la definición de paranoico?
- Probablemente crees que no lo sé y me quieres pillar, ¿no? | | Chistes en tu mail | | ©ContenidosGratis |
| Inicio | Acción | Estrategia | Palabras | Puzzles | Solitarios | Foro Trucos |  | Cake Mania Jugadores: 6835 Categoría del juego: Acción Objetivo del juego: Ayuda a Jill a recuperar la pastelería de su abuela llevando su propia pastelería; consigue clientes y gana dinero. |
|  | Rainbow Web Jugadores: 2199 Categoría del juego: Puzzles Objetivo del juego: Rompe un pegajoso hechizo y salva un reino de fantasía en Rainbow Web. Tendrás toneladas de diversión mientras juegas a este mágico desafío para la mente. |
|  | Mahjongg Fortuna Jugadores: 12462 Categoría del juego: Solitarios Objetivo del juego: Velocidad y habilidad mental son las armas más importantes en esta versión de un antiguo juego asiático. Despeja el tablero lo antes posible haciendo clic en las fichas iguales y gánate la fama eterna de la puntuación más alta. |
|  | Chainz 2 Jugadores: 6955 Categoría del juego: Puzzles Objetivo del juego: Entra en el mundo de las combinaciones con Chainz 2: Relinked, emocionante secuela del exitazo del año pasado, Chainz. Gira eslabones y crea combinaciones de 3 ó más. |
|  | Delicious Jugadores: 4405 Categoría del juego: Acción Objetivo del juego: ¿Eres un as de la multitarea? ¿Quieres que tus clientes estén contentos? ¡Pues Delicious es tu juego! Sacia el apetito de los clientes y tenlos contentos; ¡no te arriesgues! |
|  | Bookworm Jugadores: 4568 Categoría del juego: Palabras Objetivo del juego: Junta las letras para formar palabras. ¡Las palabras más largas valen más puntos! |
|  | Zuma Jugadores: 4976 Categoría del juego: Acción Objetivo del juego: Controla el ídolo de la rana de piedra de los antiguos Zuma en este intrigante enigma de acción. ¡Dispara bolas para formar conjuntos de tres, pero si dejas que lleguen a la calavera dorada morirás! |
|  | Jewel of Atlantis Jugadores: 3798 Categoría del juego: Puzzles Objetivo del juego: Descubre la ciudad hundida de la Atlántida y busca valiosos tesoros. Viaja más allá de las profundidades del mar y vive trepidantes aventuras en Jewel of Atlantis. |
|  | Jewel Quest Jugadores: 3727 Categoría del juego: Puzzles Objetivo del juego: Convierte la arena de la antigua selva en oro tan rápido como puedas juntando grupos de 3 elementos. ¡Los grupos más grandes valen más puntos! |
|  | Bejeweled 2 Jugadores: 3659 Categoría del juego: Puzzles Objetivo del juego: Con cuatro modos de juego únicos y fascinantes, nuevas piezas de juego explosivas e imponentes fondos planetarios, Bejeweled 2 es mucho más adictivo que nunca. |
|
|