Narix Posted December 21, 2011 Report Share Posted December 21, 2011 Sveiki. Lieta sekojoša, nevaru izlauzīt galvu elementārai lietai. Pieņemsim ka struktūra ir šāda: Ir index.php, kurā tie inklūdots fails katalogs.php, savukārt no kataloga tiek izsaukts cits, pavisam tukšs dati.php fails kurš savāc mainīgos no katalogs.php izmantojot GET. Šis te tukšais fails dati.php tiek atvērts modālajā logā. Problēma ir sekojoša - kā lai novērš faila izpildīšanu pa tiešo, respektīvi, neļaut lietotājam atvērt failu dati.php?sadala=1&l=lv pa tiešo, bet atļaut atvērt saiti izmantojot modālo logu. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted December 21, 2011 Report Share Posted December 21, 2011 Takš tikko prasīji to pašu! http://php.lv/f/topic/19878-nelaut-izpildit-pieprasijumus-php-faila/ Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted December 21, 2011 Report Share Posted December 21, 2011 Visvienkāršākais: inklūdējamos failus turi ārpus webam pieejamās direktorijas. Ja weba sakne ir te: /var/www/superlapa/ tad turi: /var/www/ievietojumi/ un attiecīgi failā, kas atrodas: /var/www/superlapa/ include('../ievietojumi/ievietojamais.php'); Quote Link to comment Share on other sites More sharing options...
404 Posted December 21, 2011 Report Share Posted December 21, 2011 (edited) Es darītu šādi: Failā kurā tu inkludē to data php: if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { require 'dati.php'; // Izvadam datus } else { echo 'hAx0rz rulzzz'; } Idejas pamatā ir HTTP_X_REQUESTED_WITH headeris ko jQuery un līdzīgie frameworki sūta katrā requestā.Šamais gan varot nestrādāt visos serveros bet it kā neesmu sastapies ka neiet. Edited December 21, 2011 by 404 Quote Link to comment Share on other sites More sharing options...
mad182 Posted December 21, 2011 Report Share Posted December 21, 2011 To var apiet 1 minūtē. Bet nu viss atkarīgs no vajadzības. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted December 21, 2011 Report Share Posted December 21, 2011 Visam kam nav jaabuut publiski pieejamam (pa tiesho - vai nee) nav jaatrodas publiski pieejamaa mapee. (punkts) Quote Link to comment Share on other sites More sharing options...
Narix Posted December 21, 2011 Author Report Share Posted December 21, 2011 (edited) Tur jau tā lieta, ka failā dati.php nekas netiek inklūdots, tajā tiek savākti dati caur get un tālāk izpildīti pieprasījumi datubāzē, tas fails nav sasaistīts ne ar vienu citu. Vienkārši failā katalogs.php tiek norādīts links dati.php. echo " <div class='thumb'> <a class='basic' href=\"description.php?l=$valid&c=".$prod['cat_id']."&p=".$prod['id']."\"> <img src='".$prod['thumb']."' alt='' /> </a>"; basic klase izsauc modal logu, kurāielādē saturu no description.php. description.php "dzīvo savu dzīvi". Tas ko nemāku izdarīt, ir neļaut pa taisno atvērt <a href="description.php?l=lv&c=2&p=3">link</a> Respektīvi, uzspiežot uz šādu linku user ir jāpasūta @#$"@R, ja vien šī saite netiek atvērta cau modālo logu. Visam kam nav jaabuut publiski pieejamam (pa tiesho - vai nee) nav jaatrodas publiski pieejamaa mapee. (punkts) Kaa to realizeet testa noluukos uz xampp??? Edited December 21, 2011 by Narix Quote Link to comment Share on other sites More sharing options...
daGrevis Posted December 21, 2011 Report Share Posted December 21, 2011 Tokens? Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted December 21, 2011 Report Share Posted December 21, 2011 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/articles/cross-site-request-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. Quote Link to comment Share on other sites More sharing options...
briedis Posted December 21, 2011 Report Share Posted December 21, 2011 Kaa to realizeet testa noluukos uz xampp??? Tev ir projekta mape, kur tu turi visus failus. /web/projekts/ Tev ir publiskā mape, kas ir nodefinēta kā doc root vai kā viņa tur saucas, tajā tu liec tikai publiski pieejamos failus (index.php, css, js, bildes utt) /web/projets/www/ Izmaini ceļu uz publisko mapi. Kur tas jādara - pagūglē (apache htdocs) Quote Link to comment Share on other sites More sharing options...
Kemito Posted December 21, 2011 Report Share Posted December 21, 2011 Es pievienojos tiem, kas uzskata par root direktorijas maiņu uz /public_data Quote Link to comment Share on other sites More sharing options...
Narix Posted December 22, 2011 Author Report Share Posted December 22, 2011 Par inklūdu sapratu. Nesapratu kādā veidā nodrošināt faila izpildi ārpus public direktorijas? Sodienj izmēģināju, inklūdot iznāk, bet kad mēģina izpildīt failu ārpus public dierektorijas tad nekas nenotiek. Respektīvi uz servera mape var/www/domens.lv Domens.lv ir publiska direktorij, izveidojot apakšmapi var/www/include/ varu inklūdot failus - viss strādā, bet ja mēģinu pakāpties augšā un palaist kāduy, piem;eram test.php failu - nekas nestrādā. Kā rīkoties? Quote Link to comment Share on other sites More sharing options...
daGrevis Posted December 22, 2011 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? Quote Link to comment Share on other sites More sharing options...
briedis Posted December 22, 2011 Report Share Posted December 22, 2011 Domens.lv ir publiska direktorij, izveidojot apakšmapi var/www/include/ varu inklūdot failus - viss strādā, bet ja mēģinu pakāpties augšā un palaist kāduy, piem;eram test.php failu - nekas nestrādā. Kā rīkoties? 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ē. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted December 22, 2011 Report Share Posted December 22, 2011 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... 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.