Narix Posted December 22, 2011 Author Report Share Posted December 22, 2011 Pag... tu izņem ārā failu no publiskās direktorijas un tagad sūdzies par to, ka tas vairs nav publiski pieejams? Vispār jau loģiski. Sorry. Tur jau tā burvība, ka nevar izpildīt failus, kas ir ārpus tās mapes :) Tad izdomā, vai nu inklūdo index failā, vai liec tajā pašā publiskajā mapē. Tas, lapā ko veidoju noderēs, bet ne konkrētajam gadījumam. Tas ka failu iznjems no publiskaas direktorijas shoreiz, diemzheel, neliidzees. Aka - failu vajag izpildiit tikai tad, kad vinjsh ir izsaukts caur JS. Skaties ko rakstiiju augstaak... Tā kā ar JS esmu galīgi uz Jūs, tad iespējams kādi pieturpunkti aka vadlīnijas, kurām varētu pieķerties lai atrisinātu savu problēmu? Paldies. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted December 22, 2011 Report Share Posted December 22, 2011 Tā kā ar JS esmu galīgi uz Jūs, tad iespējams kādi pieturpunkti aka vadlīnijas, kurām varētu pieķerties lai atrisinātu savu problēmu? Paldies. OK saakumaa sapratu nedaudz savaadaak. Vienkaarshaakais ir jaa - skatiities hederi kaa jau 404 teica. Vari veel piemest klaat, ka dati.php atbalsta tikai POST vaicaajumus (tas gan nebuutu atbilstoshi iisti shoreiz jo nekas netiek mainiits). Veel izmantot tokenus kaa daGrevis saka (kaut kaads links ko pirmo atradu guuglee: http://shiflett.org/...quest-forgeries) Es gan gribeetu piebilst ka taa dariit nevajadzeetu. IMO tam linkam vajadzeetu buut pieejamam arii parastaa requestaa. Vienkaarshi paarbaudi vai tas naak no JS vai ne. Ja jaa, tad izdod datus tikai modaalajam logam. Preteejaa gadiijumaa vadi aaraa pilnu lapu. Vismaz atbalstiis cilveekus bez JS. btw - kas ir domaats ar modaalais logs? Ja tas ir popups tad dalja no taa kas tur mineets iisti nestraadaas. Quote Link to comment Share on other sites More sharing options...
404 Posted December 22, 2011 Report Share Posted December 22, 2011 Visas iespējamās vadlīnijas kas vien bija mūsu spēkos ir sarakstītas iepriekš.Nav jau īsti saprotams,kas no tā visa tev neder un kāpēc to nav iespējams sakombinēt.Respektīvi - fails ārpus web direktorijas (nepiekļūs neviens),headera pārbaude vai requests nāk no javascript + nočekot vai tas ir valīds json (ja vajag) + vai ir POST(ja vajag) un attiecīgi include ja viss ir ok. + piemudrīt kaut ko ar tokeniem ja gribas ūber variantu.Diez vai kaut ko inovatīvu vairs kāds varēs ieteikt,jo sāk izskatīties ka šis ir no sērijas "Gribu parādīt bildi ko neviens nevar saglabāt" Quote Link to comment Share on other sites More sharing options...
Narix Posted December 22, 2011 Author Report Share Posted December 22, 2011 (edited) btw - kas ir domaats ar modaalais logs? Ja tas ir popups tad dalja no taa kas tur mineets iisti nestraadaas. Modālais logs ir domāts šāds http://www.ericmmart...plemodal-demos/ Visas iespējamās vadlīnijas kas vien bija mūsu spēkos ir sarakstītas iepriekš.Nav jau īsti saprotams,kas no tā visa tev neder un kāpēc to nav iespējams sakombinēt.Respektīvi - fails ārpus web direktorijas (nepiekļūs neviens),headera pārbaude vai requests nāk no javascript + nočekot vai tas ir valīds json (ja vajag) + vai ir POST(ja vajag) un attiecīgi include ja viss ir ok. + piemudrīt kaut ko ar tokeniem ja gribas ūber variantu.Diez vai kaut ko inovatīvu vairs kāds varēs ieteikt,jo sāk izskatīties ka šis ir no sērijas "Gribu parādīt bildi ko neviens nevar saglabāt" Nav post, darbojas uz get, neko ūber krutu nevajag, vajag tikai to ko esmu uzrakstījis iepriekš. Neder un nedarbojas tapēc ka description.php fails ir atsevišķs no visiem pārējiem - tajā tiek izpildīta atsevišķa konekcijas datubāzei, lietots savs .css, vienīgais, kas tam tiek padots ir GET mainīgie. Fails atrodas vienā direktorijā ar index.php un tiek izmantots tikai lai ielādētu info par konkētu produktu. <script type="text/javascript"> $(function(){ $("a.basic").click(function(){ var url = $(this).attr("href"); $("#basic").load(url); $("#basic").show(); return false; }); }); </script> Augstāk redzamais javascript tiek izmantots lai padotu datus failam description.php no linka. Links: <a class='basic' href=\"description.php?l=$valid&c=".$prod['cat_id']."&p=".$prod['id']."\"><img src='".$prod['thumb']."' alt='' /></a> Tālāk jau pašā description.php failā darbojās if(isset($_GET['p']) && isset($_GET['c']) && isset($_GET['l']) ) { $id=$_GET['p']; $produkts = mysql_query("SELECT * FROM products where id=".$id." ") or die("442324"); ut.t.t.. Nezinu kā lai vēl paskaidro... Edited December 22, 2011 by Narix Quote Link to comment Share on other sites More sharing options...
404 Posted December 22, 2011 Report Share Posted December 22, 2011 (edited) Iespējams ka viens otru nesaprotam bet man vislielākā mīkla ir saprast kas tev traucē šajā rindiņā: if(isset($_GET['p']) && isset($_GET['c']) && isset($_GET['l']) pievienot vēl pārbaudi uz js headeri un neizvadīt neko ja nav padots,pieņemot ka tas nav js requests.Vismaz bija tāds iespaids ka tieši to gribēji panākt.Tu gribi vispār neizpildīt description.php ? (kas savukārt atkal novestu pie jautājuma,"Kāpēc,ja reiz tur tāpat notiek visas pārbaudes?") Edited December 22, 2011 by 404 Quote Link to comment Share on other sites More sharing options...
daGrevis Posted December 22, 2011 Report Share Posted December 22, 2011 Starp citu, var isset(x, y, z), lai nav jāraksta - isset(x) && isset(y) && isset(z). Quote Link to comment Share on other sites More sharing options...
Narix Posted December 22, 2011 Author Report Share Posted December 22, 2011 (edited) Nedaudz atkāpšos - kādi komentāri par šādu risinājumu $refering=parse_url($_SERVER['HTTP_REFERER']); if($refering['host']==$_SERVER['HTTP_HOST']){ izvada datus ja palaists no man vajadziga url } else { neko neizvada } BTW, šis strādā. Cik drošs šis variants? Edited December 22, 2011 by Narix Quote Link to comment Share on other sites More sharing options...
404 Posted December 22, 2011 Report Share Posted December 22, 2011 Identisks ar to atšķirību ka pārbauda citu headeri :D Kam nopietni vajadzēs tas nosimulēs visu ko vien vajadzēs.Kas nemācēs,tas arī pa taisno failu nevērs.Tā ka drošība ir visai relatīvs jēdziens :) Quote Link to comment Share on other sites More sharing options...
daGrevis Posted December 22, 2011 Report Share Posted December 22, 2011 Tev patiešām vajag aizliegt atvērt to lapu **tā**... vai arī nebūtu labi to tā atvērt (kaut vai no smukuma viedokļa)? Quote Link to comment Share on other sites More sharing options...
briedis Posted December 22, 2011 Report Share Posted December 22, 2011 (edited) Ieraugot šito sašķebina - $id=$_GET['p']; $produkts = mysql_query("SELECT * FROM products where id=".$id." ") Neesi dzirdējis par tādām SQL injekcijām? Edited December 22, 2011 by briedis Quote Link to comment Share on other sites More sharing options...
Narix Posted December 22, 2011 Author Report Share Posted December 22, 2011 Ieraugot šito sašķebina - $id=$_GET['p']; $produkts = mysql_query("SELECT * FROM products where id=".$id." ") Neesi dzirdējis par tādām SQL injekcijām? ir ir dzirdēts, šis kods nav domāts publicēšanai, zinu ka nav labais stils tā rakstīt, ka jādara viss uzreiz u.t.t, bet pirms publicēšanas kods tiks pārrakstīts no security viedokļa. Quote Link to comment Share on other sites More sharing options...
briedis Posted December 22, 2011 Report Share Posted December 22, 2011 ir ir dzirdēts, šis kods nav domāts publicēšanai, zinu ka nav labais stils tā rakstīt, ka jādara viss uzreiz u.t.t, bet pirms publicēšanas kods tiks pārrakstīts no security viedokļa. Tas nav labs attaisnojums. Labāk rakstīt uzreiz, nekā aizmirst vēlāk... Quote Link to comment Share on other sites More sharing options...
Narix Posted December 23, 2011 Author Report Share Posted December 23, 2011 (edited) Tas nav labs attaisnojums. Labāk rakstīt uzreiz, nekā aizmirst vēlāk... Anyway, kād ieteikums kā droši selectot datus pēc id? izņemot mysql_real_escape_string un to kā pārbauda vai id ir cipars Edited December 23, 2011 by Narix Quote Link to comment Share on other sites More sharing options...
briedis Posted December 23, 2011 Report Share Posted December 23, 2011 Ja ID, tad pietiek ar cast'ingu uz (int) $dati = mysql_query("SELECT * FROM users WHERE id = " . (int)$id); Ja virkne var būt jebkas, tad jālieto mysql_real_escape_string VIENMĒR, nevar būt nekādu atrunu nelietot. Jo tev ir jābūt tādai nostājai, ka JEBKĀDI dati, kas nāk no lietotāja ir potenciāls ļaunums ($_GET, $_POST, $_COOKIES, u.c.) Vispār darbam ar db ieteiktu lietot kādu abstrackijas līmeni, jeb tā saucamo ORM. Pats personīgi lietoju un slavēju RedBeanPHP - http://redbeanphp.com/manual/about Ja saņemsies un apgūsi - nenožēlosi :) Quote Link to comment Share on other sites More sharing options...
Narix Posted December 23, 2011 Author Report Share Posted December 23, 2011 Teiksim tā, ir jāapgūst vēl daudz pamatlietu, pēc tam ir daudzas lietas ko vēlētos vēl izpētīt, Tavu linku pievienoju skatāmo lietu sarakstam. Paldies. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.