Thread Problem mit Schleife (19 answers)
Opened by anamollo4music at 2013-03-19 20:06

GwenDragon
 2013-03-20 09:50
#166441 #166441
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
my %beschreibungwerte = 
  map { $_ => $cgi->param($_)//'' }  # mach daraus einen Hashwert (notfalls mit "" besetzeten falls undefiniert)
  grep { /^beschreibung\d+/}     # hole alle CGI-Parameter deren Namen mit beschreibung beginnt
  $cgi->param;                   # Namen aller CGI-Parameter

print qq(<form action="#"><table>\n);
my $i=0;
while ( my ($idSensoren, $Beschreibung) = $select->fetchrow_array() )
{
  print qq(
  <tr>
    <td>Beschreibung</td>
    <!-- Tabellenwert zur Verdeutlichung über mehrere Zeilen gestreckt -->
    <td><input type="text" size="10" 
        name="beschreibung$i" 
        value="$beschreibungwerte{"beschreibung$i"}"
        ></td>
    <td><input type="submit" name="werteuebernehmen"></td>
  </tr>
  );
  $i++;
}
print qq(</table></form>\n);


//EDIT:
Was und ob du escapen/filtern musst, können wird jetzt nicht so sagen.
Allerdings solltest du alle ans CGI übergebenen Werte darauf prüfen, ob dort gültige Werte drin sind. Ansonsten konnte jemand auch schädliches Javascript oder gar SQL einschleusen, in dem das über die CGI-Parameter abgesandt wird.

"Böses" Beispiel:
~ test.pl beschreibung0="<script>alert(42)</script>" werteuebernehmen=1

<script>alert(42)</script>Button wurde geklickt<form action="#"><table>

<tr>
<td>Beschreibung</td>
<td><input type="text" size="10" name="beschreibung0" value="<script>alert(42)</script>"></td>
<td><input type="submit" name="werteuebernehmen"></td>
</tr>
</table></form>


Dass dann Javascript ausgeführt wird, versteht sich von selbst.

Was bei SQL passieren kann, zeigt http://de.wikipedia.org/wiki/SQL-Injection.


Validieren lassen sich Daten aus Formularen z. B. mit CPAN:Data::FormValidator.
Last edited: 2013-03-20 10:10:01 +0100 (CET)

View full thread Problem mit Schleife