Autor Zpráva
kohl
Profil
Dobrý den,
zjistil jsem, že mám díru v zabezpečení, kdokoliv mi může vložit javascript do stránky, chtěl jsem do ošetřit funkcí
htmlspecialchars(), addslashes(),strip_tags() to ale změní výstup. Potřebuji to zabezpečit a aby se nezměnil výstup, jinak by to uživatele mohlo zmást.


<?php

echo'<form action="" method="get">'
. '<input type="text" name="search" value="'.( empty($_GET["search"]) ? null : $_GET["search"] ) .'"/>'
. '</form>';

?>

Děkuji za odpovědi.
Alphard
Profil
Jak se změní výstup? Prohlížeč přece entity převede na správné znaky a ty zobrazí. Jestli ne, zřejmě se vám povedlo "znásobit ošetření", escapovat již escapovaný řetězec a rozbil jste si to.
kohl
Profil
Nepřevede, když je to hodnota inputu. Funkce jsem zkoušel postupně.
Alphard
Profil
Píši:
<?php
$val = "°!sfíš&@#\"\\sdfk'!´=";
?>
<input type="text" value="<?php echo htmlspecialchars($val); ?>">

V html zdrojáku vidím:
<input type="text" value="°!sfíš&amp;@#&quot;\sdfk'!´=">

A v input na stránce:
°!sfíš&@#"\sdfk'!´=

Něco děláte špatně.
kohl
Profil
Teď jsem to zkoušel znovu a šlo mi to.
Vůbec nechápu, proč mi to předtím nešlo.
Děkuji za pomoc.

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: