Ik ben aan het bouwen aan een 'mini-erp' om het zo maar even te noemen. Dit moet een SaaS product worden (via een VPS of cloud dienst).
De ontwikkeling doe ik op m'n huidige hosting die niet heel veel opties biedt. PHP, MySQL met PhpMyAdmin... en dat is het wel zo'n beetje.
Van dit systeem wil ik wat betreft de code meteen een multitenant systeem maken. Dus één code base. De databases zullen wel voor elke gebruiker afzonderlijk opgezet worden.
Er komt dus één loginscherm waar alle gebruikers inloggen. Dit valideert tegen database X, waarin login gegevens en klantgegevens staan. Ook de naam en pass van de MySQL database voor elke klant staat in deze tabel. Het loginscript trekt deze info eruit en maakt na een succesvolle login direct verbinding met de database van de betreffende user, database Y.
Nu had ik heel enthousiast het databasepassword encrypted opgeslagen in de database, maar dat vind MySQL niet leuk. Die werkt gewoon met plain text voor de validatie. De oplossing is om het wachtwoord als plain text op te slaan, maar dat brengt wel een risico mee: een hacker die op een of andere manier mijn klantendatabase zou binnen geraken zou ook direct toegang kunnen verkrijgen tot ALLE databases met data van mijn klanten.
Hoe zou ik dit het beste kunnen oplossen om de veiligheid op dit gebied te kunnen garanderen?
De ontwikkeling doe ik op m'n huidige hosting die niet heel veel opties biedt. PHP, MySQL met PhpMyAdmin... en dat is het wel zo'n beetje.
Van dit systeem wil ik wat betreft de code meteen een multitenant systeem maken. Dus één code base. De databases zullen wel voor elke gebruiker afzonderlijk opgezet worden.
Er komt dus één loginscherm waar alle gebruikers inloggen. Dit valideert tegen database X, waarin login gegevens en klantgegevens staan. Ook de naam en pass van de MySQL database voor elke klant staat in deze tabel. Het loginscript trekt deze info eruit en maakt na een succesvolle login direct verbinding met de database van de betreffende user, database Y.
Nu had ik heel enthousiast het databasepassword encrypted opgeslagen in de database, maar dat vind MySQL niet leuk. Die werkt gewoon met plain text voor de validatie. De oplossing is om het wachtwoord als plain text op te slaan, maar dat brengt wel een risico mee: een hacker die op een of andere manier mijn klantendatabase zou binnen geraken zou ook direct toegang kunnen verkrijgen tot ALLE databases met data van mijn klanten.
Hoe zou ik dit het beste kunnen oplossen om de veiligheid op dit gebied te kunnen garanderen?