CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
03.08.2005, 23:32:33
|
Anfänger
|
|
Registriert seit: Jun 2004
Beiträge: 119
|
|
Sicheritslücken bei $_GET vermeiden
Nunja ich möchten jetzt bei meinen ganzen projekten
viel mit get arbeiten, bitte nicht fragen, ich wille s einfach
ich möchte gerne
index.php?page=tutorials/view_tut&setpos=Tutorials
alles schön und gut, doch ich habe zu grnüge gelesen was für GROßE Sicherheitslücken es bei dieser Variante gibt, es aber doch viele benutzten, ich möchte gerne wissen was es für lücken gibt und wie man sie beseitigen kann
ich möchte es gerne so sicher wie möglich haben, keine manupulationen usw.
danke für hinweise,codes usw.
DANKE
|
04.08.2005, 08:28:12
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
AW: Sicheritslücken bei $_GET vermeiden
Kurz gesagt: überprüfe ALLE Werte, die vom Client kommen. Nutzt Du irgendetwas ungeprüft, dann ist das eine Sicherheitslücke.
Dieses index.php?seite=wert macht man am Besten mit einem Mapping:
PHP-Code:
if (empty($_GET['seite'])) {
$inc='start';
}
else {
$inc=$_GET['seite'];
}
switch ($inc) {
case 'bilder' : $inc='bilder/vorschau/index.php'; break;
case 'admin' : $inc='admin/login.php'; break;
default : $inc='sonstiges/start.php';
}
include($inc);
So in etwa kann es aussehen. Kannst noch mehr prüfen, aber das reicht wohl erstmal aus.
Alles klarofix?
|
04.08.2005, 10:58:16
|
Anfänger
|
|
Registriert seit: Jun 2004
Beiträge: 119
|
|
AW: Sicheritslücken bei $_GET vermeiden
und gerade das mit switch wollte ich vermeiden
ich habe mir gestern mal eine methode überlegt
und wollte fragen ob des sicher und auch gut ist
$path = $_GET['path'].'.php';
if (file_exists($path) AND !strstr(strtolower($path),'http://') AND !strstr(strtolower($path),'https://') AND !strstr(strtolower($path),'ftp://') AND !strstr($path,"../") include("$path");
else {
echo 'ERROR';
exit();
}
und fals mal jemand direkt z.b statt
index.php?path=start
gleich start.php
aufruft, gibt es mit sicherheit mysqlerror, da ich ja so gecodet habe das es includiert wird
deswegen hab eich mir noch überlegt in jede datei
z.b in der start.php
das an den anfang zu machen
if (strstr($_SERVER['PHP_SELF'], 'start.php')) exit(); Weiterleitung...
nunja wäre des alles soweit okay? gibt es noch etwas zu verbessern?
danke für jede hilfe.
|
04.08.2005, 11:01:31
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
AW: Sicheritslücken bei $_GET vermeiden
Es ist immer eine schlechte Idee Dinge auszuschließen, irgendwas übersiehst Du garantiert.
Besser ist es, wenn Du prüfst, ob der Wert erlaubt ist, nicht, ob er nicht erlaubt ist. Schließlich weißt Du, was richtig ist, Du weißt aber nicht was alles falsch ist (na ja, alles, was nicht richtig ist...)
Das mit der Weiterleitung ist okay, habe ich auch drin.
|
04.08.2005, 11:13:59
|
Anfänger
|
|
Registriert seit: Jun 2004
Beiträge: 119
|
|
AW: Sicheritslücken bei $_GET vermeiden
jop stimmt irgendwie,aber warum benutzt dann phpkit und andere große cms's
fast den gleichen code?
mhh nja aich weiß schon das ich etwas übersehen, das stimmt,aber kann man das jetzt nicht schon mit meiner methode auf ein minimal reduzieren?
was kann man vielelicht noch für functionen rein nhemen?
naja ich will das mit switch usw. nicht amchen, da ich keine lust ellenlangen code nach unten(die seitennamen) aufzulisten, desweiteren was ist wenn ich ein cms machen will da soll man auh selber eine seite erstellen können, also kann ich schonmal diese variante nicht nehmen.
|
04.08.2005, 11:22:13
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
AW: Sicheritslücken bei $_GET vermeiden
Nur weil viel genutzte Programme etwas machen, heißt bekanntlich noch lange nicht, dass es gut geschweige denn richtig ist...
Wenn Du Seiten dynamisch verwaltest, dann nutzt Du auch eine DB und dann überprüfst Du die Abfragen auch, allerdings mittels DB-Abfragen.
Es ändert sich also nicht der Weg, nur wie Du in beschreitest. ;)
Ob Du mit dem Code da oben sicher bist weiß ich nicht, hab keine Zeit zum Denken. :)
|
08.08.2005, 13:44:08
|
Anfänger
|
|
Registriert seit: Apr 2005
Beiträge: 115
|
|
AW: Sicheritslücken bei $_GET vermeiden
Hallo zusammen
verzeiht wenn ich mich an diesem Thread gleich anhänge und hoffe ich habe dies nicht falsch verstanden, aber ich bin auch gerade dabei meine Seiten etwas sicherer zumachen.
Habe aber meine Schwierigkeiten zu erkennen und zu verstehen, wo nun das große Risiko bestehen soll speziell bei meinem Beispiel????
Beschäftige mich noch nicht lange mit PHP und verkenne sicher das Risiko.
Hier mal als Beispiel wie ich Werte per $_GET übergebe.
HTML-Code:
<a href=dokudetails.php?daid=$variablenname>
in der Adresszeile sieht das dann so aus:
http://adresse/dokudetails.php?daid=61833
Meine Frage: Habe ich da schon eine Sicherheitslücke. Wenn ein User nun eine daid per Hand eingibt die es nicht gibt wird halt die Seite leer angezeigt. Naja da könnte ich überprüfen. Genauso ob es eine Zahl oder String ist. Da bekomm ich ein Warning.
Aber auch wenn ich das mal nicht prüfe, kann er da das System überlisten und durch ein offenes Türchen schlüpfen???? Wo liegt also das Risiko.
Vielleicht kann mir das mal wer anhand eines Beispiels erklären.
Danke
Dietmar
|
08.08.2005, 14:04:58
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Sicheritslücken bei $_GET vermeiden
Wie genau wird denn hinterher $_GET['daid'] verarbeitet?
|
08.08.2005, 14:11:21
|
Anfänger
|
|
Registriert seit: Apr 2005
Beiträge: 115
|
|
AW: Sicheritslücken bei $_GET vermeiden
Hi xabbuh,
vorläufig habe ich das so gemacht aber noch nicht der Letzstand. Ich lerne noch immer dazu.
$uebergabedaid = $_GET['daid'];
und dann häng ich die Variable einfach in einen SQL-Befehl in die WHERE-Bedingung rein. Mehr ist es nicht.
Habe ich da schon den Schlüssel zum Schloß weitergereicht. :-)
Dietmar
|
08.08.2005, 14:16:01
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Sicheritslücken bei $_GET vermeiden
Wenn du die Variable mit intval() explizit in einen Integer umwandelst, solltest du keine Probleme haben. Solltest du das nicht machen, besteht die Gefahr von SQL-Injections.
Geändert von xabbuh (08.08.2005 um 14:18:40 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 22:46:55 Uhr.
|