PHP

  • Linux Server,  PHP

    Zranitelnost ProFTPd CPFR/CPTO

    Že je protokol FTP nutné zlo, které snad jen trochu mírníme pomocí berliček jako TLS nad FTP o tom snad asi není potřeba mluvit. Rád bych ale upozornil na skutečně velkou zranitelnost proftpd, která vede k napadení systému na skutečně vysoké úrovni. Celý problém je dostatečně popsán a zdokumentován například zde a zde, ale balíky pro ubuntu v tuto chvíli stále obsahují zranitelnou verzi proftpd. Pomocí příkazů SITE CPFR/SITE CPTO z modulu mod_copy lze kopírovat libovolné soubory v rámci filesystému BEZ ověření uživatele. Řešením je zmíněný modul vypnout, nebo použít opravenou verzi proftpd. Příklad napadení: Trying xx.xx.xx.xx... Connected to xx.xx.xx.xx. Escape character is '^]'. 220 ProFTPD 1.3.5rc3 Server (Debian) [::ffff:xx.xx.xx.xx] site help…

  • PHP

    Funkce coalesce v PHP?

    Coalesce? Cože to vlastně je za divnou funkci? Jednoduše řečeno funkce COALESCE vrací hodnotu prvního výrazu, který nemá hodnotu NULL. To v praxi znamená, že pokud máte dvě proměnné z čehož jedna je teoreticky nenaplněna, resp. není inicializovaná, bude vrácena hodnota právě té druhé proměnné. Jistě, funkce coalesce existuje obecně v SQL jazycích, ale občas by se hodila i implementace v PHP. A světe div se, existuje. // A echo 'A' ?: 'B'; // B echo '' ?: 'B'; // B echo false ?: 'B'; // B echo null ?: 'B'; Nutno podotknout, že nefunguje nutně jen s funkcí echo, ale že bude fungovat i např. toto: ... function test($retezec){…

  • PHP

    PHP a validace e-mailové adresy

    Tuto validaci léta úspěšně používám na kontaktních formulářích k ověření platnosti e-mailové adresy:   function validateEmail($email){ $pattern = '^[_a-zA-Z0-9\.\-\=\^\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$'; if (ereg($pattern,$email)!=0){ if (!getmxrr(substr($email,strpos($email,'@')+1), $mxhosts)) return 'zadaná e-mailová adresa není platná dle DNS'; } else return 'zadaná e-mailová adresa není platná'; return true; }