[PHP] Su informacie v kode v bezpeci?

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod markjag 15. 7. 2007 14:11

Viem, ze k informaciam, ktore su napisane v PHP kode a ulozene na serveri, sa nie je mozne dostat (okrem admina teda a predpokladu neexistencie bezpecnostnych dier).
Na svojej stranke ponukam softver. Chcem pridat funkciu, aby si zakaznici mohli overit, dokedy im dana licencia plati, pripadne preco bola zrusena. Chcem to spravit pomocou jednoduchej kolonky, kde si uzivatel zada svoje seriove cislo a na stranke sa mu vypise potrebne udaje.
Verim, ze existuje lepsi postup, aky popisem teraz, avsak zatial mi staci, ak mi poviete, ci je toto aspon ako tak bezpecne (teda ci sa k licencnym cislam nemoze nahodou niekto dostat - okrem admina):
-kod bude vyzerat tak, ze pomocou SWITCH a CASE zabezpecim 'otazku' na kazde seriove cislo:
Kód: Vybrat vše
switch ($_POST["serial"]) 
{
  case 'nejake cislo1': echo "pripad1"; break;
  case 'nejake cislo2': echo "pripad2"; break;
  case 'nejake cislo3': echo "pripad3"; break;
}


//verim, ze cez databazu (zabezpecenu na login a pass by to bolo bezpecnejsie (mozno aj pred adminom webhostingu), ale zial tento rok mam este hosting bez MySQL serveru
markjag
Junior

Odeslat příspěvekod Nargon 15. 7. 2007 15:16

Pokud pomyneme nejake bezpecnostni chyby, tak seznam seriovych cisel v tom switchi nikdo neprecte.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod K8 15. 7. 2007 16:35

a co "brute force" utok?
tedy ze nekdo bude nahodne generovat cisla a zkouset, jestli se mu nevrati kladna odpoved
co to ochranit jeste napr moznosti jednoho dotazu za hodinu? (coz tedy bez db by znamenalo logovani nekam do souboru) nebo pripadne zasilani informaci emailem a kopii sobe, pro prehled, kdo to kdy zkousel
K8
Pokročilý

Odeslat příspěvekod Z@chi 15. 7. 2007 17:24

No ale vsak do toho switche nemusis vubec davat seriove cisla. Muzes tam dat jenom jejich hash, napriklad Sh1 a porovnat je se vstupem, ze ktereho udelas stejny hash.
Z@chi
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 15. 7. 2007 19:15

K8 píše:a co "brute force" utok?

Pred tim je jakakoli metoda stejne bezradna, at to ma primo v PHP, nebo v databazi, nebo na marsu.
Utocnikovy je uplne jedno, kde jsou data. On jen odesle formular a ceka na odpoved. A je mu uplne jedno jakym zpusobem se to vyhodnocuje.
Nargon
Moderátor

Odeslat příspěvekod Aonym 15. 7. 2007 19:22

Nargon: Pokud by tam nastavil například ten časový limit, tak bude bezradný ten bruteforce útok, vždyt oni jsou většinou bezradný i když tam žádný limit není.

Byla by to sice taková prasečina, ale šlo by tam před ověřením spustit třeba sleep(5); a než by nějaký bruteforcař našel nějaký serial, tak zevšediví..
Aonym

Odeslat příspěvekod markjag 15. 7. 2007 22:13

Ta moznost so Sleep(); sa mi lubi. Predpokladam hodnota je v ms ze?
Ak tam dam cakat 1 sekundu (teda Sleep(1000); ), tak by ma zaujimala jedna vec.
je mozne echo prikaz nejak vymazat / prepisat?
Teda nieco taketo:
Kód: Vybrat vše
echo "Prosim pockajte, spracovavaju sa udaje..."
Sleep(1000);
//vymazat predosle echo bez nutnosti reloadnut stranku
echo "moje info";

Ak by to islo len s reloadnutim, tak nevadi, aj to je lepsie ako nic :)
markjag
Junior

Odeslat příspěvekod Aonym 15. 7. 2007 23:06

vymazat/prepsat ne, teda nic me nenapada.

Jinak pozor, sleep() je v sekundach, usleep() v milisekundách, jen aby to nezpracovávalo věčnost :)
Aonym

Odeslat příspěvekod Baranock 15. 7. 2007 23:37

Prepis to cez javascript
Kód: Vybrat vše
echo ("<span id='text'>prosim cakajte 5s </span>");
sleep(5);
echo("<script>document.getElementById('text').innerHTML='ok'</script>");
Baranock
Junior

Odeslat příspěvekod K8 16. 7. 2007 06:57

to se sleep neni moc dokonale, nebot potencialni utocnik si muze navazat treba stovky spojeni paralelne a proto jsem psal, ze to chce si logovat, aby dalsi spusteni skriptu neslo udelat driv nez za urcitou dobu (treba i bez ohledu na IP adresy, nebot utok z mnoha PC neni problem zaridit)
K8
Pokročilý

Odeslat příspěvekod Desperado 16. 7. 2007 07:51

Není jednodussi okamzite prejit na hosting s mysql databazi a resit to databazove ? Podle toho co popisujes vyvyjis nejaky placeny software a tak na nem asi neco vydelavas. Predcastne ukonceni stavajiciho hostingu (bez databaze to bude asi nejaky sakra levny hosting) mi prijde jako rozumnejsi a bezpecnejsi reseni.
No ale pokud mas tech seriovych cisel radove desitky tak bych to delal pomoci toho switche.
Desperado
Kolemjdoucí

Odeslat příspěvekod Aonym 16. 7. 2007 08:19

K8: To máš pravdu, nějak jsem vytěšnil tuhle možnost, i když taky podle vyvíjeného softwaru se někdo pokusí využít různé prostředky....

V tom případě asi nejjednodušeji zapsat do souboru čas posledního ověření, a dát tam několika vteřinový interval ve skriptu, který musí uběhnout od posledního pokusu. Taky není nic těžkého...je to vlastně de facto ten sleep, ale pro všechny pokusy naráz...
Aonym

Odeslat příspěvekod markjag 16. 7. 2007 09:35

Desperado píše:Není jednodussi okamzite prejit na hosting s mysql databazi a resit to databazove ? Podle toho co popisujes vyvyjis nejaky placeny software a tak na nem asi neco vydelavas. Predcastne ukonceni stavajiciho hostingu (bez databaze to bude asi nejaky sakra levny hosting) mi prijde jako rozumnejsi a bezpecnejsi reseni.
No ale pokud mas tech seriovych cisel radove desitky tak bych to delal pomoci toho switche../quote]

Uvazoval som nad touto moznostou. (mimochodom v podstate len zacinam a toho predaneho softveru tak vela nie je)
Kludne to aj napisem :) , webpriestor aj s domenou ma stal na rok 1500,-Sk. S MySQL databazou by stal 2100,-Sk, takze az taky rozdiel to nie je. MySQL databaza by sa dala vyuzit na kopu uzitocnych veci, ale chcel som to dat az na dalsi rok. Kazdopadne uvidim teda...
Zatial to ale spravim cez switch a sleep(). Ten soft i tak nie je nieco, preco by sa niekto pokusal o nejaky tak masivny utok.

Vdaka vam za rady teda (ps: s tym javascriptom to este skusim).
markjag
Junior

Odeslat příspěvekod Nargon 16. 7. 2007 10:19

ameeck píše:V tom případě asi nejjednodušeji zapsat do souboru čas posledního ověření, a dát tam několika vteřinový interval ve skriptu, který musí uběhnout od posledního pokusu. Taky není nic těžkého...je to vlastně de facto ten sleep, ale pro všechny pokusy naráz...
Nargon
Moderátor

Odeslat příspěvekod Aonym 16. 7. 2007 10:44

Nevíme kolik řádově lidí ten serial bude ověřovat, ber to jako další do kupy možností řešení... :)
Aonym

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků