Jump to content
php.lv forumi

par lapu inkludoshanu


andrisp

Recommended Posts

iedomaajos, ka daudzi taisa lapas, taa ka ir viena galvenaa lapa index.php un paareejaas satura lapas tiek iekļautas tai viducii, kas biezhi arii satur kautkaadus php kodus un citus briinumus. Un biezhi cilveekiem negribas, lai kaads caur savu browseri atvertu iekljaujamo lapu pa tiesho, kas var rezulteeties erroros, citos gljukos un iespeejams arii kaa security apdraudeejums.

 

iedomaajos, ka lai sho lietu atrisinaatu - galvenajai index.php (vai whatever kaadai) pashaa saakumaa nodefineejam kautkaadu mainiigo, bet peec tam katraa iekljaujamaa lapas saakumaa paarbaudaam vai pastaav taads mainiigais, ja ne tad paartraucam skriptu, vai arii taisam header("Location: index.php?x=konkreetaas_iekljaujamas_lapas_nosaukums"), vai veel labaak - abus divus.

 

Jautaajums ir taads - vai to var apiet un tomeer izpildiit shos skriptus vienus pashus vai tomeer tas ir droshi ?

 

PS. Ljoti atvainojos, ja kaadam ar sho, iespeejams, bezjeedziigo postu aizskaaru vinja profesionaalaas juutas.

Link to comment
Share on other sites

Normaals risinaajums. indexaa nodefineejam kaut kaadu mainiigo tipa in_index, bet paareejos paarbaudam, vai tas ir defineets.

Bet vispaar ir ljoti ieteicams taisiit taa, ka paareejo incluudojamo failu nosaukumi neparaadaas nekur querystringaa kaa x=include_me. Tas vienkaarshi uzreiz samazinaas kaardinaajumu kaadam rakstiit pa tiesho to include_me.php. Vai arii vismaz tad tos includojamos failus glabaat kaut kaadaa netriviaala nosaukuma folderii.

Link to comment
Share on other sites

nu bāc!

 

Kaut vai izdomā piemēram šādi index.php kaut kur sākumā nodefinē:

 

define('WE_ARE_IN_INDEX_PHP', 1);

 

Tālāk includējamos failos pašā sākumā ieraksti:

 

If (!defined('WE_ARE_IN_INDEX_PHP'))

die("FUCK OFF!");

Link to comment
Share on other sites

nu bāc!

 

Kaut vai izdomā piemēram šādi index.php kaut kur sākumā nodefinē:

 

define('WE_ARE_IN_INDEX_PHP', 1);

 

Tālāk includējamos failos pašā sākumā ieraksti:

 

If (!defined('WE_ARE_IN_INDEX_PHP'))

  die("FUCK OFF!");

21000[/snapback]

 

nu, Robi, vai tad es kautko citu saku ?

es jautaaju vai tas tieshaam ir 100% droshi (nu labi - 99%, jo 100% nekas nav.)

Link to comment
Share on other sites

neiesaku visu includot ieks viena index.php faila -saakumaa varbut smuki, bet kad projekts pieaug, nosauties vareesi, buus tev lieki 50 ifi ar to ko kuraa gadiijumaa includot.

 

labak taisi abstractu klasi un katru lapu/formu/moduli/sadalju extendee no abstraktaas klases, kuraa esi salicis tikai taas metodes kas vajadzigas gandriiz visaas lapās.

Edited by v3rb0
Link to comment
Share on other sites

Normaals risinaajums. indexaa nodefineejam kaut kaadu mainiigo tipa in_index, bet paareejos paarbaudam, vai tas ir defineets.

Bet vispaar ir ljoti ieteicams taisiit taa, ka paareejo incluudojamo failu nosaukumi neparaadaas nekur querystringaa kaa x=include_me. Tas vienkaarshi uzreiz samazinaas kaardinaajumu kaadam rakstiit pa tiesho to include_me.php. Vai arii vismaz tad tos includojamos failus glabaat kaut kaadaa netriviaala nosaukuma folderii.

20998[/snapback]

 

pilniigi piekriitu - ja lapaa ir noraadiits includojamais fails un tad arii 90% gadijumos

buus noraadiita direktorija kur tas glabaajas ;)

es patc 50% gadijumu pameegjinu palaist pa taisno ;)

10% gadijumu nostraadaa ka prieks :)

 

 

es daru shaadi

Index nodefineeju masiivu kur

rakstu (koda lasiishanas un editeeshanas vienkaarshiibai)

$masivs[0]=home.php;

........

$masiivs[n]=include_n.php

 

plus tam man ir uzrakstiita F-ja kurai padod no 0-n kas tieshi to GET parbauda

ja sajaa intervaala GET (POST) nav tad atgriez 1 elementu (0) tas patc ja

skaitlis ir aarpus intervaala - (viss tiek padots atgriezts kaa integer)

 

ja pat kaadam rodas kardinaajums pierakstiit ko pasham - rezult tiek atgrieztc

1 masiiva elements (kaa includojamais fails - contents)

 

P.S. visur caur GET censhos padot tikai INTEGER ;)

izvairoties no preciiziem nosaukumiem.........

Link to comment
Share on other sites

Nu cik nu 100% droši to es nezinu... Bet kā ta viš varēs to failu atvērt? Konstanti kaut kā iedefinēs tajā? Ja nav pieejas tam failam, tad viss - tas bloķē. Protams, ja noiet kaut kas greizi ar serveri, tad varbūt izdodas nolasīt kā parastu txt.

Link to comment
Share on other sites

Tak vienkāršāk - likt includējamos failus ārpus web direktorijas bez nekādiem papildus define/if. Tad gan netiks klāt nekādi (nu ja nu vienīgi iegūs akkountu uz servera).

21008[/snapback]

 

veel droshaak varbuut buutu likt gan aarpus web direktorijas, gan arii ielikt define/if, jo tad, liekas, nekaadaa gadijumaa nebuutu iespeejams ../../.., ja kautkas taads vispaar ir iespeejams..

Link to comment
Share on other sites

Tak tādā gadījumā nav nekādas jēgas no tā define. Ja jau ļaundaris piedabūs savu kodu izpildīt uz tava webservera, tad viņš vienkārši varēs nolasīt to ikludējamo failu kā failu (nevis php izlpildītu) apskatīties, kuras defines vajag uzlikt un uzliks tās, izpildot failu. Un kāda jēga pašam tagad mocīties ar tā definēm? <_<

Link to comment
Share on other sites

×
×
  • Create New...