Sicherheitsrelevante Fragen

liquidbeats

Erfahrenes Mitglied
Nabend,


ich habe da ein Paar Sicherheitsrelevante Fragen. und zwar möchte ich Hijacking verhindern. Wie kann man dies am besten bewerksteligen?
Gehen wir mal von CMS, Shopsystememn Gästebücher oder Blogsoftware aus. Wwelche ja schon Vorprogrammiert sind, teilweise ja nicht immer Perfekt.
Dort wird das abändern der Scripte doch etwas aufwändiger.

Gibt es eine möglichkeit, bspw. das ausführen von exec zu verbieten, wenn eine Datei, ausserhalb des Webservers aufgerufen werden soll? Dies betrifft auch passthru.

Danke im vorraus.

PS: Dieses Thema ist ein Sehr wichtiges Anliegen :)


Grüße
 
Also es gibt viele Wege ...

1. Immer wachsam sein auf die neusten Exploints für die Software
2. PHP: safe_mode = on
3. Alles aktuell halten
4. Alles mitloggen und die logs mal paar mal in der Woche angucken
5 ... etc

MfG BehindTheScenes
 
Hi,

diese Frage zu Präzisieren fällt mir etwas schwer, aber ich versuch es einfach mal.
Mir geht es Primär darum Hijacking zu verhindern.

Bei Register_globals == ON
ist es ja möglich Variablen direkt zu Verarbeiten, ohne auf $_GET oder $_POST zurückgreifen zu müssen.

Ich stell mir jetzt die Frage, worin der Unterschied liegt ob ich nun dierekt mit der Variablen Arbeite, oder aber diese erst mit dem setzten gültigkeit verleihe
$var = $_GET['var'];

Der Inhalt ist ja der gleiche. :rolleyes:


Das einzige was ich verstehe ist, das man so bspielsweise nicht einfach ein Script aufrufen kann das bspw. ein requuire oder include benötigt und dort eine variable namens $query beinhaltet.

Mal ein Kurzer Beispiel

Regulär würde dass also su aussehen
PHP:
$query = "SELECT * FROM table";
include('./query.php'); // beinhaltet die Funktion zum ausführen des Querys
/*
####################
Inhalt der query.php
####################
if(isset($query) && !empty($query))
$result = mysql_query($query);
*/
Wenn man jetzt direkt die query.php aufruft, kann man, sofern Register Globals Aktiviert, Locker ein Query Ausführen.
Abgesehen davon, dass ich grundsätzlich in die Abfrage immer noch nach $_GET oder $_POST abfrage.
Meine Abfragen sind da schon etwas Komplexer, dennoch als Beispiel Hoffentlich ausreichend :)


Worauf ich also hinaus möchte.
Auch wenn register_globals = OFF eingestellt ist, ist es bspw. bei dieser Methode mgl. einen Query einzufügen. Wie kann man dies bspw. verhindern?



Dieses Beispiel gilt auch für exec(), passthru() usw.
Eben alles womit man Schädlichen Unsinn anstellen kann.


Grüße
 
Soetwas darf überhaupt nicht ins Web ...

Den das wäre eine SQL-Injection. Sowas einfach vermeiden.
Eine möglichkeit wäre ein paar defines zu definieren. dann kannst du prüfen ob der define definiert ist ....
PHP:
#in den anderen files
define ("in_the_script", md5("bin_im_script_/($"%§%"));

#in der query.php:

if(define("in_the_script") && in_the_script == md5("bin_im_script_/($"%§%"))
{
   #hier der code, wenn im script
}
else
{
echo "hijacker"
}
 
Mal ein paar ganz generelle Sachen:

php.ini
- open_base_dir = Festlegen eines Root-Verzeichnisses, worüber hinaus keine Zugriffe auf Dateien erlaubt sind (so ist es z.B. nicht möglich, andere Dateien deines Systems zu manipulieren, wie /etc/htpasswd, usw.)
- register_globals = off (oben schon angesprochen - dann können keine Variablen deines Scripts manipuliert werden [bei schlechter Programmierung evtl. möglich!] - nur eben die GET-, POST-, REQUEST- und COOKIE-Variablen, die du sowieso zuerst auf Gültigkeit prüfen musst - wie alles, was vom Benutzer kommt!)
- magic_quotes_gpc = off (Eigentlich sinnvoll, da Sonderzeichen bei angeschalteter Option automatisch maskiert werden; Allerdings ist es sinnvoller, dies manuell und angepasst auf die jeweilige Verwendung zu tun: mysql_real_escape_string, addslashes, htmlentities, etc. Vergessen darf man dies allerdings niemals! [Bei Faulheit oder schlechten Scripts sollte man magic_quotes_gpc besser auf 'on' stellen!])

Generell
Grundsätzlich sollte alles verboten sein, was nicht ausdrücklich erlaubt ist - So ist das in der EDV!

Und so nebenbei: Zum Thema "Sicherheit" gibt es oben sogar als "Wichtig" markierten, sehr ausführlichen Thread!
http://www.tutorials.de/forum/php/240856-sicherheit-php.html
 
Zurück