Autor | Zpráva | ||
---|---|---|---|
...a Profil * |
#1 · Zasláno: 13. 12. 2010, 20:20:39
Ahoj. Po odeslání formuláře zpracovávám jeho textové inputy v php. Vlastně všechno co přijde v $_POST['hodnota'] pošlu databázi, nic předem neslashuji, to snad obstarává pdo->prepare s použitím "?" a execute. Toto je snad v pořádku že? Problém je když chci poslaná data znovu zobrazit jako předdefinované hodnoty ve formuláři - tam mohu použít addslashes, které nahradí třeba asci-nul a další speciální znaky. Stačí toto ošetření? Pokud vím, tak <> apod. nevadí pokud se to použije uvnitř value="".
|
||
...a Profil * |
#2 · Zasláno: 13. 12. 2010, 22:09:58
Hm tak to nestačí. Pro standardní html element v kódu jo, ale pokud to vložim do javascriptu, tak to neprojde:
document.getElementById('hodnota').value = '\\0<script>alert(\'ahoj);</script>'; Evidentně mu vadí znak /, ale proč? Které další znaky nemá javascript rád? |
||
...a Profil * |
#3 · Zasláno: 13. 12. 2010, 22:11:46
Respektive asi vadí jen celá kombinace </script>, ale proč? Vždyť z kontextu vyplívá, že to nechci použít jako ukončovací tag, tak proč se to tak bere?
|
||
...a Profil * |
#4 · Zasláno: 13. 12. 2010, 22:17:52
Tak i ostatní tagy se berou jako tagy pokud se to nastaví javascriptem.
<input type="text" id="hodnota" value="</div>"> - toto je v pohodě <script>document.getElementById('hodnota').value = '</div>';</script> - toto už není v pohodě, protože pokud se v tuto chvíli ješte vykresluje stránka, tak se obsah toho inputu bere jako html tag. Jak teda dostanu jakýkoliv obsah bez htmlspecialchars do toho inputu jako value? |
||
Alphard Profil |
#5 · Zasláno: 13. 12. 2010, 22:26:49
V textarea bude vadit </textarea>apod. Tohle nelze řešit obecně, každý kontext vyžaduje specifické escapování. Tohle dokonale řeší třeba šablony Nette, resp. Latte filter.
|
||
...a Profil * |
#6 · Zasláno: 14. 12. 2010, 01:43:02
Před chvílí jsem narazil na nějakou diskusi, kde píšou že stačí escapovat /, protože vadí kombinace znaků </ . Vyzkoušel jsem a zdá se že funguje, zatím jsem nenarazil na kombinaci znaků které by nefungovaly. Tzn. že addslashes + strtr z / na \/ v tomto kontextu stačí?
|
||
Časová prodleva: 14 let
|
0