Seite 1 von 2
Formulare -- > PHP = Unsicher ... was tun ?
Verfasst: 03.09.2005 20:04
von DasFragezeichen
Also, hier ist was aber da wollte ich doch mal wegen der Sicherheit was fragen, lol
(btw, das soll ein Meta-Tag Generator werden ...)
Das ist die meta.php
Code: Alles auswählen
<html>
<head><title>Meta</title></head>
</head>
<body>
<table border="0"><tr><td><b>Titel :</b></td><td>
<form action="meta2.php" method="post">
<input type="text" size="30" name="title"></td>
<input type="submit" value="Generieren !">
</center>
</form>
</body>
</html>
So dann die meta2.php :
Code: Alles auswählen
<?php
$title = $HTTP_POST_VARS["title"];
echo "Geben Sie in den Header : <title>$title</title> ein";
?>
Naja, aber nun könnte man ja als normaler Anwender in das Feld (<input type="text" size="30" name="title">) einfach einen HTML/PHP-Code eintragen der dann dummerweise auchnoch von der meta2.php ausgewertet wird so wenn man sagen wir <a href="http://phpbb.de">phpBB.de</a> schreibt dann erscheint ein Link zu phpBB dort ... Ein Hacker könnte dies ja gut ausnutzen ...
Also, wie macht man es das nur bestimmt Zeichen verwenden kann ?
MfG,
Das-Fragezeichen
Verfasst: 03.09.2005 21:07
von witzigerkiller
Naja, ich würde das erstens so machen:
meta.php
Code: Alles auswählen
<html>
<head>
<title>Meta</title>
</head>
</head>
<body>
<form action="meta2.php" method="post">
<table border="0">
<tr>
<td><b>Titel :</b></td>
<td> <input type="text" size="30" name="title"></td>
</tr>
<tr>
<td colspan="2><input type="submit" value="Generieren !"></td>
</tr>
</tabe>
</form>
</body>
</html>
meta2.php
Code: Alles auswählen
<?php
$title = $_POST['title'];
echo "Geben Sie in den Header : <title>$title</title> ein";
?>
Und dann würde ich manche sachen wie <center>und </center>
durch preg_replace ersetzen:
Code: Alles auswählen
<?PHP
$title = $_POST['title'];
$codeschlecht [1] = "<center>";
$codeschlecht [2] = "</center>";
$codegut [1] = "";
$codegut [2] = "";
$title = preg_replace($codeschlecht, $codegut, $_POST['title']);
?>
Wobei es bestimmt bessere Metoden gibt, aber das würde ich am geeignetsten finden!
Verfasst: 03.09.2005 21:39
von Jensemann
witzigerkiller hat geschrieben:
Und dann würde ich manche sachen wie <center>und </center>
durch preg_replace ersetzen:
Das ächts war der Server

Für einfaches Suchen/Ersetzen tuts auch str_replace(), da muß man keine lahme RegExp Engine mit bemühen.
Verfasst: 03.09.2005 21:41
von witzigerkiller
jensemann hat geschrieben:witzigerkiller hat geschrieben:
Und dann würde ich manche sachen wie <center>und </center>
durch preg_replace ersetzen:
Das ächts war der Server

Für einfaches Suchen/Ersetzen tuts auch str_replace(), da muß man keine lahme RegExp Engine mit bemühen.
Das wollte ich auch schreiben, aber mir ist der Befehl net eingefallen, und preg_replace(); ist ja ungefähr bis sehr genau das gleiche.
Verfasst: 03.09.2005 22:07
von Pyramide
witzigerkiller hat geschrieben:Und dann würde ich manche sachen wie <center>und </center>
durch preg_replace ersetzen:
Wieso gerade <center> und sonst nichts?
Für solche Sachen verwendet man normalerweise [php:htmlspecialchars]
Verfasst: 03.09.2005 22:11
von witzigerkiller
klar ich schrieb doch z.b. <center> ja htmlspecialchars htmlintinities und noch irgendwas mit addslashes oderso, wie das heißt.
Verfasst: 04.09.2005 11:33
von witzigerkiller
meta.php
Code: Alles auswählen
<html>
<head>
<title>Meta</title>
</head>
</head>
<body>
<form action="meta2.php" method="post">
<table border="0">
<tr>
<td><b>Titel :</b></td>
<td> <input type="text" size="30" name="title"></td>
</tr>
<tr>
<td colspan="2><input type="submit" name="Generate" value="Generieren !"></td>
</tr>
</tabe>
</form>
</body>
</html>
dann habe ich jetzt bissl rumgeschrieben:
meta2.php
Code: Alles auswählen
<?PHP
if (isset($_POST['Generate']))
{
if (empty($_POST['title']))
{
echo "<font color='red'>Bitte Feld ausfüllen!</font>";
}
else
{
$title = addslashes(htmlintinities(htmlspecialchars($_POST['title'])));
echo "Geben Sie in den Header : <title>".$title."</title> ein";
}
}
?>
Hoffe das hilft ein wenig weiter
Verfasst: 04.09.2005 18:28
von fanrpg
zur meta2.php
müsste das nicht so sein?
Code: Alles auswählen
<?PHP
if (isset($_POST['Generate']))
{
if (!empty($_POST['title']))
{
echo "<font color='red'>Bitte Feld ausfüllen!</font>";
}
else
{
$title = addslashes(htmlintinities(htmlspecialchars($_POST['title'])));
echo "Geben Sie in den Header : <title>".$title."</title> ein";
}
}
?>
Verfasst: 04.09.2005 19:49
von Pyramide
Wie wärs mal mit Ausprobieren anstatt raten? Dann würdet ihr auch feststellen, daß es keine Funktion htmlintinities gibt und daß htmlentities(htmlspecialchars(...)) in 99,9% der Fälle sinnlos ist. Ein einfaches htmlspecialchars(...) oder htmlentities(...) reicht i.d.R. aus.
Verfasst: 04.09.2005 20:32
von witzigerkiller
fanrpg hat geschrieben:zur meta2.php
müsste das nicht so sein?
Code: Alles auswählen
<?PHP
if (isset($_POST['Generate']))
{
if (!empty($_POST['title']))
{
echo "<font color='red'>Bitte Feld ausfüllen!</font>";
}
else
{
$title = addslashes(htmlintinities(htmlspecialchars($_POST['title'])));
echo "Geben Sie in den Header : <title>".$title."</title> ein";
}
}
?>
das! vor empty heißt doch falls es nicht leer ist, kommt fehler. kann das logisch sein?