php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.12.2008, 16:20  
Ahrta5
Gast
 
Beiträge: n/a
Standard Anstatt Warning ein Infotext einblenden.

Also meine Seiten werden über eine Variable gestartet z.B. s=news.
Das ganze wird dann über ein Script vom content/ Ordner rausgesucht:

PHP-Code:
<?

    
// Seite laden

if($s == "")
        {
        
ob_start();
        include 
"content/start.php";
        
$content ob_get_clean();
        }
      else
        {
        
ob_start();
        include 
"content/$s.php";
        
$content ob_get_clean();
        }
        
    
ob_start();
    include 
"boxes/loginbox.php";
    
$login ob_get_clean();

 

    
$data = array(    
    
    
'content' => $content,
    
'userlogin' => $login,

    );
    
$template file_get_contents('designs/design.html');
    foreach (
$data as $key => $value) { $template str_replace('{' $key '}'$value$template); }
    
    echo 
$template;
    


?>
Funktioniert auch ohne Probleme

Was mein Problem nun ist, wenn man eine Datei aufruft die es nicht im content Ordner gibt, werden drei Warnungen ausgegeben:

Zitat:
Warning: include(content/agb.php) [function.include]: failed to open stream: No such file or directory in /var/www/web1031/html/webdesign/content/design.php on line 14

Warning: include(content/agb.php) [function.include]: failed to open stream: No such file or directory in /var/www/web1031/html/webdesign/content/design.php on line 14

Warning: include() [function.include]: Failed opening 'content/agb.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/web1031/html/webdesign/content/design.php on line 14
Nun möchte ich, das anstatt die Warnungen ein Text ausgegeben wird z.B. "Sie sind einem falschen Link gefolgt." oder das man auf die Startseite weitergeleitet wird.

Jetzt weis ich nur nicht wie ich das anstelle, also was ich wie umschreiben muss.

Kann mir da einer helfen?


mfg

PS: Frohe Weinachten
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.12.2008, 16:30  
lutoma
Gast
 
Beiträge: n/a
Standard

PHP-Code:
 <?

    
// Seite laden

if($s == "")
        {
        
ob_start();
        include 
"content/start.php";
        
$content ob_get_clean();
        }
      else
        {
        
ob_start();
        if(!
file_exists("content/$s.php"))
        {
         include 
"content/start.php";
        } else {
         include 
"content/$s.php";
        }
        
$content ob_get_clean();
        }
        
    
ob_start();
    include 
"boxes/loginbox.php";
    
$login ob_get_clean();

 

    
$data = array(    
    
    
'content' => $content,
    
'userlogin' => $login,

    );
    
$template file_get_contents('designs/design.html');
    foreach (
$data as $key => $value) { $template str_replace('{' $key '}'$value$template); }
    
    echo 
$template;
    


?>
 
Alt 24.12.2008, 16:44  
PTC
Erfahrener Benutzer
 
Benutzerbild von PTC
 
Registriert seit: 27.10.2007
Beiträge: 1.708
PHP-Kenntnisse:
Anfänger
PTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nett
Standard

PHP: Ausnahmebehandlung - Manual
PTC ist offline  
Alt 24.12.2008, 17:17  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard

Du solltest dich einmal über Local File Inclusions informieren.
So würde ich folgenden String in dein Script jagen:

"s=../../../etc/passwd%00" und könnte unter Umständen an Dateien kommen die ich nie sehen sollte.

Ich würde das ganze über ID's und ein Switch Case lösen.
__________________
twitter.com/moveax1 || http://modxcms.com/ || http://ubuntuusers.de/

$live->free() OR die();
moveax1 ist offline  
Alt 24.12.2008, 18:28  
Ahrta5
Gast
 
Beiträge: n/a
Standard

@lutoma
vielen Dank hat mir geholfen

@PTC
öhm kann mit dem link nichts anfangen sry...

