Mi recomendación sería: "No cree la cookie de autenticación con JavaScript". Una cookie que identifique una sesión autenticada debe marcarse con la marca HttpOnly para ayudar a mitigar los ataques XSS, por lo que debe ser creada por el servidor y enviada con la respuesta, no creada en el cliente.
Aparte de estos consejos, tu suposición es correcta en su mayor parte. Si no hay un conjunto de expiración en la cookie, entonces es una cookie de sesión y se mantendrá activa mientras el navegador esté abierto, y el sessionid es válido. Si el servidor caduca periódicamente las sesiones autenticadas, la cookie ya no se adjuntará a una sesión en el servidor y, por lo tanto, será esencialmente nula.
A su segunda pregunta, si desea especificar una cantidad máxima de tiempo de inicio de sesión de un usuario antes de tener que volver a autenticarse, por lo general se realiza con un vencimiento continuo, en el que se actualiza el tiempo de caducidad con cada solicitud para ser x minutos a partir de ahora, por lo que las sesiones de usuario activas no caducan a la fuerza, solo las sesiones inactivas en las que el usuario no ha realizado una nueva solicitud en los últimos x minutos. La forma más segura de hacer esto es vincular el valor de la cookie a una sesión en el servidor que expira a tiempo, que el usuario no puede interferir. La caducidad de la cookie no es suficiente, ya que puede ser modificada por el cliente. Si necesita almacenar un lado del cliente con vencimiento de sesión, debe estar cifrado en el valor de la cookie, por lo que nuevamente debe crearse del lado del servidor, no por JavaScript, ya que el servidor debe ser el único lugar donde se puede descifrar el valor para que sea seguro
Y, por último, a su tercera pregunta, ¿cuál es el tiempo adecuado antes de que caduque una sesión? Depende totalmente de su aplicación. Las aplicaciones financieras a menudo tienen tiempos de espera muy cortos de cinco o diez minutos. Muchas aplicaciones tienen un tiempo predeterminado más tradicional de 20 o 30 minutos. Si el flujo de trabajo de su aplicación requiere una gran cantidad de tiempo en una página sin actualizar, es posible que se requiera aún más tiempo. No sé que sea terriblemente importante en cualquier caso, a menos que su aplicación tenga necesidades de seguridad específicas.