Was ist der beste Weg, um eine Intranet-Website zu sichern, die mit PHP
von Angriffen von außen entwickelt wurde?
Das ist eine erstaunlich nachdenklich stimmende Frage, und ich bin überrascht, dass Sie keine besseren Antworten erhalten haben.
Alles, was Sie für eine externe Anwendung tun würden, und dann einige.
Wenn ich Sie richtig verstehe, dann stellen Sie eine Frage, die sich sehr wenige Entwickler stellen. Die meisten Unternehmen haben eine tiefe Tiefenverteidigung, und sobald ein Angreifer da ist, ist er drin. Offensichtlich wollen Sie es auf eine Stufe bringen.
Also, über welche Art von Angriff denken wir nach? Wenn ich der Angreifer bin und Ihre Intranet-Anwendung angreife, muss ich irgendwie Zugang zu Ihrem Netzwerk haben. Dies ist möglicherweise nicht so schwierig, wie es sich anhört - ich könnte versuchen, E-Mails an Einzelpersonen in Ihrer Organisation zu adressieren, die entweder Malware-Anhänge oder Links zu Websites enthalten, die Malware installieren, um einen Trojaner auf einem internen Computer installieren zu lassen.
Sobald ich das getan habe (und die Kontrolle über einen internen PC übernommen habe), werde ich alle die gleichen Angriffe versuchen, die ich gegen irgendeine Internetanwendung versuchen würde.
Aber das ist nicht das Ende der Geschichte. Ich habe mehr Optionen: Wenn ich einen der PCs meines Benutzers habe, kann ich vielleicht einen Keylogger verwenden, um Benutzernamen und Passwörter zu sammeln, und auch alle E-Mails nach Namen und Telefonnummern durchsuchen.
Ausgerüstet mit diesen kann ich mich möglicherweise direkt in Ihre Anwendung einloggen. Ich kann sogar einen Admin-Benutzernamen / ein Passwort lernen. Selbst wenn ich es nicht tue, gibt mir eine Liste von Namen und Telefonnummern zusammen mit einem Gespür für Firmenjargon eine gute Chance, meinen Weg zu einem breiteren Zugang innerhalb Ihres Unternehmens sozial zu gestalten.
Die häufigsten Antworten zum Sichern einer Web-App:
Wenn es in einem internen Netzwerk ist, warum ist es dann sogar möglich, von außen auf die App zuzugreifen? Firewall-Regeln sollten mindestens vorhanden sein.
Der beste Weg? Deaktivieren Sie den direkten externen Zugriff!
Wenn Mitarbeiter brauchen , um sie zu verwenden (wie eine Extranet-style-Site), sollten Sie sie VPN in machen. Durch VPN haben Sie viel mehr Möglichkeiten der Authentifizierung und die meisten von ihnen sind sehr viel mehr sicherer als Ihren Intranet-Server über das Internet zugänglich zu machen.
Eine weitere Option, die nur funktioniert, wenn die Daten öffentlich-sicher sind, besteht darin, Ihren Intranet-Server so zu planen, dass die Daten auf einen anderen extern zugänglichen Server verschoben werden. Ich sage Push, weil Sie wirklich nicht möchten, dass dieser Server Zugriff auf Ihr Netzwerk hat. Lassen Sie Ihren Netzwerkserver die Arbeit machen.
Der beste Weg, um es zu sichern? Verbinden Sie es nicht mit einem Netzwerk. Machen Sie Ihre Benutzer physisch in einen bewachten Raum mit einer einzigen Konsole, auf der Mosaic ausgeführt wird.
Oh, Sie wollen, dass es einfach zu bedienen ist?
Wenn Sie diese einfachen Regeln vergessen, können Sie Ihre Anwendung überall auf den Titelseiten von Zeitungen finden, wie Yahoo Mail.
Ich würde @Oli wiederholen und wenn möglich die VPN-Methode bevorzugen. Wenn Sie jedoch aus irgendeinem Grund einen willkürlicheren Zugriff benötigen, sollten Sie SSL verwenden, um die Authentifizierung zu sichern. Zusätzlich zur Passwortauthentifizierung / IP-Adressauthentifizierung lohnt es sich, SSL mit clientseitigen Zertifikaten zu verwenden.