php sicherheit - sql injection usw.

knastmoench

Mitglied
Thread Starter
Dabei seit
04.11.2008
Beiträge
59
Reaktionspunkte
2
Hallo zusammen.

Ich habe vor demnächst ein größeres Projekt zu starten, beidem ich etwas Angst habe, dass jemand versucht es zu hacken.

Die größte Sicherheitslücke wäre wohl, dass der user Daten in eine mysql Datenbank eintragen kann (per POST Funktion über php).

Bisherige geplante Lösung:
1. mysql_real_escape_string() zu verwenden
2. mit str_replace() alle gefährlichen Zeichen oder ggf. auch alle Zeichen umzuwandeln z.B. aus "OR" wird "_O/F/-/F/R_" oder so ähnlich..
3. habe ich vor einige der gefährlichen php funktionen die ich nicht benötige zu deaktivieren...
4. Ports deaktivieren?

Möglichkeit 1 sollte ja schonmal halbwegs sicher sein.
Bei Möglichkeit 2 habe ich bedenken, dass sich da jemand per Code injection dran zu schaffen machen könnte...

Mein Code wäre also etwa so:
PHP:
<?php
$content=$_POST['content'];

$content = str_replace("OR", "_O/F/-/F/R_", $content);  
// könnte hier jemand in $content etwas posten, dass schlimmere Folgen hätte? Wie kann ich das verhindern?

$content = mysql_real_escape_string($content);
// Wie sicher ist das am ende?

// Eintragung in DB usw...


Ist das so sicher? Wäre über Tipps für optimale Sicherheit sehr dankbar.
Mein Ziel ist es
1. Den Code sicher zu machen, sodass niemand über normale POST oder GET Funktionen irgendwas anstellen kann. Habe bisher nur die beiden Ideen oben, wäre über weitere dankbar :)
2. Generell den Server sicher zu machen (Ubuntu Server, momentan noch mit plesk)

Wäre es sinnvoll alle Ports bis auf 22 + 80 zu sperren bzw. nicht mehr zu lauschen?


Schonmal Danke für eure Tipps :)
 
kann dir zwar nichts zu php sagen aber den ssh port würde ich auf einen nicht standard port legen und fail2ban benutzen
 
Hört sich schonmal gut an :) hast du zufällig nen Link parat?
 
Hallo,

Die größte Sicherheitslücke wäre wohl, dass der user Daten in eine mysql Datenbank eintragen kann (per POST Funktion über php).

einige grundlegende Aspekte sind oben bereits genannt. Aber ein weiterer wichtiger Punkt wird oft vergessen: das verändern von POST Daten verhindern. (-> Tamper Data) Beispielsweise die Update-ID des Datenbank-Records beim POST manipulieren, so dass ein ganz anderer Datensatz verändert wird.

Alle Daten in einem Formular können durch den User verändert werden. Sicher ist die Seite nur dann, wenn auch diese Möglichkeit zuverlässig verhindert wird.

Weiterhin können je nach Anwendung eventuell auch PHP Funktionen wie htmlentities oder addslashes hilfreich sein.

Thomas
 
Mit mysql_real_escape_string ist schon das Wesentliche gegen SQL-Injection getan - woran man aber auch denken muss, dem Benutzer darf keine Möglichkeit geboten werden, die Website-Konfigurationsdaten auszulesen - z.B. über eine schlampig programmierte php-Datei, die eigentlich nur Bilder einlesen und ausgeben soll, ohne dass bei der übergebenden Variable auf Datei-Extensions geprüft wird - schnell hat da mal ein neugieriger Benutzer die config.php o.ä. ausgelesen und kann deine Datenbank nach eigenem Geschmack gestalten.​
 
Zurück
Oben Unten