php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.12.2004, 12:15  
Gast
 
Beiträge: n/a
Standard Problem mit Webseiten Sicherheit

Hi,

habe ein Sicherheitsproblem auf meiner Website. Durch Variablen Manipulation kann fremder Code eingeschleust werden.

Jetzt brauche ich ein wenig Hilfe, um den Fehler zu beseitigen.

Ich includiere meine Links über ein Script und stelle den Inhalt anschliessend dar. Das ganze funktioniert folgendermassen:

<?
$leer = "";
if ($menu==$leer) {
include "page/news/show_news.php";
}
else {
include "$menu";
}
?>

Wenn die Variable Menu keinen Wert bekommt, inkludiert sie die News.php, ansonten eben die Seite welche ich übermittle. Nur mein Problem besteht darin, dass nicht nur meine Links aus der Navigation inkludiert werden, sondern auch Fremdinhalte.

Wie kann ich das umgehen, bzw. abstellen?
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.12.2004, 12:52  
Gast
 
Beiträge: n/a
Standard

http://www.phpfriend.de/forum/viewtopic.php?t=26569

Was meinst du jetzt eigentlich mit "Fremdinhalten" und "fremder "Code"?
  Mit Zitat antworten
Alt 15.12.2004, 12:54  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

also erstmal if ($menu=="") reicht vollkommen aus ^^ da musste net ne variable mit leer definieren

und zu deinem problem. include das menü nicht per include($menu) sondern per switch

switch($menu)
{
case: "forum"; include("forum.php"); break;
... etc etc etc
}

ansonsten mach n och eine abfrage

if (file_exists($menu)) include($menu);

und wenn der jenige jetzt eine eigene datei angibt die er auf seinem eigenen server hat! dann kann diese nicht includet werden da php nur dateien auf dem selben server includen kann!!! daher wird man bei dir keinen fremden code includen können.

aber machs mit switch das ist das sicherste!!!
Flor1an ist offline   Mit Zitat antworten
Alt 15.12.2004, 13:34  
Gast
 
Beiträge: n/a
Standard

Ich hab das jetzt mal so gelöst:

<?
if ($menu=="")
{
include "page/news/show_news.php";
}
elseif
(file_exists($menu))
{
include($menu);
}
else
{
print "Access Violation!";
}
?>
  Mit Zitat antworten
Alt 15.12.2004, 14:01  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

ein problem besteht noch! undzwar wenn der user jetzt als $menu soetwas angibt wie ../etc/htpasswd oder so in etwa dann kann auf die ganzen files auf dem webserver im dümmsten fall zugreifen
Flor1an ist offline   Mit Zitat antworten
Alt 15.12.2004, 14:10  
Gast
 
Beiträge: n/a
Standard

Hmmm versteh ich jetzt nicht so ganz. Wie kann ich das mal gezielt nachvollziehen, bzw. testen?
  Mit Zitat antworten
Alt 15.12.2004, 14:15  
Gast
 
Beiträge: n/a
Standard

Razor meinte wohl wenn jemand als $menü z.B. "../etc/passwd" angibt dann wird die etc/passwd included, und das wär fatal. Also nie direkt $menü includen.
  Mit Zitat antworten
Alt 15.12.2004, 14:49  
Gast
 
Beiträge: n/a
Standard

Also doch mit switch, oder kann das überprüft werden?
  Mit Zitat antworten
Alt 15.12.2004, 17:06  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

du könntest prüfen ob am anfang von $menu "../" steht wenn nicht kannst man nur auf dateien, die ab dem ordner der besagten datei liegen, includen.

oder mit switch was das allersicherste wäre
Flor1an ist offline   Mit Zitat antworten
Alt 15.12.2004, 19:46  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von RaZoR
du könntest prüfen ob am anfang von $menu "../" steht wenn nicht kannst man nur auf dateien, die ab dem ordner der besagten datei liegen, includen.
Nunja...
?seite=./././../datei.php
?seite=pfad/../../datei.php

Mit Switch wird das ganze aber bei vielen Datein evtl. umständlich da immer auch die index-Datei geändert werden muss.

Ich handhabe es so, dass Dateien die includiert werden ein .inc.php verpasst bekommen. Per URl wird das vor .inc.php übertragen.

Etwa so:
Code:
$site=isset($_GET['seite']) ? $_GET['seite'] : 'standard';
if(file_exists($site.".inc.php"))
include($site.".inc.php");
So können keine Dateien includiert werden die nicht dafür gedacht sind.
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
Webseiten werden bei Linux nicht richtig angezeigt Server, Hosting und Workstations 13 16.10.2005 13:39
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:06 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.