aegis wrote:Jei svarbu, tik tai, kad hakeris priėjęs prie duombazės ir gavęs md5 hash'ą, pagal rainbow tables jo neatkoduotų tai galima daryti labai paprastai - sugeneruojam md5 string'ą, tada jį "sukarpom", sudeliojam pagal save (tarkim vidurys pradžioje, galas viduryje ir t.t.) ir įrašom į duombazę. Hakeris, gavęs priėjimą prie duombazės įrašo vistiek negalės atkoduoti, nes jam reiks sužinoti ir algoritmą, kuriuo md5 "sukarpytas". Kadangi visi md5 yra vienodo ilgio bei "panašiai" atrodo, labai didelė tikimybė, kad hakeriui net nešaus į galvą jog šitas string'as iš tikro yra dar kažkaip sudeliotas iš originalaus md5 string'o.
Labai klaidingai mastai.
Aš visiem bandau įkalti tokią vieną svarbią taisyklę, kurios laikydamasis programuotojas palengvis sau gyvenimą ilguoju periodu:
Programa turi būti saugi, net ir turint jos išeities kodus.
Kitaip sakant, PHP kodą gali duoti bet kam, bet jie neturi galėti nulaužti uždaros sistemos.
Na aišku tai yra viena iš daugelio taisyklių kalbant apie patikimas ir saugias programas, bet ją tikrai reikia suprasti ir jos laikytis. Tai ką tu, aegis, siūlai - tai yra "paslėpti" kažką kode, ir tipo tai jau kažkaip padidins saugumą. Programos ar sistemos saugumumo lygis yra lygis silpniausios posistemės saugumo lygiui. Tavo atveju užteks vienam "hackeriui" gauti išeities kodą, ir ištisos programų instaliacijos taps mažiau patikimos. Ta bandoma sumodeliuoti situacija, kad kažkas gauna priėjimą prie DB, bet nemato PHP kodo, bus supainionas, tai patikėk taip nebus, nes labai greitai bus aptikas tas tavo algoritmas. Esu radęs el. parduotuvių, kuriose yra SQL injectionai, o slaptažodžiai koduojami savu algoritmu. Su SQL injectionu aš galiu gauti užkoduotą slaptažodį, bet nematau PHP kodo, kaip jis yra užkoduojamas. Algoritmas buvo rastas per porą dienų, grynai iš sportinio intereso. Ir ten tikrai buvo sudėtingiau negu md5 hash'o sumaišymas.