Venom
Moderatori-
Posts
1,918 -
Joined
-
Last visited
Everything posted by Venom
-
nu ta vismaz kāda sistēma, kur nolādējama, kur liec (windows,linux), vai ar to pašu lietotāju etc. var pieslēgties pie db ar kādu programmiņu... NB: es šodien līdz 16
-
nopostējas 2x. tu meklē kaut ko gatavu vai gribi taisīt pats?
-
kas ir kartiņu sistēma - elektronisko karšu norēķini? skaties banku lapas
-
sk. break/continue, exit, die
-
sk: ignore_user_abort() - php turpina izpildīt kaut ko arī tad, kad liētotājs aizver brauzeri register_shutdown_funcion() - tiek izsaukts, kad tiek beigts serversavienojums (pievērts logs) bet būtībā session_destroy() notiek pats par sevīm, ja vien neesi kaut ko nofiņķelējies pa php.ini. parasti cilvēkiem problēmas - kā saglabāt sessiju pat aizeverot logu, a te še tev!
-
... sūtāmo SQL stringu, t.i. hakeris uzreiz rokās dabūs paroli tīrā veidā. Var arī neanalizēt net trafiku, bet nočiept sql servera logus, kurā dažkārt tiek pierakstīti pieprasījumi (piem. admins grib atrast kādu procesu, kas gāž nost db, ieslēdz query loggingu un tājā parādās parole tīrā veidā). Autentifikācija uz md5($pwd) [kur $pwd ir tieši tas, ko ievada lietotājs] pamata bāzes pēdējos gados ir kļuvusi par standartu, kas ļauj taisīt t.s. one-point ielogošanas sistēmas, jebšu Single Sign-On solutions no "komponentēm", ko ir taisījuši dažādi izstrādātāji. Resp. lietotājs ienāk forumā, es sesijā saglabāju md5 hashu (t.i. arī nočiepot sessiju nepiekļūst parolei tīrā veidā), nobrauzējot uz pasta pārbaudes web-interfeisu es vienkārši ureiz piesaku hashu un lietotājam nav otrreiz jāievada tā pati parole (iekš VeA esmu taisījis virkni - mans forums, phpBB, squirrelmail, ienākot jebkurā varēja brīvi pārvietoties starp visiem).
-
tas, ka datu bāzē tu glabāsi hashu no "parole", vai "janislkslkjhadlkjadparole" ir būtībā vienalga (izņemto to, ka otrā variantā parole ir garāka, kas ir labāk un grūtāk atkožams), jo md5 nav cikliska funkcija, t.i. ja tu vari atgriest vērtību sākotnējo no vērtību no md5('parole') hasha (resp. parole) - tāpatās arī varēsi "apgriezt otrādi" arī "janislkslkjhadlkjadparole". Katram flip atbilst tikai viens flop. t.i., ja es atrodu kādu simbolu kombināciju, kuras md5 ir vienāds ar datu bāzē saglabāto, tad ar 99.99% pārliecību varu teikt, ka tā satur izejas stringu. Tavā piemērā parole tik un tā tiek iebliezta pa tīro un acīm saskatāma, ja tā būtu vismaz str_rot13-tēta, tad nebūtu preteziju liekkodībai ;) (t.i. arī atkožot md5 hakeris uzreiz neredz paroli tīrā veidā, kādu varētu ievadīt sistēmas interfeisā). Att. uz būtību: kad lietotājs reģistrējas, datu bāzē tiek saglabāts (char(32) laukā) md5() no ievadītās paroles, t.i. parole tīrā veidā netiek glabāta d.b. md5 būtība ir tāda, ka vienam stringam atbilst viens un tikai viens hashs (ok, ir nebūtiska varbūtība, ka viens hashs varētu atbilst diviem dažādiem vārdiem/teikumiem), resp. nevar notikt tā, ka nokodējot teikums1 un teikums2 hash1 būtu vienāds ar hash2. Kad lietotājs ievada paroli pārbaudei - tu noģenerē ar php no tās md5 hashu, un salīdzini, vai tas ir vienāds ar db glabāto. Ja tā ir, ar 99.99% pārliecību tu vari teikt, ka ievadītā šoreiz parole ir tieši tā, kas tika izmantota reģistrācijai, t.i. ir patiesa. Arī nozogot datu bāzi nevarēs pateikt, kādas bija izejparoles (kas ir svarīgi, ja tās tiek izmantotas vairākās vietās), resp. tiek nograuta tikai viena komponente, nevis visa sistēma. Cits jautājums, ja datu bāzē to var nomainīt pret savu md5 hashu, bet nevar piekļūt pašam php/whateva kodam, kas pārbauda autentifikāciju. Un ŠĀDĀ gadījumā es piekrītu Aleksejam - ka jāliek klāt kaut kāds "slepens" papildinātājs jau programmā, ko nezinot, nevar nogēnerēt md5 no stringa, kas turpmāk atbilstu nosacījumiem. Cita lieta atkal ja gribi savienot vairākas komponentes kopā (Single Sign On, kādu es piem. izmantoju ltta.lv lapā, kur ar vienu paroli var piekļūt gan administrēšanai, gan čatam, ko neesmu taisījis es, jo tiek izmantota vienāda shēma). Bet arī šeit būtu jāpielieto otrā līmeņa kodēšana, kā esmu norādījis augstāk. Resp. ja hakeris redz 32-simbolu zīmi un saprot, ka tas ir md5 un viņam/i pie tam izdodas to atkodēt, viņš redz "manaparole" - bet ar to nevar ieiet, paņem atkodē kādu otro, un tā ir "manacitaparole", viņš sapratīs, ka formā jāievada tieši beigu daļa, bet "mana" tiek pielikts automātiski. Ja atkodējot md5 viņš saņems atkal 32 simbolu virkni, ir pamats domāt kā izejas kodā stāv md5(md5($password)). Tas saucas idejiskais reverse-engineerings. Svarīgi iekš kvērija nodot jau noģenerēto hashu, lai SQL pieprasījums beigu variantā izskatītos kā WHERE kolonna='ksjdk2g23i4e3g8yagiuhbjahsbd', nevis kā taisa daži "grudrinieki" - WHERE kolonna=MD5('parole'). Rezultāts ta ir viens un tas pats, ar to atšķirību, ka pa tīklu var nočiept
-
Aleksejs: "apgriežot" md5( $username . md5( $username . md5( $username . $password . $salt) . $password . $salt) . $password . $salt); tik un tā ar cilvēkaci būs saskatāms k-kas līdzīgs janiskjl231ljlk213k213kljtikaicilveks3244325 arī ja tur būs kas cits, kā tikaicilveks, no atlikušā "kazja-bazja" var ņemt dažāda garuma substingus un mēģināt kā paroles izeja: nesaprotami lietotājvārdi un paroles, kas paši izskatās pēc nohashotās vērtības, e.g. ?4545%,lh213jkhk21jk ļoti gari abi, lai rēķinātos ilgi jo ilgi un citi kriptogrāfijas wunderi
-
check this out! session_start(); if (!isset($_SESSION['hash'])) $_SESSION['hash']=''; if (empty($_SESSION['hash']) && (!empty($_POST['usr']) && !empty($_POST['pwd']))) { $q=mysql_query("UPDATE tabula SET pedeja_riciba=NOW(), apraksts='login' WHERE `login_name`='".mysql_escape_string($_POST['usr'])."' AND `pwd_hash`='".md5($_POST['pwd'])."'"); if (mysql_affected_rows($q)) $_SESSION['hash']=$_POST['usr']; } else //jau autorizējies echo 'Sveiki, '.$_SESSION['hash'];
-
un ko tu pārbaudi? MD5(CONCAT(passw,\''.mysql_real_escape_string($_SESSION['hash']).'\'))=\''.user_texc($_POST['passw'],33,255,1,1).'\'') vai md5 no ievadīta stringa sql pusē ir vienāds ar php pusē ievadīto? domāts ka tabulā id|user|hash 1|nick|sadasddsad0213798ysdiuasd8768 un tad ir "SELECT ... WHERE `nick`='".$_POST['nick']."' AND `hash`='".md5($_POST['passw'])."'" NB: $_SESSION['id']=$row[0]; $_SESSION['name']=$row[1]; vieglāk raxtīt list($_SESSION['id'],$_SESSION['name'])=$row; NNB: samazinām query skaitu, paroles pārbaude ar uzreizīgo NOW() ielikšanu un tad ir "UPDATE tabula SET pedac=NOW() WHERE `nick`='".$_POST['nick']."' AND `hash`='".md5($_POST['passw'])."'" un pārbaudām vai ir affected (mysql_num_rows vai kā tur bija, darbojos ar savu klasi, piemirsās standarta) MYSQLā var izmantot OR "UPDATE tabula SET pedac=NOW() WHERE (`nick`='".$_POST['nick']."' AND `hash`='".md5($_POST['passw'])."') OR (pārbaude no session hasha)" NNNB: protams, var katru reizi pārbaudīt sesijā saglabāto hashu pret mysql, bet vai pati hasha esamība sessijā neliecina par to, ko autentifikācija reiz notikusi? un sesijas norepleisot nav tik viegli NNNNB: if ($logerror=1) - ja mainīgam var piešķirt vērtību, ko var izdarīt vienmēr. tu gribēji == uz pirmā acu skatiena
-
if(!isset($_POST['name']) || $_POST['name']=='') vienāds ar if (empty($_POST['name'])) $_POST['passw']==md5($_SESSION['hash']) ? kas ir $_SESSION['hash']?
-
pārāk paranoidāli, neesmu redzējis nevienu efektīvu metodi md5 atkodēšanai (nb: kādam nav pāris simtu terabaitu?)
-
nav jau problēma dabūt pa brīvi...
-
nav ko gtrauzties, no php md5(strings) un arī SQLā MD5(strings), mehānisms ir vienāds, tas kas ir md5 iekš php jābūt tādam pašam iekš SQLa. starp serveri un php sūta šo te nokodēto hashu, lai kaut kur pa vidu ar vadiņu nevarētu pārtvert paroles tīrā veidā.
-
paroli glabāt iekš md5, pārbaudei iekš SQL komandas likt vērtību, ko noģenerē analoģiska funkcija iekš php mysql_query("SELECT id,name,passw FROM users WHERE name='".$_POST['name']."' && passw='".md5($_POST['passw']))."'"); of coss, jāskatās kas iekš $_POST, vajadzības gadījumā pielietot mysql_escape_string, addslashes un/vai htmlspecialchars()
-
nu, nez kā tur tiešām bija, bet reāli vienkārši failu ierakstīt un nochmodot varēja, bet no imagejpeg vairs nē. čestno, čestno
-
pagaidām labāk sasūtam pilnu kasti ar $
-
tas saucas EXIF dati un ir pieietams atsevišķā modulī
-
tad ir pamainījies, kad taisīju savu resize klasi lika kaut kādu nesaprotamu ūseri, ka pēc tam chmod nestrādāja skarbā pieredze joprojām liek ticēt ob :ph34r:
-
trūkstoša summa tiek uzrādīta pirmajā topica lapā NB: citādi jau bez poda, laacz un php .lv, lvnetā nekā interesanta nav/nebija ko palasīties, izņemot dažu blogu nerātnības
-
nu it kā to visu padarīšanu saturošam <td> IR uzlikts align="center"?
-
NB, ja esi uz linušiem, tad image* f-jas ģenerēja tādas savādas faila tiesības (vismaz agrāk) un bija labāk izmantot output_buffering pārtveršanu
-
ja saprotu -$hmr ir "how many results", t.i. $x ir tas, kura bilde iet pēc kārtas, tad $im = '<a href="./index.php?id=2&g='.$_REQUEST["g"].'π='.($z+($y*5)).'"><img src=".'.$GLOBALS["imglib"].'/'.$gal[$_REQUEST["g"]-1][1].'/'.$gal[$_REQUEST["g"]-1][3][$z+($y*5)].'" border="0"></a>'.($x%5==0?'<br />':''); NB: a varbūt tu grībēji tā? NNB: nenosauktu to, kas to ir uzrakstījis par guru
-
td iekš div, prātiņ~ tad kā tu tomēr gribi - viss iecentrēts, bet maksimāli 5 bildes rindā? <div align="center"> un te cikls, kas pēc katram 4 <img /> liek <br>, vai arī liek <div><img />x5</div> </div> es saku - uzzīmē ;)
-
ā, tu par SQL. Nez-nez, laikam tur neesmu izmantojis kādai atsijāšanai