Autor Zpráva
joe
Profil
Ještě mám otázku týkající se zabezpečení, jak ukládat data do databáze od uživatele? Dejme tomu, že mu chci povolit všechny znaky, mám tam uložit všechno? Pak by mohlo hrozit nějaké nebezpečí, kdybych někde zapomněl na htmlspecialchars na výstupu. Nebo mám z původního textu odříznout všechno pomocí strip_tags? Tím mu ale mohu narušit nějaký text co vkládá, i když je pravda, že by žádně html, php, js neměl vkládat...

Díky za tipy.
Taps
Profil
Podle mě když použiješ htmlspecialchars tak nemusíš používat strip_tags, máš pravdu že by běžný uživatel neměl vkládat např. do návštěvních knih žádné js a php kody.

Také je dobré slashovat výstupy nebo použít mysql_real_escape_string, nebo se dá rovněž použít regulární výraz pro vymezení znaků
joe
Profil
Taps
Myslel jsem použití strip_tags na vstup před vložením do db a htmlspecialchars až na výstup.

Také je dobré slashovat výstupy nebo použít mysql_real_escape_string, nebo se dá rovněž použít regulární výraz pro vymezení znaků
No to se mi nezdá :-) Pokud by uživatel někam napsal něco, třeba:

něco ' něco

Tak by se mu pak objevilo

něco \' něco

A to asi není to pravý, takže slashovat výstup určitě ne :-) mysql_real_escape_string používám na vstup, na výstup podle mě tedy určitě není.
Mike8748
Profil
joe
>> „Také je dobré slashovat
> No to se mi nezdá :-)

a od toho je prave funkce stripslashes, kterou pouzijes pri vypisu (addslashes pri ukladani)
joe
Profil
Mike8748
Proč bych měl použít stripslashes, když vstup do db je ošetřen mysql_escape_string?

Pokud do inputu napíšeš

něco ' něco

a při vkládání do db se použije mysql_escape_string, který z toho udělá "něco \' něco", do databáze to už uloží bez toho zpětného lomítka, protože mysql tomu rozumí.

Tak proč stripslashes nebo mi něco někde uniklo o tom?
Taps
Profil
joe
bud stripslashes nebo mysql_real_escape_string
joe
Profil
Taps
Kde? Pořád nevím co myslíš, vstup / výstup?

To vím, že jedno z toho, addslashes se mi nelíbí.

Koukám, že jsem napsal první příspěvěk jinak než jsem chtěl a proto to k tomu tak směřuje, ale vkládání dat k tomu taky patří.
Alphard
Profil
nedělejte z toho kovbojku...
vstupní data ošetříme na sql injection a to tak, že je escapujeme, ať si každký použije funkci jakou chce
výstupní data ošetříme na XSS a nebudeme to řešit půl dne
joe
Profil
Alphard
Díky, tyhle články jsem už před delší dobou četl. Takže když to shrnu, co jsem chtěl vědět je, že mi stačí htmlspecialchars, co používám, myslel jsem, co kdybych na to někde zapomněl... je to totiž pak těžko vystopovatelné...

---

Proto jsem chtěl vědět, jestli není nebezpečné ukládat přesně to, co uživatel zadá, protože by se mi to mohlo někde vymstít.
Alphard
Profil
Proto jsem chtěl vědět, jestli není nebezpečné ukládat přesně to, co uživatel zadá, protože by se mi to mohlo někde vymstít.
toto vnímám jako jinou otázku, už to trochu zavání CSRF útokem, který ale moc nesouvisí s tou databází, spíš s tím někde vymstít, takže jen stručně pár zdrojů:
http://www.soom.cz/index.php?name=articles/show&aid=484
http://php.vrana.cz/cross-site-request-forgery.php
http://www.chapadlo.cz/weblog/clanek/hackerem-sam-sobe-3-csrf
dočtete se, že se doporučuje obrana tokeny, ale je to náročné a není to 100%
na webu menšího významu bych skoro doporučil vykašlat se na to a pravidelně zálohovat
joe
Profil
Alphard
Přímo se mi nejednalo o XSRF, ale díky za odkazy, o nějakých stránkách jsem nevěděl.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: