Funkce v PHP, která odstraní všechny nealfanumerické znaky (s podporou unicode)
Zdravím, řeším problém se zabezpečením php formuláře. Potřebuji ze vstupu uživatele odstranit všechny nealfanumerické znaky, které se tam nějak ocitnou, ale se zachováním unicode znaků typu ruštiny, smajlíků apod. Jednoduchá verze takové funkce je
preg_replace('/[^\da-z ]/i', '', $retezec)
která ovšem nechá pouze alfanumericke ascii, což už dnes nestačí.
Poradíte mi, prosím? Díky.
Zkus tohle:
Ale pokud jde o smajlíky, tak to už by asi bylo podstatně složitější.
Dík za odpověď.
Funkci jsem tam vpálil, ale nedělá vůbec nic ...
Samozřejmě o smajlíky nejde, jde o to, aby tím uživatel za žádných okolností nemohl natropit žádnou neplechu, například v databázi, kam se to vkládá.
Mimochodem, mám na to takový řetězec, kterým to testuju, tak ten by asi taky potřeboval vylepšit, aby pokrýval více možností ...
No výsledek samozřejmě taky musíš někam uložit. Stejně jako u toho, co jsi tam měl původně.
Pokud jde o SQL databázi, tak to víceméně stačí ošetřit proti SQL injection.
Ano, samozřejmě jsem výsledek někam uložil. Obsah formuláře jsem prohnal tou funkcní a někam uložil, ale nic se na něm nezměnilo, proto jsem psal, že nedělá nic ...
A co bylo v tom formuláři? Nějaké "závadné" znaky?
Aha, drobná chybka:
A ve smyslu zabezpečení čeho?
HTML?
Nestačí htmlspecialchars?
https://www.php.net/manual/en/function.htmlspecialchars.php
Co se týče databáze tak od toho jsou prepared statement.
Dík za odpověď.
Ve smyslu zabezpečení všeho, prostě aby nikdo, ani různé boty, co formuláře neustále napadají, nemohl na serveru ani v databázi, kam se vstup ukládá, udělat žádnou škodu ...
Na zabezpečení všeho to určitě stačit nebude, ale tobě to určitě stačit bude