test2 Posted March 15, 2008 Report Share Posted March 15, 2008 (edited) Tātad nesen ievadzējās tādu kodu, nē kods kad nebūs tas pareizākais skaidrojums man vajag ideju, piemēram man ir līgums ar kkādu sms serveri, cilvēks pasūta sms kā pēc defulta viņam atnāk kods un tad sākas mans skripts piemēram viņš izvēlas progu, kuru lejupielādēs, un tad nu sākam, piemēram, ja kods sakrīt (ko pircējis saņēma caur sms), viņam izlec kkāds logs un viņš var lejupielādēt programu, bet man vajag ko tādu, kas pasargātu to noteikto progu, kādam ir kādas idejas? sākumā ideja pavisam prasta saitaisīt kkādus desmit dirus un tad desmitajā iebāzst to progu "/dblassaaf/vdgasdgd/gsagds/asgsg/asgas/agds/prga.exe" apmr šādi, tas būtu pietiekami droši? Manuprāt kkāds ļēvais variants takā palīdziet! ā nupatās radās ideja, nevar tā piemēram failus izņemt to webservera main dira, respektīvi www un ielikt iepriekšējā public_html, tad jūzeris var viņām tikt klāt? Edited March 15, 2008 by test2 Link to comment Share on other sites More sharing options...
Vebers Posted March 15, 2008 Report Share Posted March 15, 2008 (edited) Atkarīgs kā to realizē ja tev ir <a href="/dblassaaf/vdgasdgd/gsagds/asgsg/asgas/agds/prga.exe">download</a>, tad drošības tur pilnīgi nekādas :) iesaku uztaisīt tādu kā download menedžeri, vispirms ievada kodu, ja kods sakrīt tad parādam pogu kur redzama download poga ar linku: <a href="download.php?fileId=5123&smsCode=ham3r">download</a>. tad download php nosaki vēlreiz pārbaudi vai kods ir pareizs, ja nav tad iedod kādu smagu video lai zin kā hakot :) bet ja ir tad pēc pēc faila id sameklē datubāzē attiecīgā faila mime/type un reālo atrašanās vietu, izsūti attiecīgos Content-type headerus un location pasniedz failu. upd: netiks klāt! Var caurs ftp or smth... Edited March 15, 2008 by Vebers Link to comment Share on other sites More sharing options...
test2 Posted March 15, 2008 Author Report Share Posted March 15, 2008 paldies, bet izsaukot download logu viņam nevar kkur apstīties linku uz failu? Nēsmu īsti interesējies tāpēc arī nezinu! Link to comment Share on other sites More sharing options...
Vebers Posted March 15, 2008 Report Share Posted March 15, 2008 Neizsauc to download logu. Bet vienkārši tam download.php failā ja kods ir pareizs izsūti headerus. Content-type: application/pdf Location: http://files.mysite.com/readers/pdf/foxit.exe Ar headeriem varu kļūdīties bet domai vaidzētu būt skaidrai Link to comment Share on other sites More sharing options...
test2 Posted March 15, 2008 Author Report Share Posted March 15, 2008 (edited) tā ok skaidrs, man piemēram, pašlaik uz testa skripta ir šādi: if($kods = $_POST['code']) { header("Location: $row['link']"); } es domāju tieši tas header, to koda pārbaudi vnk šitādu uzliku nepievērsiet uzmanību tas ir pietiekami droši? Edited March 15, 2008 by test2 Link to comment Share on other sites More sharing options...
777 Posted March 15, 2008 Report Share Posted March 15, 2008 virtual directories Link to comment Share on other sites More sharing options...
Vebers Posted March 15, 2008 Report Share Posted March 15, 2008 Šādi tev redirektēs visu pārlūku uz to failu (idejiski addressbarā vaidzētu parādīties pilnajai faila adresei..) Link to comment Share on other sites More sharing options...
test2 Posted March 15, 2008 Author Report Share Posted March 15, 2008 neko nesaprotu, iedod lūdzu ejošu piemēru piemēram ja fails kuru vajag lejupielādēt ir $fails, savkārt tas ir definēts ar $fails = $_GET['file']; , kur $_GET['file'] piemēram ir http://test.lv/proga.exe Link to comment Share on other sites More sharing options...
Vebers Posted March 15, 2008 Report Share Posted March 15, 2008 Ir stulbi likt pilno faila adresi ieksh $_GET, jo tādā veidā jau uzreiz parādi kur ir pats fails. Tādā veidā nekad neatturēs failu lejupielādēt lietotājam otru reizi vai iedot pilno linku draugiem, kuri bezmaksas lejupielādēs failus un tava kompānija / firma cietīs zaudējumus :) ieksh $_GET['file'] vari norādīt tikai faila ID (attiecīgi to kas glabājās datubāzē kā primary ID! :) Link to comment Share on other sites More sharing options...
test2 Posted March 15, 2008 Author Report Share Posted March 15, 2008 nu jā es tač to apzinos beidz piesities pie tik uber loģiskiem šitiem, es tev iedevu piemēru lai parādi kā to faila downlādi izsaukt, lai nevar piefiksēt linku... Link to comment Share on other sites More sharing options...
Vebers Posted March 15, 2008 Report Share Posted March 15, 2008 Nu imho es jau tev visu idejiski esmu priekšā uzrakstījis un pat ļoti saprotami!! paskaties vēlreiz 4.postu. Tie ūberļoģiskie šiti nemaz neizskatās ka būtu loģiski priekš tevis. Piemers ja links ir download.php?id=124&code=1254fasf2 $r = mysql_query("select code from sms_codes where code = '".mysql_real_escape_string($_GET['code'])." and used <> 1'"); $res = mysql_fetch_assoc($r); if(!empty($res)) { $q = mysql_query("select location, mime_type from files where id = ".intval($_GET['id'])); $data = mysql_fetch_assoc($q); mysql_query("update sms_codes set used = 1 where code = ".mysql_real_escape_string($_GET['code'])); header("Content-type: ".$data['mime_type']); header("Location: ".$data['location']); } else { echo 'code already used'; } Tiesa gan ar headeriemk varu kļūdīties, bet doma skaidra. un ja ne tad paskaties kādu download menedžera skriptos, tur 100% atradīsi to ko meklē. Link to comment Share on other sites More sharing options...
Roze Posted March 16, 2008 Report Share Posted March 16, 2008 Header("Location: ..."); ir parasts http headeris 302 (REDIRECT) kas padod Location parametru līdz ar to vienkārši redzams... Attiecīgi ja netiek veiktas nekādas manipulācijas (fails dzēsts/movots utt) un fails atrodas webroota var neatkarīgi vilkt kaut vai 100 reizes un ir pofig ka kaut kāds skrips ir updeitojis SQL tabulu, jo "header("Location: ".$data['location']);" jāatgriež fiziska faila lokacija.. Taču iespējams taisīt savādāk: 1. Ar to pašu php nevis taisīt header() bet gan ar readfile() ( http://lv.php.net/manual/en/function.readfile.php ) vai file_get_contents() pa taisno gāzt no php (fiziski fails var atrasties ārpus webroota).. 2. Lai nebūtu jātransfērē fails ar php (kas pēc idejas ir diezgan resursprasīgi) praktiski visiem webserveriem ir tā saucāma X-Sendfile fīča - kur ar php iespējams veikt kaut kāda veida autorizāciju / pārbaudi taču pašu failu sendot ar webserveri sūtīšanas mehānismu: Apache http://tn123.ath.cx/mod_xsendfile/ lighttpd un nginx sendfile ir iebūvēts.. Lightam un nginxam ir vēl pāris iespējas aka mod_trigger_b4_dl http://trac.lighttpd.net/trac/wiki/Docs%3A...rBeforeDownload vai mod_secure_download bet nu tākā taisies ar biznesu nodarboties nebūtu tākā korekti visu uz paplātes pasniegt :) Link to comment Share on other sites More sharing options...
test2 Posted March 16, 2008 Author Report Share Posted March 16, 2008 a kā ir ar to readfile, zipu jau neievietosi vaine? Link to comment Share on other sites More sharing options...
andrisp Posted March 16, 2008 Report Share Posted March 16, 2008 Jebkuru failu varēsi ielasīt. Link to comment Share on other sites More sharing options...
test2 Posted March 16, 2008 Author Report Share Posted March 16, 2008 nu jā ielasīt jau jā, bet piemēram download logdziņu jau neizsauksi.. Link to comment Share on other sites More sharing options...
Recommended Posts