kniha navstev

Zdravim. Zacal som pisat jednoduchu knihu navstev, ktora nepotrebuje
MySQL. Ma aj admin povrch pre zmazanie aj pre editaciu sprav.
Dovolene su aj html tagy.
Prosim vas aby ste na to pozreli a otestovali. Popripadne cakam na vase nazory
aby som to mohol doplnit ,opravit.
Ak nejakemu zaciatocnikovy zapacilo moze kod neskorsie stiahnut.
Dakujem ostavam s pozdravom.
Kniha je na adrese http://knihanavstev.euweb.cz/index.php
Skoro som zabudol
docastne meno a heslo je admin
>> Dovolene su aj html tagy.
Toto není zrovna dobrý nápad. Kniha není ošetřená proti útoku XSS. Použil jsem neškodný alert, ale útočník může použít ještě horší kód. Klidně i ten co koluje po internetu a může ti zablokovat web jako útočnou stránku.

Jinak pokud jde o knihu samotnou. Má tam hodně nedostatků. HTML kód není zrovna příkladný - font, míchání table a div, míchání stylopisu atd.
Ukládání to souborů může být, ale musí se ošetřit. Trpí syndromem smazáním obsahů. A nějak zvýraznit, že se musí vyplnit vše. Na první pohled to není vidět (ani ta první věta). A proč bych měl nutně vyplňovat email? Navíc email není ošetřen proti spamérům.
<HTML>Tomík: email není ošetřen ani proti zadání nesmyslů - zkusil jsem mam@ale.nedam a kniha to v pohodě sežrala.

appma: Souhlasím s Tomíkem, povolovat nezpracované HTML není úplně košer. Třeba tady na WZ fóru mají HTML tagy povoleny jen moderátoři, na mnoha jiných fórech se používají tzv. pseudotagy, mnohde se to dělá dokonce tak, že se povoluje jen určitá podmnožiná tagů a to ještě bez parametrů apod. Takže zkus to přepsat tak, aby to vzalo jen nějaké to vytučnění, kurzívu a odkazy zkus detekovat automaticky (když někdo napíše http://něco nebo www.něco apod.). Vzhledem k popisu - nezkoušel jsem žádné SQL injection, ale zkusil jsem PHP injection. Vypadá to, že tak blbý, abys používal include na příspěvky v knize, naštěstí nejsi.</HTML>
Hej bordel este tam mam moc, ale stale ucim nieco nove od vas. Tie nedostatky skusim odstranit, samozrejme aj tie co pisal Tomik a Nipal.
Zatial diky za nazory.
Prosim vas ake tagy by som mal este zakazat? zatial mam takto

$tagfilter = array('\\','<script>','</script>','<?php>','<?','?>','<a>','</a>','"',"'",'<form>','</form>');

Vdaka
Teraz musim do roboty ale ostatne spravim az potom
Napiš si raději seznam tagů, které chceš povolit. Uvedený filtr je totiž úplně k ničemu.
Nipal: zkusil jsem mam@ale.nedam
Podle RFC 2821 to může být platná adresa...
Raději bych zvolil opačný postup. Místo zakázaných použít seznam povolených. U povolených víte co se použije. Naproti u zakázaných ten seznam nemusí stačit. Vemte si příklad teď. V seznamu jste dal vše o čem si myslíte, že můžou dělat problémy. Později si však uvědomíte, že problém může dělat i tag <iframe>. Prostě u zakázaných budete mít vždy díru v tom, že se objeví další skulinka. U povolených se to nestane. Tam narazíte jen na to, že třeba tag <sup> nebude fungovat.
Našel jsem jednoduchý skript na transformaci v ASP, tak jsem ho cvičně přepsal do PHP. Snad je to OK, dá se to samozřejmě dál vylepšovat.

$vzorek=array("<b>","</b>","<i>","</i>","<img ","<font ","</font>","<sup>","</sup>");
$náhrada=array("<b>","</b>","<i>","</i>","<img ","<font ","</font>","<sup>","</sup>");

$text="text, který je nutné ošetřit";
$text=str_replace("<","<",$text);
$text=str_replace($vzorek,$náhrada,$text);
<?xml odpovida <?
<span onclick="document.open(); document.write('Ahoj'); document.close();">klikni na mne</span>
hadej, co to udela? a misto span muze byt temer kterykoliv tag
hadej, co to udela, kdyz zmenis onclick na onmouseover ?
frame? iframe?
input? button? - dneska uz to funguje nekdy i bez tagu form, ze odesila sam na sebe
a tak lze pokracovat. Lepsi viz Tomík, povolene tagy
Hm, tak to nevyšlo. Ještě jednou:

$vzorek=array("&lt;b>","&lt;/b>","&lt;i>","&lt;/i>","&lt;img ","&lt;font ","&lt;/font>","&lt;sup>","&lt;/sup>");
$náhrada=array("<b>","</b>","<i>","</i>","<img ","<font ","</font>","<sup>","</sup>");

$text="text, který je nutné ošetřit";
$text=str_replace("<","&lt;",$text);
$text=str_replace($vzorek,$náhrada,$text);
No, a teď ještě z toho zrušit "<img " a "<font " nebo udělat to samé s povolenými atributy. I kdyby se zrušily úplně, tak jich v diskuzích škoda nebude.
<HTML>Kit: <img onload="document.close();"> Pořád to není ono.</HTML>
<HTML>Eh, nějak jsi mě předběhl.</HTML>