¿Pros y contras de usar DB id en la URL?
-
03-07-2019 - |
Pregunta
Por ejemplo: http://stackoverflow.com/questions/396164/exposing-database-ids-security-risk
y http://stackoverflow.com/questions/396164/ blah-blah
carga la misma pregunta.
(¿Supongo que este es el ID de DB de la tabla de preguntas? ¿Es este estándar en ASP.NET?)
¿Cuáles son los pros y los contras de usar este tipo de esquema en su aplicación web?
Solución
Bueno, por un lado, los ID simples suelen ser secuenciales, por lo que es bastante fácil adivinar y recuperar otros datos de su aplicación.
Cargue JSON en tiempo de ejecución en lugar de dinámicamente a través de AJAX https://stackoverflow.com/questions/395858/doesnt-matter-what-I- escribe aquí
Ahora, habiendo dicho eso, eso también podría ser visto como un bono, porque nadie en su sano juicio haría que su seguridad dependa completamente del hecho de que tiene que hacer clic en un enlace para acceder a su datos seguros , y por lo tanto, el fácil descubrimiento de los datos podría ser bueno.
Sin embargo, un punto es que en algún momento vas a reindexar tu base de datos, tener algo que haga que la antigua URL sea inválida sería malo, si no fuera por otra razón que los motores de búsqueda aún tendrían enlaces antiguos.
Además, aquí en SO, es bastante normal usar enlaces como este para otras preguntas, por lo que si en algún momento desean reindexar y renumerar las cosas (o pasar a las guías), aún tendrán que mantener la estructura antigua y ID's.
Ahora, ¿es probable que esto suceda o sea necesario? Probablemente no.
No me preocuparía demasiado por eso, solo construya su seguridad como si se conociera cada punto de entrada a su aplicación y no debería haber problemas.
Otros consejos
-
El ID de la base de datos se usa para buscar la pregunta en la base de datos. Es numérico lo que significa: rápido. Si lo dejabas fuera, tenías que buscar el título, que es mucho más lento.
-
La pregunta en sí misma es parte de la URL para que sea amigable para los motores de búsqueda " ;. Se clasificará mejor por g ** gle, etc.
Pro:
- Súper fácil de recuperar la información de la página. Toma la identificación, llama a la base de datos, viola. Su tabla será (debería) indexada para que esta búsqueda sea súper rápida.
- URL única garantizada.
Con:
- Las ID en su sistema se muestran públicamente. No es un problema en un sistema disponible públicamente como SO. Sin embargo, las medidas de seguridad adecuadas en el back-end pueden hacer que esto no sea un problema, incluso en sistemas sensibles.
- URLs feas. Los números de más de 6 dígitos son difíciles de recordar y hacen que sea más difícil distinguir las páginas, si el número es todo lo que lo identifica. Esto también puede tener consecuencias de SEO, ya que las URL con información más relevante y bien estructurada generalmente se clasifican mejor. SO compensa al proporcionar el nombre de la publicación en la URL también. Si bien todavía no puedo recitar una publicación en particular a mi amigo en el almuerzo, aún puedo encontrarla más fácil en el historial del navegador.
- Búsquedas más lentas. En general, hacer búsquedas de texto en una base de datos es más lento.
Pero recuerde que en una comunidad como esta existe una posibilidad más alta (aunque todavía mínima) de que el mismo nombre de pregunta se publique al mismo tiempo, lo que rompería las cosas, por lo que se debe aplicar algún tipo de identificación única, las identificaciones son probablemente bastante lógico en el contexto en el que se desarrolló esta aplicación web en particular.
No creo que sea una mala práctica, y bastante común, hacerlo en ASP.NET y otros marcos. Como dijo @lassevk, si su seguridad depende de ello, entonces necesita algunas comprobaciones más (el usuario X puede grabar en Y), pero se trata más de la facilidad de uso de las URL para los sitios públicos.
Por ejemplo, las URL de SO son bastante amigables:
Google califica la información al INICIO de la URL más alta que al final, por lo que debe tener el siguiente aspecto:
https://stackoverflow.com/pros -y-contras-de-usar-db-id-in-the-url / q / 407120
debería obtener una clasificación más alta para " pros y contras de usar db id en la url " . No es el único factor, pero es bastante importante: mira el formato de Amazon, lo hacen por una muy buena razón:
http://www.amazon.com/Maverick-Ricardo-Semler/dp / 0712678867
Wordpress lo hace así:
sin embargo, si publicas dos publicaciones el mismo día llamadas " foo " ;, obtienes:
la babosa (foo / foo2) no es una PK, pero se mantiene como única en la tabla de publicaciones.
Creo que poner la ID en la URL no es un problema, ¡a menos que su URL sea un GUID! Demasiado tiempo, y difícil de escribir. Si es un int, o algún tipo de guía breve (por ejemplo, 6-8 caracteres), entonces no debería ser un problema.