Autor Zpráva
xss
Profil *
U všech výpisů používám na ochranu proti XSS funkci htmlspecialchars(). Někde jsem viděl i tento zápis:
$id = htmlspecialchars($row['id']);
echo "<a href='index.php?id=$id'>Přejít</a>";

Není zde použití této funkce zbytečné? K žádnému výpisu tady nedochází... Díky moc
Taps
Profil
xss:
pokud se jedná o číselný údaj tak bych spíše použil
$id = intval($row['id']);

nebo
$id = (int)$row['id'];
xss
Profil *
Taps:
intval se zase používá proti sql injection na údaje zadané přes formulář ne? Tady se id tahá z databáze, takže by se intval používat nemusel podle mého názoru. Nebo se pletu?
xss
Profil *
Takže pouze takhle podle mě, ale jak říkám, nejsem si jistý. Při ukládání do databáze už byly údaje ošetřeny proti sql injection.
$id = $row['id'];
echo "<a href='index.php?id=$id'>Přejít</a>";
Chamurappi
Profil
Reaguji na xsse:
Při ukládání do databáze už byly údaje ošetřeny proti sql injection.
To ošetření se dělá kvůli SQL syntaxi, uvnitř databáze pak už nic jako ošetřený řetězec neexistuje, takže to, co přečteš, může obsahovat jakoukoliv sekvenci znaků.

Nevíme, co je v $row['id']. Kdyby tam byl nějaký vstup od uživatele, měl bys ho v tomto případě ošetřit, abys dodržel syntaxi URL a syntaxi HTML atributu.
xss
Profil *
Chamurappi:
V $row['id'] je jen ID (číslo) dané stránky.

"Nevíme, co je v $row['id']. Kdyby tam byl nějaký vstup od uživatele, měl bys ho v tomto případě ošetřit, abys dodržel syntaxi URL a syntaxi HTML atributu."
Takže když to není vstup od uživatele, nemusím ho ošetřovat (třeba tady to id)?
A pokud z databáze načtu třeba uživatelské jméno, tak ho musím znovu ošetřit (stejně jako při ukládání do DB) pomocí mysql_real_escape_string()?
xss
Profil *
Uvedu jednoduchý příklad. Mám formulář, ve kterém zadám jméno a příjmení. Proženu je funkcí mysql_real_escape_string a uložím do databáze. Nyní si potřebuji pro porovnání s jiným jménem vytáhnout z databáze jméno. A teď mi jde o to, jestli ho musím znovu ošetřovat (kdyýtak prosím poraďte jak) nebo postačí jen
$jmenoDB = $row['jmeno'];
if ($jmeno == $jmeno2).....
Chamurappi
Profil
Reaguji na xsse:
Používej zdravý selský rozum, nesnaž se sepisovat kuchařku tisíce a jednoho bezpečnostních receptů.
Neumím PHP a znám jen okrajově SQL, ale stačí mi vědět, že kdykoliv sestavuji strojově čitelný řetězec, musím počítat se syntaktickými pravidly, která se použijí na výsledek, a přemýšlet nad důvěryhodností dat. Nic víc.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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