Bezpečnost PHP pro podnikový web

Petr

Re:PHP - bezpecnost pro maly podnikovy web
« Odpověď #15 kdy: 11. 07. 2014, 00:39:54 »
D.)
function sanitize($input){
        $input = htmlentities($input); // convert symbols to html entities
        $input = addslashes($input); // server doesn't add slashes, so we will add them to escape ',",\,NULL
        $input = mysql_real_escape_string($input); // escapes \x00, \n, \r, \, ', " and \x1a
        return $input;
}
Tohle je krásný příklad, proč escapování nepoužívat. Vnutíte programátorům takovouhle funkci, ta escapování udělá pokaždé špatně, programátor si bude myslet, že se escapování volá dvakrát, tak svoje volání odstraní, a hned máte v kódu bezpečnostní díru.
Escapování se používá vždy tam, kde mají příslušné znaky speciální význam. Takže htmlentities() se použije pří výstupu do HTML, mysql_real_escape_string(), pokud už by se použilo, se použije při vstupu do databáze, takže tyhle dvě funkce se nikdy nemůžou aplikovat o sobě, nedává to žádný smysl. A to addslashes() už je jenom bonbónek na závěr, aby ta funkce byla zmatlaná pořádně.
Jo souhlas. Funkce htmlentities a addslashes jsou v případě použití mysql_real_escape_string zbytečné..... a neměli by se použít.


student

Re:Bezpečnost PHP pro podnikový web
« Odpověď #16 kdy: 11. 07. 2014, 00:42:28 »
a) pri https relativne ano
b) bezpecnost session je obmedzena bezpecnostou webservera. Na zdielanych hostingoch session nebyvaju bezpecne (to plati aj ked je hosting zdielany s deravou Joomlou a pod.) - nastavit to ide, ale casto sa na to kasle
c) odporucam to dat na zatrzitko pri prihlasovani - inak budu ludia s dyn. IP nadavat
d) teoreticky ano; v praxi sa tam nachadzaju chyby. Pomahaju prepared statements.
e) ked sa ten hash opakuje velakrat, soli sa to velkou per-site solou a per-user solou, tak je to nie uplne nerozumny sposob ukladania hesiel. Aj ked ja pouzivam naviac funkciu v SQL, ktora vie povedat len to, ci heslo sedi. Iny pohlad na hesla je zakazany pravami DB.

Re:PHP - bezpecnost pro maly podnikovy web
« Odpověď #17 kdy: 11. 07. 2014, 09:02:45 »
Líbí se mi, jaké všechny rovnáky na vohejbáky lidé vymyslí a kolik času tím stráví místo aby implementovali jeden z mnoha jednoduchých existujících protokolů, které heslo na druhou stranu vůbec přenášet nepotřebují.
Problém je, že ti lidé, kteří by to mohli implementovat, jsou vývojáři webových prohlížečů, a ti na to kašlou. Weboví vývojáři pak z těch "mnoha existujících protokolů" mají reálně k dispozici jeden (HTTP Digest), který je navíc v prohlížečích implementován nepoužitelně (částečně i proto, že je nepoužitelný i standard - ale jak je vidět na příkladu HTML5, když se chce, mohou se vývojáři prohlížečů na standardu shodnout velice rychle).

omelkes

Re:Bezpečnost PHP pro podnikový web
« Odpověď #18 kdy: 11. 07. 2014, 09:50:08 »
chystam se udelat takovou malou stranku, kde klientum budu rikat rekneme informace treba o stavu jejich pozadavku k vyrizeni, taky treba kolik maji na nasem ucte jeste kreditu apod.
Ahoj
premyslim zda se nechystas udelat spise pitomost..  Z dotazu je jasne ze programovat v php neumis ale je otazka co je cilem?

Cilem muze byt hotovy produkt na sledovani pozadavku - issue tracker. Takovych systemu je mnoho, takze v klidu bych pouzil nejaky existujici (at jiz placeny nebo opensource).  Neni treba kvuli tomu bastlit nejake nefunkcni nebezpecne reseni.
Na tvem miste bych si sepsal zakladni pozadavky a podle toho vybral.

Pokud je cilem naucit se v php programovat a Issue tracker je jen projekt na kterem zacnes, tak proc ne? Ale najdi si nekoho s kym to budes konzultovat, kdo ti bude revidovat kod a pripadne ti poradi. Resit nesmysly ohledne myslq_ funkci a dalsich sracek z tutorialu vydanych kolem roku 2003 te nic nenauci, vysledek bude stat za hovno a nebude to fungovat.

Pokud je pozadavkem firmy mit modularni system, do ktereho se budou veci doplnovat dle potreby, pro zacatek issue tracker, tak od toho dej ruce pryc. Ted nemas na to aby jsi to udelal dobre, na to je potreba zkuseny progamator (jedno v jakem jazyce). Dum si take nenechas navhrnout od doktora.

karel

Re:Bezpečnost PHP pro podnikový web
« Odpověď #19 kdy: 11. 07. 2014, 10:52:25 »
D) je mysql_real_escape_string dostatecny proti injekci kodu?

http://php.net/manual/en/function.mysql-real-escape-string.php

This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:

    mysqli_real_escape_string()
    PDO::quote()

myslim ze to mluvi za vse