@moveax1
also öhm bin neu und daher hab ich keine ahnung was mit switch case gemeint ist... und wie man IDs in php einbettet (das mit den IDs kenn ich nur von CSS aber das is ja ne andere geschichte^^)
 
Alt 24.12.2008, 23:14  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard

%00 wird von PHP als NULL Byte interpretiert, also ignoriert PHP alles was hinter diesem Zeichen steht.

So würde mit diesem Code:

PHP-Code:
include "content/$s.php"
und dieser Eingabe:

Code:
index.php?s=../admin/.htpasswd%00
folgender Include entstehen:

PHP-Code:
include "content/../admin/.htpasswd" 
Ein switch case ist ähnlich wie eine If Abfrage.

Was ich meine ist folgender Aufbau:

PHP-Code:
switch ($s) {
case 
'home':
    include 
"home.php";
    break;
case 
'impressum':
    include 
"impressum.php";
    break;
case 
'guestbook':
    include 
"guestbook.php";
    break;
default:
    include 
"infotext.php";

So kannst du die NULL Byte injection vermeiden und falls die Eingabe ungültig ist kannst du auf den von dir gewünschten Infotext umleiten.

Das ganze ist deswegen So gefährlich da Unbefugte sich so Dateien anzeigen lassen können zu denen Sie niemals Zugriff erlangen sollten.

Alternativ könntest du $s noch mit ctype_alpha oder einem Regexp Pattern entschärfen da du so sicherstellen kannst das keine Ungewünschten Zeichen deinen Include erreichen

Auch dir ein frohes Fest

// EDIT:

Natürlich noch was zu lesen zu den Themen:

http://de.wikipedia.org/wiki/Directory_Traversal
http://ha.ckers.org/blog/20060914/ph...byte-injection
__________________
twitter.com/moveax1 || http://modxcms.com/ || http://ubuntuusers.de/

$live->free() OR die();

Geändert von moveax1 (25.12.2008 um 00:14 Uhr).
moveax1 ist offline  
 


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] PHP -&gt; Ordner anlegen der sich auch beschreiben lässt?! Nightuser PHP Tipps 2008 13 30.06.2008 23:51
Warning: fwrite() ??? Razoback PHP Tipps 2006 1 25.07.2006 21:37
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
Suche Programmierer, Designer, Schreiber... blinkster.de Beitragsarchiv 76 14.08.2005 18:31
Warning: pg_query(): Query failed: FEHLER Datenbanken 3 07.08.2005 21:17
Warning: file_exists() [function.file-exists] PHP Tipps 2005-2 6 24.07.2005 01:22
[Erledigt] Warning: mysql_num_fields(): supplied argument is not a... Datenbanken 18 09.06.2005 21:03
[Erledigt] Warning: session_start(): Fehlermeldung nach Update.. Server, Hosting und Workstations 8 19.04.2005 17:00
update auf php 5.0.4 robo47 Server, Hosting und Workstations 6 10.04.2005 19:00
ShowIt_V1.8.14 PHP Tipps 2005 1 23.03.2005 19:13
frage zum arbeiten mit dateien PHP Tipps 2005 21 01.03.2005 13:22
[Erledigt] Warning: filemtime() [function.filemtime]: stat failed for PHP-Fortgeschrittene 12 25.02.2005 19:44
Counter zeigt nach ca. 2-3 Stunden fehler an PHP Tipps 2004 2 26.08.2004 20:08
pHp Shop in Homepage einbinden !!! ABER WIE ??? PHP Tipps 2004 1 15.08.2004 19:23
warning zu einer SQL-Abfrage Datenbanken 3 14.07.2004 16:01

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php infotext, php warnings umleiten, php warning umleiten, infotext in php, php warning css, html infotext, php umleitung mit warnung, aufklappender infotext php, text einblendung css server, html warnung einblenden, php info text, php null-byte injection vermeiden, weinachten infotext, php infotext einblenden, warnings php einblenden, null byte injection eingabefeld, warnung einblendem html, (nullbyte injection), nullbyte injection, php warning umlenken

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:15 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