Depuis enregistrement du mot de passe n'est pas souhaitée, mais il n'est pas non plus souhaitable d'avoir à ressaisir le mot de passe plusieurs fois, la seule solution que je vois est la suivante :
- Crypter le mot de passe (en utilisant par exemple AES) avec une clé aléatoire de longueur suffisante.
- Stocker le mot de passe et le nom d'utilisateur cryptés dans la session
- Il n'est probablement pas inutile de crypter également le nom d'utilisateur et le serveur de messagerie, juste au cas où. Cela ne fera pas de mal, et un attaquant présumé n'a pas un nom d'utilisateur connu sur un serveur.
- Stocker la clé de cryptage dans un cookie
Ce n'est pas parfait, mais cela devrait fonctionner raisonnablement bien, et c'est probablement le meilleur compromis que l'on puisse obtenir.
À chaque requête, le navigateur de l'utilisateur envoie le cookie, le script PHP script peut utiliser le cookie pour décrypter les données stockées dans la session et effectuer une requête sur le serveur IMAP/POP.
Quelqu'un qui exploite votre serveur et accède à la mémoire de session pourra voler des mots de passe cryptés, mais si vos clés aléatoires sont d'une longueur suffisante et d'une bonne qualité aléatoire, c'est assez futile.
Le fait est que l'on ne peut vraiment sécuriser quelque chose que si l'on a une bonne connaissance de l'environnement. avec un secret que tu ne connais pas . Si vous disposez des informations nécessaires pour décrypter certaines informations (le mot de passe IMAP dans ce cas) sur votre serveur, par exemple dans la mémoire de session, toute personne exploitant votre serveur peut faire de même. Quelle que soit la puissance de votre cryptage, cela ne fait aucune différence.
La seule façon de s'assurer que les secrets restent secrets est de les crypter à l'aide de quelque chose que vous ne savez pas , ce que seul l'utilisateur (ou, dans ce cas, le navigateur de l'utilisateur) sait.
Ce qui conduit au problème insoluble qu'à un moment donné, il est évident que l'on ne peut pas faire l'économie d'une réflexion sur l'avenir de l'Europe. doivent savoir au moins pendant une fraction de seconde. C'est le temps qui s'écoule entre la réception du cookie par le serveur web et la sortie du script PHP script. En théorie, si quelqu'un ayant un accès Root lisait la mémoire du processus pendant ce laps de temps, il connaîtrait également le secret. Mais hélas, c'est quelque chose que l'on ne peut pas vraiment empêcher.
Tant que les informations ne sont jamais stockées nulle part (pas même dans la session), elles devraient être raisonnablement sûres.
Bien entendu, tout cela suppose que au moins la page de connexion de votre site (de préférence toutes) est servie via https://
et vous utilisez TLS/SSL pour communiquer avec les serveurs de messagerie. Dans le cas contraire, vous vous exposez à des attaques beaucoup plus triviales.