Autor Zpráva
Mufna
Profil
Mám takovýto kód pro kontrolu všech prvků pole $_POST
  if ($_POST["send"]) {

        // * ochrana pred XSS
        foreach ($_POST as $key => $value) {
           $_POST[$key] = htmlspecialchars(trim($value));
        }
        
        // * kontrola vsech povolenych znaku regularem
        foreach ($_POST as $key => $value) {
           $_POST[$key] = preg_replace( "/[^a-zA-Z0-9áčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ]/", "", $_POST[$value]);
        }


Otázky:

1) bude to fungovat správně, když chci aby šly vyplnit pouze písmena české abecedy (obecně samozřejmě i všechna písmena bez diakritiky) + jakékoliv číslo ?

2) když budu chtít povolit nějaký další konkrétní znak, stačí ho přidat do reguláru, třeba za Ž nebo kamkoliv jinam ?

3) není ta první kontrola na XSS v tomto případě nadbytečná ? Zatím si myslím, že ano

4) ve vlastním HTML stránky s formulářem (v meta tagu) je deklarováno kódování UTF-8. Stačí to ?
Majkl578
Profil
Před interpunkcí se nepíše mezera (nejsme Francouzi).

1) Selže to v případě, že v post datech přijde pole. Mezery nedovoluješ?
2) Když ho proženeš přes preg_quote, tak by mělo.
3) To přeci záleží na tom, co požaduješ. Podle mě je celý tenhle kód chybný.
4) Stačí k čemu?

Význam scriptu mi uniká. Na chyby se přece má upozornit, ne je ututlat a uložit něco jiného než si uživatel přeje.

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:

0