Jump to content
php.lv forumi

don't execute directly


Narix

Recommended Posts

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.

Link to comment
Share on other sites

  • Replies 30
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

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 by 404
Link to comment
Share on other sites

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 by Narix
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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ē.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...