php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.05.2005, 12:15  
Gast
 
Beiträge: n/a
Standard Gaestebuch absichern

Tag Leute!
Wie kann ich es verhindern, das jemand einen PHP-Code in meime (vorab)Gästebuch ausführen kann?
Momentan ist es so, das wenn er einen php-Code als Beitrag reinschreibt, dieser ausgeführt wird.

Hier der Code:
PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>

<body>


<h1>Gästebuch</h1>

<?php
#require("config.ini"); // 

if( !empty($_POST['name']) && !empty($_POST['text']) ) 
{
        
$name=trim($_POST['name']);
        
$text=trim($_POST['text']);
        if( !empty(
$name) && !empty($text) ) 
        {        
                    if(!
file_exists("buch.dat")) touch("buch.dat");
                    
$eintrag="<table border='1' style='table-layout:fixed'><tr><td style='width:64'>Name:</td><td>$name</td></tr><tr><td>Nachricht:</td><td style='width:334'>$text</td></tr></table>
"
;
                    
$buch=fopen("buch.dat","a");
                    
fwrite($buch,$eintrag);
                    
fclose($buch);
                    include(
"buch.dat");
        }
}

?>
<form action="gaestebuch.php" method="post">
<table border="0">
  <tr>
    <td>Name: </td>
    <td><input type="text" name="name" size="20" /></td>
  </tr>
  <tr>
    <td>Nachricht: </td>
    <td><textarea name="text" cols="40" rows="5"></textarea></td>
  </tr>
  <tr>
    <td></td>
    <td><center><input type="submit" value="senden" /></center></td>
  </tr>
</table>

</form>

</body>
</html>
Ist bestimmt ein leichtes für euch

greez
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.05.2005, 12:24  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

statt 'include('buch.dat')':

PHP-Code:
echo file_get_contents('buch.dat'); 
http://de.php.net/file_get_contents
axo ist offline  
Alt 18.05.2005, 12:27  
Gast
 
Beiträge: n/a
Standard

oder mit strip_tags($text);
 
Alt 18.05.2005, 12:31  
Erfahrener Benutzer
 
Benutzerbild von JEGO
 
Registriert seit: 01.12.2003
Beiträge: 2.555
PHP-Kenntnisse:
Anfänger
JEGO wird schon bald berühmt werden
Standard

ich hätte jetzt gesagt mit :

PHP-Code:
<?php

$buch 
fopen ("buch.dat""r");
while (!
feof ($buch))
   {
   echo 
fgets ($buch,1000)."
"
;
   }
fclose ($buch);
?>
aber die variante von axo müsste auch gut funktionieren.
__________________
Gruß JEGO

Ein PHP Script tut, was Du schreibst, nicht was Du willst.
JEGO ist offline  
Alt 18.05.2005, 12:39  
Gast
 
Beiträge: n/a
Standard

also strip_tags werde ich garantiert nicht nehmen, da wenn du meinen code anschaust siehtst, das das alles in eine HTML tabelle steht und mit allowable_tags wirds dann wider zu aufwenig.
da gefällt ir die variante mit file_get_contents besser...aber da wird mir dann jeglicher phpcode nicht angezeigt...warum? davon steht nix in der beschreibung

greez
 
Alt 18.05.2005, 12:42  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von zetgun
also strip_tags werde ich garantiert nicht nehmen, da wenn du meinen code anschaust siehtst, das das alles in eine HTML tabelle steht und mit allowable_tags wirds dann wider zu aufwenig.
da gefällt ir die variante mit file_get_contents besser...aber da wird mir dann jeglicher phpcode nicht angezeigt...warum? davon steht nix in der beschreibung
greez
echo file_get_contents() gibt, wie die funktion schon sagt, nur den inhalt der datei (buch.dat) an den browser weiter, und zwar genau so, wie er in die datei eingetragen wurde.

damit wird kein potenziell gefährlicher code ausgeführt, sondern lediglich als klartext ausgegeben. und das ist gut so.

du solltest dich mal daran gewöhnen, den quelltext, den du produzierst, mithilfe von 'Ansicht -> Quelltext anzeigen' zu lesen.
axo ist offline  
Alt 18.05.2005, 12:48  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von zetgun
also strip_tags werde ich garantiert nicht nehmen, da wenn du meinen code anschaust siehtst, das das alles in eine HTML tabelle steht und mit allowable_tags wirds dann wider zu aufwenig.
da gefällt ir die variante mit file_get_contents besser...aber da wird mir dann jeglicher phpcode nicht angezeigt...warum? davon steht nix in der beschreibung

greez
imho solltest du in der .dat kein html und keine tabellen oder sowas speichern, sondern einzelne datensätze ...
robo47 ist offline  
Alt 18.05.2005, 12:48  
Gast
 
Beiträge: n/a
Standard

erst habe ich den satz: "du solltest dich mal daran gewöhnen, den quelltext, den du produzierst, mithilfe von 'Ansicht -> Quelltext anzeigen' zu lesen." nicht geblickt...aber jetzt scho.
was kann ich jetzt machen damit er mir z.b. "<? phpinfo(); ?>" als beitrag anzeigt? weil ja durch <> der browser denkt, das es ein htmlcode wäre.

bzw. wie kann ich das zeichen im text in "&lt;" umandeln? "&lt;" ist ja gleich = <

greez
 
Alt 18.05.2005, 12:50  
Gast
 
Beiträge: n/a
Standard

öhm...blöde frage...das was du da einliest, is doch nur der text aus dem gästebuch wa?
was willst du dann mit allowable_tags????
wenn du den reinen text von dem gästebuch einliest, dann wird auch nur der reine gästebuchtext mit strip_tags($reiner_gaestebuch_text); versehen.....
 
Alt 18.05.2005, 12:56  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von zetgun
erst habe ich den satz: "du solltest dich mal daran gewöhnen, den quelltext, den du produzierst, mithilfe von 'Ansicht -> Quelltext anzeigen' zu lesen." nicht geblickt...aber jetzt scho.
ja, gell? wär ja sonst auch zu einfach gewesen.
Zitat:
was kann ich jetzt machen damit er mir z.b. "<? phpinfo(); ?>" als beitrag anzeigt? weil ja durch <> der browser denkt, das es ein htmlcode wäre.

bzw. wie kann ich das zeichen im text in "&lt;" umandeln? "&lt;" ist ja gleich = <

greez
http://de3.php.net/manual/en/functio...ecialchars.php
axo 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
Verbindungen absichern errox PHP Tipps 2008 5 30.01.2008 09:57
Loader optimieren und absichern phpbeginner PHP Tipps 2008 5 28.11.2007 19:54
session problem(captcha, gaestebuch) PHP Tipps 2006 7 22.02.2006 16:25
Webfolder absichern PHP Tipps 2005-2 2 12.07.2005 22:10
Gaestebuch auf txt basierend PHP Tipps 2005 9 09.05.2005 14:32
[Erledigt] Post Variablen absichern PHP-Fortgeschrittene 10 20.04.2005 13:25
kleines Gaestebuch für Anfänger - aber nix gehn. warum ? PHP Tipps 2005 4 15.02.2005 11:03
gaestebuch probleme PHP Tipps 2004-2 8 24.12.2004 15:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php gästebuch absichern, php gaestebuch absichern, gästebuch absichern, gästebuch \buch.dat\, php variablen absichern strip_tags

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