Ist dieses PHP script sicher ?

Alles, was PHP betrifft, kann hier besprochen werden.

Ist dieses PHP script sicher ?

Postby schliss » 22. August 2003 13:32

servus,
soll fürn kollegen abklären ob das script "sicher" ist und ob ers guten gewissens aufm server laufen lassen kann ;) danek schon mal vorab für eure hilfe ...
<table width="500" align="center">
<tr>

<td height="183"> <br><center>
<img src="bilder/gaestebuch.gif" width="351" height="81"></center>
<form action="gaestebuch.php" method="POST">
<font size="2" face="Arial"> </font>
<table width="400" border="0" cellpadding="5" align="center">
<tr>
<td width="109"><font size="2" face="Arial">Name*:</font></td>
<td width="265">
<div align="left"><font size="2" face="Arial">
<input type="text" name="name" value="<?php if(isset($_POST["name"])) { echo stripslashes($_POST["name"]); } ?>">
</font></div>
</td>
</tr>
<tr>
<td width="109"><font size="2" face="Arial">eMail:</font></td>
<td width="265">
<div align="left"><font size="2" face="Arial">
<input type="text" name="email" value="<?php if(isset($_POST["email"])) { echo $_POST["email"]; } ?>">
</font></div>
</td>
</tr>
<tr>
<td width="109"><font size="2" face="Arial">Homepage:</font></td>
<td width="265">
<div align="left"><font size="2" face="Arial">
<input type="text" name="homepage" value="<?php if(isset($_POST["homepage"])) { echo $_POST["homepage"]; } ?>">
</font></div>
</td>
</tr>
<tr>
<td width="109"><font size="2" face="Arial"><br>
Kommentar*:<br>
<br>
</font></td>
<td width="265">
<div align="left"><font size="2" face="Arial">
<textarea cols="30" rows="4" wrap="physical" name="kommentar"></textarea>
</font></div>
</td>
</tr>
<tr>
<td width="109">&nbsp;</td>
<td width="265"><font size="2" face="Arial"> <br>
<input type="submit" name="absenden" value="Eintrag ver&ouml;ffentlichen">
</font></td>
</tr>
</table>
<font size="2" face="Arial"><br>
<br>
</font>
</form>
<hr>
<?php

// Dateiname in Variable speichern
$datei="kommentare.txt";

// Abfrage ob das Formular abgesendet wurde ("Eintrag ver&ouml;ffentlichen" angeklickt wurde), wird "true" zur&uuml;ckgegeben wird der darunterstehende Code ausgef&uuml;hrt
if (isset($_POST["absenden"])) {

// Abfrage ob Variable Kommentar gesetzt wurde und Kommentar und Name nicht leer sind
if (isset($_POST["kommentar"]) && $_POST["name"]!="" && $_POST["kommentar"]!="") {

// Datei wird zum lesen schreiben ge&ouml;ffnet
$zeiger=fopen($datei, "r+");
$alt=fread($zeiger, filesize($datei));
$email=$_POST["email"];
$homepage=$_POST["homepage"];
$heute = getdate();
$stunden = $heute["hours"];
$minuten = $heute["minutes"];
$zeit = sprintf("%02d:%02d", $stunden, $minuten);

// Anzahl der Eintraege ermitteln
$inhalt = file($datei,"r");
$anzahleintraege = count($inhalt)+1;

// $br dient dazu einen Zeilenumbruch im Texteditor zu erzeugen.
$br=chr(13).chr(10);

// ASCII-Zeichen für Zeilenumbruch
$zeilenumbruch=chr(13).chr(10);

// IP-Adresse ermitteln
$ip = getenv("REMOTE_ADDR");

// Datum ermitteln und formatieren.
$datum=date("j.n.Y");

// Slashes entfernen und Zeilenumbr&uuml;che erhalten.
$kommentar=stripslashes($_POST["kommentar"]);
$name=stripslashes($_POST["name"]);

// Zeilenumbruch in Textdatei in "<br>" umwandeln
$kommentar=str_replace($zeilenumbruch,"<br>",$kommentar);

// Eingabekombinationen

// email gesetzt und sowohl ein @ als auch ein . enthalten, homepage nicht leer, http:// enthalten
if ($_POST["email"]!="" && strstr(($_POST["email"]), "@") && strstr(($_POST["email"]), ".") && $_POST["homepage"]!="" && strstr(($_POST["homepage"]), ".") && strstr(($_POST["homepage"]), "http://")) {
$meinung="<p><b><font face=Arial size=2>$anzahleintraege . $_POST[name]</b> <a href=\"mailto:$email\"><img src=\"bilder/email.gif\" border=0></a> <a href=\"$homepage\" target=\"_blank\"><img src=\"bilder/home.gif\" border=0></a> schrieb am $datum um $zeit Uhr:<br><font size=2><b>IP-Adresse: $ip</b></font><br><br>$kommentar</p></font><hr>$br";
}


// email gesetzt und sowohl ein @ als auch ein . enthalten, homepage nicht leer, http:// nicht enthalten
elseif ($_POST["email"]!="" && strstr(($_POST["email"]), "@") && strstr(($_POST["email"]), ".") && $_POST["homepage"]!="" && strstr(($_POST["homepage"]), ".")) {
$meinung="<p><b><font face=Arial size=2>$anzahleintraege. $_POST[name]</b> <a href=\"mailto:$email\"><img src=\"bilder/email.gif\" border=0></a> <a href=\"http://$homepage\" target=\"_blank\"><img src=\"bilder/home.gif\" border=0></a> schrieb am $datum um $zeit Uhr:<br><font size=2><b>IP-Adresse: $ip</b></font><br><br>$kommentar</p></font><hr>$br";
}


// email gesetzt und sowohl ein @ als auch ein . enthalten, homepage leer
elseif ($_POST["email"]!="" && strstr(($_POST["email"]), "@") && strstr(($_POST["email"]), ".")) {
$meinung="<p><b><font face=Arial size=2>$anzahleintraege. $_POST[name]</b> <a href=\"mailto:$email\"><img src=\"bilder/email.gif\" border=0></a> schrieb am $datum um $zeit Uhr:<br><font size=2><b>IP-Adresse: $ip</b></font><br><br>$kommentar</p></font><hr>$br";
}


// email gesetzt aber entweder ein @ oder ein . fehlt
elseif ($_POST["email"]!="" && strstr(($_POST["email"]), "@") || strstr(($_POST["email"]), ".")) {
echo "<font size=2 face=Arial color=\"red\">Bitte &uuml;berpr&uuml;fen Sie Ihre eMail-Adresse auf Richtigkeit!</font><hr>";
exit;
}


// email leer, homepage gesetzt enth&auml;lt . und http://
elseif (empty($_POST["email"]) && $_POST["homepage"]!="" && strstr(($_POST["homepage"]), ".") && strstr(($_POST["homepage"]), "http://")) {
$meinung="<p><b><font face=Arial size=2>$anzahleintraege. $_POST[name]</b> <a href=\"$homepage\" target=\"_blank\"><img src=\"bilder/home.gif\" border=0></a> schrieb am $datum um $zeit Uhr:<br><font size=2><b>IP-Adresse: $ip</b></font><br><br>$kommentar</p></font><hr>$br";
}


// email leer, homepage gesetzt enth&auml;lt . aber nicht http://
elseif (empty($_POST["email"]) && $_POST["homepage"]!="" && strstr(($_POST["homepage"]), ".")) {
$meinung="<p><b><font face=Arial size=2>$anzahleintraege. $_POST[name]</b> <a href=\"http://$homepage\" target=\"_blank\"><img src=\"bilder/home.gif\" border=0></a> schrieb am $datum um $zeit Uhr:<br><font size=2><b>IP-Adresse: $ip</b></font><br><br>$kommentar</p></font><hr>$br";
}


// Nur Name und Kommentar gesetzt (Pflichtfelder)
else {
$meinung="<p><b><font face=Arial size=2>$anzahleintraege. $_POST[name]</b> schrieb am $datum um $zeit Uhr:<br><font size=2><b>IP-Adresse: $ip</b></font><br><br>$kommentar</p></font><hr>$br";
}

// unsichtbarer Cursor geht zur&uuml;ck zum Anfang der Textdatei
rewind($zeiger);

// neue Meinung vor alte in Datei schreiben
fputs($zeiger, "$meinung$alt");

// Datei schliessen
fclose($zeiger);
}

// Hinweis --> Eines der Pflichtfelder wurde nicht ausgef&uuml;llt (Name, Kommentar)
else {
echo "<font size=2 face=Arial color=\"red\">Bitte f&uuml;llen Sie alle mit einem * gekennzeichneten Felder aus!</font><hr>";
}
}

// Anzahl der Eintr&auml;ge ermitteln; Anzahl der anzuzeigenden Beitr&auml;ge pro Seite einstellen
$eintraege = file($datei,"r");
$anzahleintraege = count($eintraege);
$anzahlproseite = 10;

$startpos = 0;
if (isset($HTTP_GET_VARS["Seite"])) {
$startpos = ($HTTP_GET_VARS["Seite"]-1) * $anzahlproseite;
}

$anzahlseiten = ceil($anzahleintraege / $anzahlproseite);

for ($i=$startpos; $i<$startpos+$anzahlproseite && $i<$anzahleintraege; $i++) {
echo "\n$eintraege[$i]";
}
if ($anzahlseiten > 1)
{
echo "\n<br><center>Seite: |";
for ($i = 1; $i<=$anzahlseiten; $i++) {
echo "<font face=Arial size=2>\n<a href='gaestebuch.php?Seite=$i'>$i</a> |</font>";
}
echo"\n\n</center><br>";
}
?>
</td>
</tr>
</table>
schliss
 

Postby Brave » 09. September 2003 21:27

Sicher? Eventuell. Uebersichtlich? Nein! :?
Unix is very simple, but it takes a genius to understand the simplicity.
(Dennis Ritchie)
User avatar
Brave
 
Posts: 5
Joined: 09. September 2003 20:56
Location: Berlin

Postby Kristian Marcroft » 10. September 2003 06:44

Hi,

was ist daran nicht übersichtlich?
Ich finde den Programmierstil ok...
und ob sicher oder nicht, werde ich hier nicht beurteilen...
am ende passiert doch was und dann heisst es der und der hat gesagt...
Nein danke :)

So long
KriS
User avatar
Kristian Marcroft
AF Moderator
 
Posts: 2962
Joined: 03. January 2003 12:08
Location: Diedorf

Postby HardySim » 10. September 2003 11:27

was ein script...

da steh ich doch mehr auf sql :)

aber zu deiner frage: was meinst du mt "sicher"? dein script schreibt daten in ne datei... meinst du, dass vielleicht einer was in dietatei texten könnte, was er net soll oder so?
[url=http://www.hardysim.de]
Image[/url]
www.party-safari.net
User avatar
HardySim
 
Posts: 325
Joined: 19. June 2003 10:22
Location: Geisenheim


Return to PHP

Who is online

Users browsing this forum: No registered users and 14 guests