sql >> Database >  >> RDS >> Mysql

Wachtwoordopslag van e-mailaccount in Java/Mysql-serverprogramma

De opmerkingen die erop wijzen dat SMTP geen authenticatie vereist, zijn correct. Dat gezegd hebbende, alle drie van de opties die u hebt opgegeven, zijn onveilig, ervan uitgaande dat de server standaardhardware en -software gebruikt. Ik zal laten zien waarom ze allemaal onzeker zijn, hoewel ik je oorspronkelijke bestelling niet zal volgen.

Wat als iemand de server zou stelen? Daarna konden ze gewoon het bestand of de database openen, het wachtwoord lezen en onmiddellijk toegang krijgen tot alle belangrijke informatie in het bedrijf. Dus tenzij je dag en nacht gewapende bewakers rond de server hebt staan, is dit al behoorlijk onveilig.

Maar het wordt erger. Geen enkel computersysteem is volledig onkwetsbaar voor aanvallen, en verschillende goed gepubliceerde aanvallen (bijvoorbeeld Sony's PlayStation Network) in de afgelopen jaren hebben aangetoond dat een aanvaller de inhoud van schijfbestanden en databases kan bereiken zonder fysieke toegang. Verder blijkt uit je vraag dat de server in kwestie bedoeld is om pakketten (HTTP-verzoeken, inkomende e-mails, etc.) van de buitenwereld te accepteren, wat je aanvalsoppervlak vergroot.

Dit is verleidelijk, maar dit is nog schadelijker dan optie 2 of optie 3. Om te beginnen wordt een privé final string-veld opgeslagen in het .class-bestand dat is gegenereerd door de Java-compiler, dus met deze optie sla je al het onversleutelde wachtwoord op op de harde schijf van de server. Na het compromitteren van de server zoals in optie 2 of 3, kan een aanvaller gewoon javap uitvoeren om het leesbare wachtwoord uit het .class-bestand te halen.

Deze aanpak verbreedt je aanvalsoppervlak echter nog meer. Als het wachtwoord wordt opgeslagen als onderdeel van de broncode, is het plotseling beschikbaar voor alle ontwikkelaars die aan de code werken. Volgens het principe van de minste rechten mogen de ontwikkelaars geen extra wachtwoorden weten, en daar is een heel goede reden voor. Als een van de ontwikkelaars machines van buitenaf wordt gestolen of gecompromitteerd, kan de aanvaller de harde schijf van de gecompromitteerde machine doorzoeken en het leesbare wachtwoord krijgen. Dan is er broncontrole. Een van de echt belangrijke voordelen van broncodebeheer is dat u elke eerdere versie van uw code kunt inspecteren. Dus zelfs als u in de toekomst overschakelt naar een veilige methode, als het wachtwoord ooit bronbeheer is binnengekomen, is de bronbeheerserver een potentieel aanvalspunt.

Al deze factoren tonen aan dat, zelfs als de beveiliging van de HTTP/mailserver van topklasse is, optie 1 het aanvalsoppervlak zo sterk vergroot dat de beveiliging van de HTTP/mailserver niet echt helpt.

Extra detail:In het begin specificeerde ik "ervan uitgaande dat de server standaard hardware en software gebruikt". Als je geen standaardhardware en -software gebruikt, kun je dingen doen zoals opstarten vanaf alleen-lezen opslag en alleen een versleutelde database gebruiken, waarbij een persoon bij elke keer opstarten de decoderingssleutel moet verstrekken. Daarna leeft de gedecodeerde informatie alleen in het geheugen en wordt deze nooit naar de schijf geschreven. Op deze manier moet een aanvaller, als de server wordt gestolen, de server loskoppelen en zo alle gedecodeerde informatie verliezen die alleen in het geheugen stond. Dit soort instellingen wordt soms gebruikt voor een Kerberos KDC (met de server in een afgesloten doos voor extra veiligheid), maar wordt anders zelden gebruikt, en is eerlijk gezegd overdreven als er een gemakkelijke manier is om je probleem op te lossen zonder al deze extra's kosten.



  1. Hoe kan ik het aantal woorden in een string in Oracle tellen?

  2. Oracle-datum tussen zoekopdracht

  3. Hoe ontsnap ik aan een enkele aanhalingsteken in SQL Server?

  4. PostgreSQL 13:laat slots je primaire niet doden