He heredado recientemente una base de código ASP.NET MVC 4. Un problema que noté fue el uso de algunos identificadores de bases de datos (ints) en las direcciones URL también en presentaciones de formularios html. El código en su estado actual es explotable mediante el retoque de URL y la creación de publicaciones HTML personalizadas con diferentes números.¿Cómo evito que mi HTML sea explotable al tiempo que evito los GUID?
Ahora bien, aunque puedo solucionar fácilmente los problemas de URL mediante el estado de sesión o comprobaciones de autenticación adicionales, estoy menos seguro de los identificadores de base de datos que se incrustan en el HTML que el sitio escupe (es decir, les doy un menú desplegable llenar). Cuando vuelven los identificadores en una publicación, ¿cómo puedo estar seguro de que los coloco allí como opciones válidas? ¿Qué se considera "mejor práctica" en términos de abordar este problema?
A pesar de que aprecio que podría simplemente "guiarlo", no estoy seguro de hacerlo porque me parece un fastidio trabajar con ellos al depurar bases de datos.
¿Tengo una opción aquí? ¿Debo GUID para evitar la adivinación fácil de los identificadores o existe algún tipo de mecanismo DRY que pueda usar para validar el uso de los identificadores a medida que vuelven al sitio?
ACTUALIZACIÓN: Un comentarista preguntó acerca de los exploits que estoy esperando. Digamos que escupí un formulario HTML con una lista desplegable de todas las ubicaciones desde las que se puede importar "tesoro". La identificación de las ubicaciones que posee el usuario son 1,2 y 3, estas se proporcionan en el HTML. Pero el usuario examina el html, juega con él y decide armar un POST con el ID de 4 seleccionado. 4 no es su ubicación, es la de otra persona.
¿Con qué mecanismo esperas exploits? ¿En qué situación te encuentras cuando manipular los datos puede comprometer tu sistema? Usar GUID no hace que algo sea inherentemente más seguro. – PhonicUK
Se actualizó la OP por usted. Las guías son más seguras en este escenario porque no puede adivinarlas. – Quibblesome