|
Neue Downloads
Top 5 Downloads
|
· Gäste Online: 6
· Mitglieder Online: 0
· Registrierte Mitglieder: 2,602
· Neustes Mitglied: Schlumpf2602
|
| ·
coco21 | 02:36:50 |
| ·
Seehund | 02:39:44 |
| ·
Nancy | 04:59:43 |
| ·
Webbi | 05:33:56 |
| ·
Gaboe | 18:18:56 |
| ·
FantasyGirl | 1 Tag |
| ·
Giuseppe | 1 Tag |
| ·
Blackcat | 1 Tag |
| ·
schnecke | 1 Tag |
| ·
Daddy | 1 Tag |
| ·
smojoy | 2 Tage |
| ·
VoiceX | 2 Tage |
| ·
Alberto | 2 Tage |
| ·
Helmi | 2 Tage |
| ·
Schlumpf2602 | 3 Tage |
| ·
deutznaik | 3 Tage |
| ·
douwe yntema | 3 Tage |
| ·
malaccc | 4 Tage |
| ·
R-S-O-L Cheffe Alex | 4 Tage |
| ·
Jante | 4 Tage |
|
|
|
Wie schreibe ich eine sichere Infusion? |
|
Wie schreibe ich eine sichere Infusion/Modifikation?
Wie wir alle wissen, wird Sicherheit beim CMS "PHP-Fusion" groß geschrieben. Es gibt vordefinierte Funktionen von PHP-Fusion, die alle Infusionen und Modifikationen sicherer machen. Im nachfolgenden Artikel beschreibe ich, welche Funktionen es gibt und wie man sie verwendet.
1) User Rechte:
Um den Rang/ das Level eines Users oder die Zugehörigkeit zu einer Gruppen zu überprüfen, benutze immer die Konstanten iGUEST, iUSER, iMEMBER, iADMIN, iSUPERADMIN, iUSER_RIGHTS, iUSER_GROUPS und die Funktionen checkrights(), getuserlevel(), checkgroup(), groupaccess().
Versuche keine eigenen, "besseren" Abfragen zu schreiben ;)
2) MySQL Abfragen:
Verwende immer die internen MySQL-Funktionen von PHP-Fusion, um deine Queries auszuführen:
- dbquery() - Sendet eine Anfrage an MySQL
- dbrows() - Liefert die Anzahl der Datensätze im Ergebnis
- dbcount() - Zählt Daten im Ergebnis
- dbresult() - Liefert Ergebnis
- dbarray() - Liefert einen Datensatz als assoziatives Array
- dbarraynum() - Liefert einen Datensatz als numerisches Array
Diese Funktionen sollten für den gewöhnlichen Abfragen genügen.
Tipp: Versuche deine Queries zu optimieren. Es ist nicht so gut, wenn Tausende von Querys bei einem Seitenaufruf ausgeführt werden ;)
3) $_POST und $_GET:
a) Vergesse nie, alle Eingaben der User auf gefährlichen HTML oder PHP Code zu überprüfen und zu "strippen"!
Verwende die Funktion stripinput() bevor du etwas in deine mysql-Tabelle schreiben lässt.
Beispiel:
$user_data = stripinput($POST['user_data']).
Diese Funktion ersetzt den eventuell gefährlichen Code mit den HTML-Zeichen
b) Wenn deine POST/GET-Variable eine Zahl sein soll, dann benutzt die Funktion isNum().
Wenn die übermittelte Zahl in einem mysql-Query benötigt wird, dann kannst du zum Beispiel folgenden Code verwenden, bevor du etwas in deine mysql-Tabelle schreibst:
if (!isNum($_POST['my_number'])) fallback("index.php");
oder auch:
$userzahl = isNum($_POST['user_zahl']) ? $_POST['user_zahl'] : $festgelegte_zahl;
Beachte:
- Sende niemals sensible Daten wie Passwörter über GET
- Versuche immer in deiner mysql-Datenbank mit ID-Felder zu arbeiten. Es ist einfacher und sicherer. Es ist viel einfacher zu überprüfen, ob dieser Wert numerisch ist (mit der Funktion isNum().), als einen String zu parsen und zu überprüfen, ob er sicher ist oder nicht.
4) sonstige Sachen:
- Verwende immer folgenden Code am Anfang des Adminbereichs der Infusion:
if (!checkrights("IP")) fallback(BASEDIR."index.php");
- Verwende immer folgenden Code am Anfang des Infusion-Scripts (Panel):
if (!defined("IN_FUSION")) { header("Location:../../index.php"); exit; }
- Verwende immer folgenden Code am Anfang der Include-Dateien:
if (!defined("IN_FUSION")) { header("Location:../index.php"); exit; }
- Erstelle eine leere index.php im Ordner deiner Infusion.
- Überprüfe hochgeladene Bilder immer mit der Funktion verify_image().
- Hinterlasse keine e_notice Warnungen. Vergesse nicht, Variablen mit einem Standard-Wert zu deklarieren.
Beispiel ohne Deklaration:
$otherdata = 'a';
$data = array('b', 'c', 'd');
for ($i=0;$i
if ($otherdata==$data[$i]) $result = "OK";
}
$final_result = $result;
Das obere Script würde eine e_notice Warnung hervorrufen: Variable $result not defined at line XXX.
Bei folgendem Code würde keine e_notice Warnung auftauchen:
$otherdata = 'a';
$data = array('b', 'c', 'd');
$result = "DEFAULT VALUE"; //diese Zeile fixt die Warnung
for ($i=0;$i
if ($otherdata==$data[$i]) $result = "OK";
}
$final_result = $result;
Dieser Artikel umfasst nicht alle sicherheitsrelevanten Schreibweisen, aber er soll helfen sichere Infusionen und Modifikationen für PHP-Fusion zu schreiben.
Falls noch Fragen auftauchen, bitte im Forum stellen!
Englische Urversion geschrieben von Wooya, von mir übersetzt und erweitert ;-) |
|
Dieser Beitrag wurde noch nicht kommentiert.
|
|
|
Nur Mitgliedern ist das Kommentieren gestattet.
|
|
|
Aktuelle Bewertung: (Insgesamt: 0 Bewertungen) |
|
| Aktuelle Durchschnittsbewertung: 0 Sterne |
|
|
|
|