SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 03.08.2005, 23:32:33
Spike15 Spike15 ist offline
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
Mit Zitat antworten
  #2  
Alt 04.08.2005, 08:28:12
c4 c4 ist offline
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?
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #3  
Alt 04.08.2005, 10:58:16
Spike15 Spike15 ist offline
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.
Mit Zitat antworten
  #4  
Alt 04.08.2005, 11:01:31
c4 c4 ist offline
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.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #5  
Alt 04.08.2005, 11:13:59
Spike15 Spike15 ist offline
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.
Mit Zitat antworten
  #6  
Alt 04.08.2005, 11:22:13
c4 c4 ist offline
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. :)
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #7  
Alt 08.08.2005, 13:44:08
Tikiwiki Tikiwiki ist offline
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
Mit Zitat antworten
  #8  
Alt 08.08.2005, 14:04:58
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Sicheritslücken bei $_GET vermeiden

Wie genau wird denn hinterher $_GET['daid'] verarbeitet?
Mit Zitat antworten
  #9  
Alt 08.08.2005, 14:11:21
Tikiwiki Tikiwiki ist offline
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
Mit Zitat antworten
  #10  
Alt 08.08.2005, 14:16:01
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
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)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wiederholungen vermeiden beim rand() Befehl TerianSilva PHP Grundlagen 3 14.11.2003 10:44:50
Anfängerfehler vermeiden crowl PHP für Fortgeschrittene und Experten 2 05.03.2003 15:39:43
doppelte einträge vermeiden EraTor PHP für Fortgeschrittene und Experten 1 01.04.2002 08:39:57


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:58:46 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt