Topic: apsisaugom nuo XSS ataku
Sveiki, as laikau slaptazodi db uzkoduotus md5. Ar imanoma, kad XSS ataka bus perimti duomenys ir slaptazodis sekmingai atkoduotas?
Suprantu, kad perimti duomenis imanoma, bet ar pavyktu isilauzeliu iskoduoti md5?
PHP ir MySQL programavimas, SQL užklausos, duomenų bazės, PHP scriptai, pagalba, diskusijos, pamokos ir straipsniai.
You are not logged in. Please login or register.
PHP ir MySQL → PHP → apsisaugom nuo XSS ataku
Sveiki, as laikau slaptazodi db uzkoduotus md5. Ar imanoma, kad XSS ataka bus perimti duomenys ir slaptazodis sekmingai atkoduotas?
Suprantu, kad perimti duomenis imanoma, bet ar pavyktu isilauzeliu iskoduoti md5?
taip
Nulauzimas vyks lyginai taip pat, kaip be kodo, tik is md5 nauda tik tokia, kad uztruks kol iskoduos su spec. programo md5 koda?
taip, o siaip gali naudoti SHA1 kuris yra kur kas saugesnis, nors tiesa apie ji skaiciau kad irgi nulauziamas tik ten pajunge labai daug playstasionu ir naudojo ju GPU skaiciavimams...
o md5 rainbow tables gali susigeneruot ir namu salygomis, tiesa as bandziau ant darbinio kompo sugeneruot, tai po savaites non-stop generavimo su dviem branduoliais paaiskejo, kad tokiu savaiciu reiks 40 :D meciau ta reikala. bet po to susiradau irc kanala kur botas iskoduodavo per kokias 2-5 min, bet veliau kai istikro jo prireike - neberadau :(
iškoduoti md5 yra neįmanoma. tai algoritmas, koduojamas tik į vieną pusę. vienintelis būdas atspėti tokį slaptažodį yra generuoti įvairias skaičių sekas, koduoti su md5 ir lyginti su turimu hash'u. bet sitas variantas labai daug trunka, nes reikia perrinkinėti įvairias simbolių kombinacijas. ir kuo sudėtingesnis slaptažodis, tuo sunkiau jį atspėti.
kad kuo labiau apsunkinti tokį reikalą (o gal net padaryti išvis neįmanomu), galima daryti dvigubą kodavimą (nors jei šitą dalyka sužinos tas, kuris stengias nulaužt, tai šis variantas bevertis), arba dadėti prie slaptažodžio kažkokią kontrolinę eilutę ir tik po to jį koduoti.
taip pat dažnai įsilaužėliai slaptažodžių laužimui naudoja taip vadinamus žodynus, nes tuomet procesas paprastėja ir greitėja (nereikia generuoti simbolių sekų).
...taip pat dažnai įsilaužėliai slaptažodžių laužimui naudoja taip vadinamus žodynus, nes tuomet procesas paprastėja ir greitėja (nereikia generuoti simbolių sekų).
... arba naudoja jau sugeneruotas duomenų bazes, kuriose tereikia atlikti paiešką pagal hash'ą.
Na aisku, dekui uz atsakymus ;]
Dar pridursiu, kad ten, ur yra galimybė atlikti XSS ataką, dažnai net nereikia sužinoti slaptažodžio, galima iš karto perimti vartotojo (admino) sesiją, ir dirbti lyg būtum tas vartotojas (adminas). Rašau "dažnai", bet ne visada (-;
Saugiausias variantas koduoti duomenis ilgesnius už hašą, tada tikrai bus daugiau nei 1 pradinis duomuo gražinantis tą patį hašą
takim
<?php
function hasher($sting){
$token = "Hi hacker :)
If you got here you are damn smart ;), but I've prepared a surprise 4 you:
Passwords in my db are hasshed in a fancy way :D
I hava an offer 4 you: why dont you email me [tavo emailas] and tell how you got here
Of course for reward ;)
Good day";
return md5 (md5($token) . md5($token.$string) . md5(string));
}
Kadangi standartinės hašų lentelės nebetiks, reiks generuoti naują. Kadangi md5 naudojamas 4 kart, generavimas truks 4 kart ilgiau :)
Daug labiau tikėtinas būtų jei hakeris tau emailą brūkštelėtų :D
O nuo sesijų vagysčių galima saugotis SID pririšant prie IP browserio ir dar koki iš vartotojo gaunamo headerio. Tada net pavogęs SID'ą negalėsi juo pasinaudoti, nes SID'as nus nevalidus pagal IP. O net ir būnant po vienu IP (pvz įsilaužė pro kliento routerį), jam dar reiks suprati, kad sidas priklausomas ir nuo kitų vartotojo duomenų. O nesėkmingus bandymus galima lengvai daudyti ir dėt baną ant ip :D
Va kokios galvos sneka. :) Luko pasiulytas variantas patiko. O kaip jus manot jei jau sugebes paimti pass id DB, ar jis nesugebetu jo ir UPDATE? Jei jau ir SELECT pavyko, tai sugebes ir INSERT,CLEAR,TRUNCATE ir dar bala zino ka.
Tai gali cia suzaisti su useriu teisemis, tarkim vienam mysql acc leisk tik skaityti irasus, o kitam visas teises, kur kur reikia tik nuselectinti, naudok pirmaji acc, nes jei jo duomenis ir perimtu hakeris, tai jis tik celectint galetu. aisku jei jam paviks gauti to acc duomenis tada greiciausiai jau tik laiko klausimas kul jis ras ir kito acc duomenis.
Siaip realiai i serva galima isilauzti ne tik radus spragu web dalyje bet ir serrvo OS
Aišku jei įsistatysi šarvuotas duris su 3 stambiais vyrukais prie jų, bet langus iš kiemo pusės paliksi atdarus, tai net prezidentas tau nebepadės :D
šiaip būtų visai įdomu sukurti atskirą skilttį forume "Tips and and tricks": Sugumas, Geitis, Dažniausi atvejai ir tarkim kaupti tokias +-standartines šifravimo/ saugumo/ šiaip klases.
-, kad hakeris galėtų pasinaudoti tuo, kad žinos, kaip viduriai veikia, bet taip pat žinotų, jei naudotum kokį karkasą
+ Gelios galvos tikrai nepaliktų žioplų bugų :)
šiaip būtų visai įdomu sukurti atskirą skilttį forume "Tips and and tricks": Sugumas, Geitis, Dažniausi atvejai ir tarkim kaupti tokias +-standartines šifravimo/ saugumo/ šiaip klases.
Pritariu, bet yra wiki, galima butu ir ten sukist. Ko as pasigendu, kad butu imanoma redaguoti/rasyti i mysql.lt/wiki , manau greitai uzsipildytu :)
Wiki nera galimybes komentuoti, o mano ideja yra +- komandinis darbas.
Wiki gal ir gali redaguoti, bet tokioj srity kaip saugumas, galima laabai lengvai prisiregulioti.
Ko as pasigendu, kad butu imanoma redaguoti/rasyti i mysql.lt/wiki , manau greitai uzsipildytu :)
Tai tereikia ten prisiregistruoti ir galėsi redaguoti.
Wiki nera galimybes komentuoti
Viskas yra, yra aptarimų/diskusijų puslpiai, gali vieną ar kitą dokumentą/puslapį išgrynint iki negaliu..
neturejau ka veikt taip siaip sumasciau paklaidziot po senus irasus. Ir tikrai Luko mintis man patiko. Tarkim Wiki man tikrai nera prie sirdies, o tuo labiau mokintis sintakse ir kazka rasyt ten, o cia. Pasileidi foruma ir iskart viskas graziai svariai sudeliota ir parasyta.
As uz "Tips and tricks" (thumbsup) :)
Na kaip.. aš pvz remiuosi tokia patirtim:
Apie forumus:
a) dažniausiai forumo post'ai neturi galimybės būti redaguojami daugiau negu vieno žmogaus tuo pačiu metu;
b) norint iš tam tikros forumo gijos (thread) pirmame jo post'e surinkti naudingą info (kaip sticky) tai administratorius(-iai) turėtų sektį tą forumo giją ir info kelti į pirmą post'ą jį redaguodamas(-i);
c) šitas konkretus forumas (senas punBB) neturi pakankamai funkcijų jį atitinkamai suredaguoti su atitinkamom teisėm - reikėtų užsiimti jo upgrade'u (-;
d) paprastai togia gija sudarys daugybė post'ų, kuriuose užvirs fleimai ir pan. jų priežiūra atima per daug laiko (-;
Apie wikius:
a) kiekvienas wiki puslapis turi galimybę būti redaguojamas daugiau negu vieno žmogaus;
b) kiekvienas wiki puslapis turi aptarimų/diskusijų puslapį, kuriame gali būti visi to puslapio užkulisiniai dalykai, kurie neturi būti matomi tame konkrečiame puslapyje (forumo atveju visos diskusijos vyks toje pačioje gijoje);
c) dėl wiki sintaksės: tiek kiek reikia parašyti paprastai suformatuotai žinutei, tai nereikia nieko mokintis (-; (o ir aplamai ta sintaksė tai labai simple);
Mano asmenine nuomone wikis turi daugiau laisvės ir funkcijų tokiems uždaviniams, bet jeigu norite pabandyti forumą tai galiu sukurti atskirą temą, it leisti ją administruoti (-; Nematau didelių problemų.
Pabandysiu atsakyti i kiekviena is punktu kur parasiai savo nuomone ;)
Apie forumus:
a) Forumai ir skirti diskutuoti o neredaguoti kiekvienas savo postus.
b) Kam tie sticky? Jai ieskai infos ir jau radai tema susijusia su tai kas tau aktualu, beskaitydamas visus postus, o gal persokdamas per kelis rasi tai ko reikia + gal gausi dar daugiau negu tikejais :)
c) Gal ir senas tas forumas, bet pakolkas bent man vienintelis kuris patinka. Cia truputi savo prikisiu nuomone :)
c.1) phpBB - per daug apkrautas, pasiklysti jame lengviau nei miske.
c.2) vBulletin - Pirmiausia minusas kad mokamas, antras minusas - taip pat prikista visko ko tik reikia ar nereikia...
c.3) IPB - kiek teko bandyt tiesiog taip pat prikista visko iki negaliu...
d) Del fleimu kad kazin, nes neteko matyt kad dabar cia fleimintu kas nors, lyg ir padori kompanija renkas :) Gal del to vienintelis forumas kuriame dalyvauju (think)
Apie Wiki:
a) Kiekvienas prides savo, o kitas atims nes jo manymu tai nera naudinga arba nera aktualu. Atejusiam skaityti zmogui gal isvis to net nereikia kas parasyta, o gal butu praverte tai ka rase senasis redaktorius... O po istorija knistis ir bala zino ko ieskoti tikrai nesinori.
b) Del diskusiju, tai as isvis iki dabar dar nesuprantu to pointo kam jie reikalingi :) Na bet gal tavo mintis ir nebloga.
c) Ji nera sunki - zinau, bet uzknisanti :) Nezinau, bet man bent toks bajeris kaip : '''Bold''' nesuprantamas kodel netinka Bold :)
d) Tiesiog nepatinka :D Kai noriu tai ir tenka po wiki info ieskot, bet dazniausiai ja surandu butent forumuose, bet tik gaila kad uzsienietiskuose.
Del wiki as nieko pries, bet Wiki kaip minejau man del istorijos kazkaip nesueina galai, ateis vienas prides kazka, ateis kitas prides kazka, ateis trecias puse istrins nes jei jis Pro tai kam tokie vejai? Ides savo info kurios vel puse nesupras....
Na nezinau, tau spresti. Gaila nera balsavimo, but smagu suzinot nuomone ir kitu ;)
Aš įsivaizduoju, kad darant tokį dalyką, apie kurį čia kalbama (Tips and Tricks) arba kažkokį išsamesnę saugumo info sankaupą, vistiek tektų visą info susistemint ir suredaguoti viename puslapyje. Ar tai būtų sticky ar tai būtų wiki. Kai kiekvienas parašys forume po vieną post'ą, ir paliks, tai nebus patogu skaityti viską iš eilės, nes tikrai toje gijoje (thread'e) bus ir off-topic'inių post'ų. Tai šioje vietoje tektų kažkam (man ar kažkam kitam) redaguoti pirmą gijos post'ą ir į jį sukelti/susisteminti info, kuri būtų rašoma tos gijos postuose (-;
PHP ir MySQL → PHP → apsisaugom nuo XSS ataku
Powered by PunBB, supported by Informer Technologies, Inc.