He escuchado a personas dar conferencias aquí y allá en Internet que es una buena práctica ocultar los identificadores de bases de datos públicas en las aplicaciones web. Supongo que significan principalmente en formas y en URL, pero nunca he leído nada más que un bocado sobre el tema.
EDITAR : Por supuesto, ahora que pregunto esto, encuentro algunos recursos sobre el tema:
- /programming/2374538/obscuring-database-ids
- /programming/1895685/should-i-obscure-primary-key-values
- http://joshua.schachter.org/2007/01/autoincrement.html
Estos enlaces satisfacen parte de mi curiosidad, pero las publicaciones de SO no tienen muchos votos y no están necesariamente centradas en el tema en este contexto, por lo que no estoy seguro de qué hacer al respecto, y algunos de ellos afirman que el tercero El enlace es falso. Dejaré el resto de mi publicación intacta:
Entiendo las diferencias entre la oscuridad y la seguridad, así como cómo los dos pueden trabajar juntos, pero no puedo imaginar por qué esto sería necesario.
¿Hay algo de verdad en esto, es solo paranoia, o es totalmente falso?
Se me ocurren formas de hacerlo, pero, por supuesto, agrega mucha complejidad al código de la aplicación. ¿En qué circunstancias sería útil? Si esto es algo que la gente hace con frecuencia, ¿cómo se suele implementar? Hashing los identificadores? ¿Algo más? Parece mucho trabajo por poca seguridad adicional. No estoy buscando soluciones reales, solo quiero tener una idea de cómo / por qué la gente haría esto en el mundo real.
¿Se considera esto realmente una "mejor práctica" o es simplemente una microoptimización de poco valor?
NOTA : Creo que algunas personas pueden haber tenido una idea equivocada: no estoy sugiriendo que los identificadores difíciles de adivinar serían el único mecanismo de seguridad, obviamente habría las comprobaciones de acceso habituales. Supongamos que están en su lugar, y que simplemente conocer la identificación o la identificación hash de un registro no es suficiente para otorgar acceso.