Formulare -- > PHP = Unsicher ... was tun ?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
DasFragezeichen
Mitglied
Beiträge: 402
Registriert: 28.08.2005 19:51

Formulare -- > PHP = Unsicher ... was tun ?

Beitrag 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
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag 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!
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag 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.
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag 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.
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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]
KB:knigge
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

klar ich schrieb doch z.b. <center> ja htmlspecialchars htmlintinities und noch irgendwas mit addslashes oderso, wie das heißt.
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag 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
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag 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"; 
    } 
} 


?>
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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.
KB:knigge
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag 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?
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
Antworten

Zurück zu „Coding & Technik“