Avatar billede mgn_online Nybegynder
04. februar 2003 - 21:12 Der er 20 kommentarer og
1 løsning

Non sikkerhed på tagwall

Hey hey:

Jeg har lavet en tagwall hvor man skriver til en fil. Problemet er at alle der vil lave en tag kan stort set gøre hvad de vil.

De kan sætte billeder ind med <img src.... og skrive med stor tekst med <h1..... og så vidre...De ka alt!

Er der så på nogen måde man kan forbyde dem i at skrive nogle bestemte tegn som " ; < > ???

Script:

<?
$id .= "navn";
$post .= "mail";
$message .= "indhold";
$thefile = "tagwall.php";

$old = implode( "", file( $thefile ) ) ;
$fil = fopen($thefile, "w+");

fwrite($fil,
"<table border=0 width=65%>
<tr>
  <td><BR>
    <BR>
    <BR><a><font color=#003366><strong>Navn: </strong></font></a><a>$navn</a>&nbsp;&nbsp;&nbsp;<a><font color=#003366><strong>e-mail: </strong></font></a><a>$mail</a></td>
    <tr>
    <td><hr align=left size=2 width=100% color=#003366></td></tr>
    <tr>
  <td><a>$indhold</a></td></tr>
</tr>
</table>" . $old );
fclose($fil);
?>
Avatar billede schaefner Juniormester
04. februar 2003 - 21:15 #1
Avatar billede schaefner Juniormester
04. februar 2003 - 21:15 #2
der kan du fjerne alle koder eller tillade nogle enkelte.
Avatar billede totaliorden Nybegynder
04. februar 2003 - 21:21 #3
Den meste simple løsning er, at erstatte de 'ulovlige' < & > med 'lovlige' < & >

En simpel kode som denne kan gøre det:
$besked = ereg_replace("<","&lt;",$besked);
$besked = ereg_replace(">","&gt;",$besked);
Avatar billede schaefner Juniormester
04. februar 2003 - 21:23 #4
totaliorden >> Ja, men så ville det stadig fylde i filen plus at vil kunne se koden.
Avatar billede mgn_online Nybegynder
04. februar 2003 - 21:23 #5
Kan jeg ik gøre følgende:

$string = strip_tags($string, '<>'); (så bliver alle tags sq da udelukket ik?
Avatar billede schaefner Juniormester
04. februar 2003 - 21:24 #6
$string = strip_tags($string);
nu sletter den alle koder
Avatar billede schaefner Juniormester
04. februar 2003 - 21:25 #7
hvis du istedet gør sådan:
$string = strip_tags($string, '<b>');

så tillader du brugeren at bruge <b>, fed
Avatar billede totaliorden Nybegynder
04. februar 2003 - 21:25 #8
Koden skal jo bruges når folk skriver noget. Hvis du har tænk at bruge den med outputtet, så er det jo spild af ressourcer.

Så hvis man skiver < eller >, så kommer det frem på samme måde som det gør her på eksperten.
Avatar billede mgn_online Nybegynder
04. februar 2003 - 21:29 #9
Selvom jeg sætter $string = strip_tags($string); så kan jeg stadigvæk godt skrive tags og img tags...
Avatar billede schaefner Juniormester
04. februar 2003 - 21:36 #10
Du skal lige huske at ændre det til det felt hvor brugeren rent faktisk skriver noget:

f.eks:
$message = strip_tags($message);
Avatar billede mgn_online Nybegynder
04. februar 2003 - 21:38 #11
Det gør jeg også, jeg fatter det ik...vent lige
Avatar billede mgn_online Nybegynder
04. februar 2003 - 21:42 #12
Det virker ik, fatter det ik helt
Jeg skriver:
$message = strip_tags($message); men det virker ik, er det ikke imod php reglerne...det ska sq da virke!! : )
Avatar billede mgn_online Nybegynder
04. februar 2003 - 21:44 #13
prøv selv..

http://www.friserverplads.dk/mosegrisen

Så nedenfor er der et link der hedder add og ved siden af et link der hedder tagwall
Avatar billede schaefner Juniormester
04. februar 2003 - 21:44 #14
kan du vise lidt kode :)
Avatar billede mgn_online Nybegynder
04. februar 2003 - 21:47 #15
Hva mener du lige......?
Avatar billede schaefner Juniormester
04. februar 2003 - 21:48 #16
den kode hvor du har indsat det
Avatar billede mgn_online Nybegynder
04. februar 2003 - 21:49 #17
<?
$id .= "navn";
$post .= "mail";
$message .= "indhold";
$thefile = "tagwall.php";

$message = strip_tags($message); <-----------------------HER
 
$old = implode( "", file( $thefile ) ) ;
$fil = fopen($thefile, "w+");

fwrite($fil,
"<table border=0 width=65%>
<tr>
  <td><BR>
    <BR>
    <BR><a><font color=#003366><strong>Navn: </strong></font></a><a>$navn</a>&nbsp;&nbsp;&nbsp;<a><font color=#003366><strong>e-mail: </strong></font></a><a>$mail</a></td>
    <tr>
    <td><hr align=left size=2 width=100% color=#003366></td></tr>
    <tr>
  <td><a>$indhold</a></td></tr>
</tr>
</table>" . $old );
fclose($fil);
?>
Avatar billede schaefner Juniormester
04. februar 2003 - 21:54 #18
prøv at ændre den til:
$indhold = strip_tags($indhold);
Avatar billede schaefner Juniormester
04. februar 2003 - 22:08 #19
du skulle måske rydde lidt op i din kode da det lader til du en del variabler som ikke bliver brugt til noget.
Avatar billede miraculix Nybegynder
04. februar 2003 - 23:06 #20
Hvor får $message noget som helst andet indhold end teksten "indhold" fra?

Og hvor bruges den til noget? 

$indhold fra formularen ryger til gengæld direkte og uredigeret igennem.

Eller er det bare mig der ikke fatter den kode?
Avatar billede schaefner Juniormester
05. februar 2003 - 06:31 #21
miraculix >> det var også det der undrede mig, men han må jo vide det, det er jo ham der lavet tagwallen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester