Pradinis
Pagalba
Užsisakyk!
- Reklamą
- Hostingą
- El. pašto dėžutę
Užsisakyk!
Įrankiai
Pasidalink
- Visos temos
Forumas | Modai, įskiepiai, panelės (PHP-FUSION) | Naujų modų pristatymai |
Autorius: BloodKiller | Peržiūrų: 8668 |
BloodKiller Narys Kapitonas Pranešimai: 847 Įstojęs: 2006 Bir. 22 19:06:25 | |
Standartinis sausainėlis PHP-Fusion sistemoje yra kažkas panašaus į tai: fusion_user=1.872ab031e6d4f347fd996aaabfd0ecb7 Na o nenorėtumėte, kad jūsų fusion_user atrodytų taip? fusion_user=86dd43a66aae4170666177d8a57a80a1.872ab031e6d4f347fd996aaabfd0ecb7 Kuo tai geriau būtų? Kol kas dar nežinom, nes neaišku, kas per daiktas yra tas šifras vietoj 1. Na bet nuosekliai nagrinėdami straipsnį, jūs tai puikiai surpasite. :) ALTER TABLE {prefix}users ADD special_id VARCHAR(255) NOT NULL AFTER user_status; Dabar atsidarę register.php, susiraskite šią eilutę: $result = dbquery("INSERT INTO ".$db_prefix."users (user_name, user_password, user_email, user_hide_email, user_location, user_birthdate, user_aim, user_icq, user_msn, user_yahoo, user_web, user_theme, user_offset, user_avatar, user_sig, user_posts, user_joined, user_lastvisit, user_ip, user_rights, user_groups, user_level, user_status) VALUES('".$user_info['user_name']."', '".$user_info['user_password']."', '".$user_info['user_email']."', '".$user_info['user_hide_email']."', '', '0000-00-00', '', '', '', '', '', 'Default', '0', '', '', '0', '".time()."', '0', '".USER_IP."', '', '', '101', '$activation')"); ir ją pakeiskite į: $spec_id = md5(sha1(mt_rand()+time()).microtime()); Tada tame pačiame faile suraskite šią eilutę: $result = dbquery("INSERT INTO ".$db_prefix."users (user_name, user_password, user_email, user_hide_email, user_location, user_birthdate, user_aim, user_icq, user_msn, user_yahoo, user_web, user_theme, user_offset, user_avatar, user_sig, user_posts, user_joined, user_lastvisit, user_ip, user_rights, user_groups, user_level, user_status) VALUES('$username', '".md5(md5($password1))."', '".$email."', '$user_hide_email', '$user_location', '$user_birthdate', '$user_aim', '$user_icq', '$user_msn', '$user_yahoo', '$user_web', '$user_theme', '$user_offset', '', '$user_sig', '0', '".time()."', '0', '".USER_IP."', '', '', '101', '$activation')"); ją pakeiskite į: $spec_id = md5(microtime().sha1(mt_rand()+time())); register.php sutvarkytas. Dabar atsidarykite administration/members.php ir susiraskite šią eilutę: $result = dbquery("INSERT INTO ".$db_prefix."users (user_name, user_password, user_email, user_hide_email, user_location, user_birthdate, user_aim, user_icq, user_msn, user_yahoo, user_web, user_theme, user_offset, user_avatar, user_sig, user_posts, user_joined, user_lastvisit, user_ip, user_rights, user_groups, user_level, user_status) VALUES ('$username', '".md5(md5($_POST['password1']))."', '$email', '$hide_email', '', '0000-00-00', '', '', '', '', '', 'Default', '0', '', '', '0', '".time()."', '0', '".USER_IP."', '', '', '101', '0')"); ją pakeiskite į: $spec_id = md5(microtime().sha1(mt_rand()+mt_rand(1,2)*time())); Po šio pakeitimo atsidarykite maincore.php failą ir susiraskite: $cookie_value = $data['user_id'].".".$user_pass; tai pakeiskite į: $cookie_value = $data['special_id'].".".$user_pass; Dabar tame pačiame faile suraskite šią eilutę: $result = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_id='$cookie_1' AND user_password='".md5($cookie_2)."'"); ir ją pakeiskite į: $result = dbquery("SELECT * FROM ".$db_prefix."users WHERE special_id='$cookie_1' AND user_password='".md5($cookie_2)."'"); Po to suraskite šią eilutę: $cookie_1 = isNum($cookie_vars['0']) ? $cookie_vars['0'] : "0"; ir ją pakeiskite į: $cookie_1 = isset($cookie_vars['0']) && preg_match("/^[a-z0-9]+$/i",$cookie_vars['0']) ? $cookie_vars['0'] : "0"; BAIGTA. :) Dabar išsamiai aš jums paaiškinsiu, kuo tai geriau nei paprastas ID. Matote, kai yra paprastas ID, per ciklines socket užklausas lengviau vykdyti bruteforce ataką, spėliojant vartotojų ID nei jų special_id, kurio niekas visiškai nežino ir net negali numatyti, nes jis niekur nėra skelbiamas, priešingai nei paprastas vartotojo ID - jis yra sugeneruojamas ir suteikiamas visiems skirtingas. Tokiu būdu yra visiškai užkertamas kelias bruteforce atakoms per sausainėlius. P.S. Jeigu kils problemų, rašykite čia, nes šitos sistemos neištestavau visu 100%, tad gali būti nesklandumų. |
|
ramon Narys Ekspertas Pranešimai: 2977 Įstojęs: 2006 Gru. 18 11:12:50 | |
Joa gan neblogai padirbejai |
|
Narys Tankas Pranešimai: 2100 Įstojęs: 2006 Rugp. 17 16:08:42 | |
Kaško nesupratau, ar durnas, bet tik tos apsaugos nesugebų įsidėt į saitą, nes tada neleidžia logintis. |
|
MAnjack Garbės narys Legenda Pranešimai: 11821 Įstojęs: 2006 Kov. 2 20:03:58 | |
Šiaip galima ir papraščiau. md5 paswordą užkoduot base64(), o vėliau jį atkoduot. O išėmus iš sausainėlio tą dalį, bent jauper Operą jos atkoduoti nepavyko. |
|
MaFetas Administratorius Ekspertas Pranešimai: 3453 Įstojęs: 2005 Lie. 16 13:07:41 | |
Turiu laisvo laiko reiks manau išbandyti Adminas - ban'o laisvė www.KIETEKAS.com |
|
ozzWANTED Administratorius Legenda Pranešimai: 8478 Įstojęs: 2006 Gru. 29 14:12:31 | |
Mldc blood, šitą ir į straipsnius galima pateikt. BR#1, Most Wanted |
|
bruzgis Narys Ekspertas Pranešimai: 3368 Įstojęs: 2006 Geg. 9 18:05:02 | |
taip dragelis, sitas modas turi spragu, ji ikisus negalima prie svetaines prisijunt. leisk paklaust o kurioj vietoj i db iraso special id? tik tada kai uzsiregistruoja isnaujo matyt... o esamiem vartotojam taip ir nesukuria to special_id |
|
bruzgis Narys Ekspertas Pranešimai: 3368 Įstojęs: 2006 Geg. 9 18:05:02 | |
Nu tai ir sukurkim mes ta special_id esamiems vartotojams: atsidarom maincore.php susirandam if (isset($_POST['login'])) { ir po juo pridedam si koda if ($data['special_id'] == '') { |
|
MAnjack Garbės narys Legenda Pranešimai: 11821 Įstojęs: 2006 Kov. 2 20:03:58 | |
Man irgi šitas klausimas buvo iškilęs. Ką darys senesnį saito nariai. Norėjau jau aš papildymą šitą įdėt. |
|
bruzgis Narys Ekspertas Pranešimai: 3368 Įstojęs: 2006 Geg. 9 18:05:02 | |
tik manycia reiktu if ($data['special_id'] == 0) { keist i if ($data['special_id'] == '') { nes gi seno nario special_id lygus niekam |
|
mXt Narys Viršesnis už Dievą Pranešimai: 5775 Įstojęs: 2006 Bir. 9 16:06:09 | |
Apkeiciant cookies vistiek imanoma isilauzt. Ar klystu? ex best admin! |
|
bruzgis Narys Ekspertas Pranešimai: 3368 Įstojęs: 2006 Geg. 9 18:05:02 | |
nu su situ kazi id tai nezinai special to cookiuose tai hasha gaudavai ir id suzinodavai nario ir vsio sukeisti refresh ir turi o cia vietoj id eina special_id |
|
ramon Narys Ekspertas Pranešimai: 2977 Įstojęs: 2006 Gru. 18 11:12:50 | |
Isilauzti imanoma bet reikia zn user_id='1' special_id bei jo hasha |
|
Narys Tankas Pranešimai: 2100 Įstojęs: 2006 Rugp. 17 16:08:42 | |
Nu ačiū chipass, bet man vistiek neįrašo po tavo pakeitimo į db special_id. Redagavo Kelmas 2008 Lie. 14 08:07:38 |
|
MAnjack Garbės narys Legenda Pranešimai: 11821 Įstojęs: 2006 Kov. 2 20:03:58 | |
Bandyk taip: if (!isset($data['special_id'])) { Be to manau naudojant šitą kodą maincore.php, dalies kodo nelabai ir reikia. Tingiu plčiau aiškint. Kam reikės tas supras :D |
|
Narys Tankas Pranešimai: 2100 Įstojęs: 2006 Rugp. 17 16:08:42 | |
Dėl to kur įrašo jau įsirašiau automatiškai naujam faile sugeneraves, bet vistiek šūdas nelogina. Šitą apsaugą reikia visa perašyt, nes užreginau naują userį irgi taspats. Redagavo Kelmas 2008 Lie. 14 09:07:39 |
|
bruzgis Narys Ekspertas Pranešimai: 3368 Įstojęs: 2006 Geg. 9 18:05:02 | |
nieko perasinet nereikia... viskas kuo puikiausiai vekia... su mano duotu kodu tuo labiau veikia. ir prie nauju useriu prideda ta id. tad pasinagrinek daugiau, pamastyk ir susitvarkysi. |
|
irmantosas Narys Pulkininkas Pranešimai: 354 Įstojęs: 2007 Kov. 14 21:03:19 | |
kame beda dabar man meta jog neteisingas nario vardas ar slaptazodis |
Peršokti į forumą: |