El problema con el uso de una contraseña en varios sitios es que todas sus cuentas pueden verse comprometidas si incluso un sitio pierde sus contraseñas.
Su solución, como se indica en la pregunta, intenta resolver esto utilizando un hash único en cada sitio como su contraseña. Esto tiene algunos beneficios, ya que no requiere que realmente mantenga un administrador de contraseñas (solo necesita una herramienta para volver a generar los hashes según sea necesario) y llega a mantenga la simplicidad de solo tener que recordar una contraseña para todos los sitios.
Sin embargo, si asumimos que los mismos atacantes que obtienen acceso a una de sus "contraseñas" también pueden romper ese hash, su esquema falla de manera efectiva por la misma razón que una contraseña compartida regular: Todavía está usando la misma base Contraseña para cada sitio. Como el atacante, en este punto, también sabría la sal para el hash agrietado, puede derivar fácilmente su proceso de generación de sal (en su pregunta, es simplemente la URL o algún componente de él). Esto hace que la sal de cada sitio sea "conocida" por el atacante y, por lo tanto, niega su valor.
Entonces, ¿cómo solucionamos este error? Haz la sal al azar, y larga. Depende de usted si incluye o no la URL como un componente, pero aquí está el problema con el que nos encontramos: cualquier sal con un componente aleatorio que sea lo suficientemente largo como para agregar valor de seguridad no será memorable para el ser humano. (Al menos, no para no sabios). Excelente para protegerse de los atacantes. Horrible para la usabilidad.
Entonces, ¿qué hacemos para compensar eso? Mantenga una hoja de cálculo o una base de datos con una lista de los sitios y sus sales asociadas.
Espera ... ¿no volvemos a tener un administrador de contraseñas ? La única diferencia aquí es que en realidad no está almacenando sus contraseñas, sino que está almacenando solo parte de la información necesaria para volver a generar las contraseñas. Podría decirse que esto es mejor en el sentido de que la obtención de estos datos por sí sola no es suficiente para volver a generar sus contraseñas. ¿Pero realmente vale la pena?