Jump to content
php.lv forumi

$_GET[], include(); hmmm...


sandis_m

Recommended Posts

Vai kaimiņu hakeris Jurčiks varētu izdarīt kaut ko ļaunu, ja mans kods izskatās apmēram šāds:

 

<?php
if(isset($_GET["cms"])){
include("lapas/".$_GET["cms"].".php");	
}else{
include("lapas/starts.php");
}
?>

 

Respektīvi, iebāzt tajā $_GET["cms"] kaut ko very very evil. ?

 

Saprotu, nav jau SQL, bet, bet...

Edited by who_i_am
Link to comment
Share on other sites

Iebāzt jau var, protams.

Tikai jēgas nav lielas(jau pirmajā piegājienā rāda URL vienalga un mape /lapas ir zināma), vieglāk jau ir nosūtīt requestu pa tiešo uz failu. Lai gan, kad meklē caurumus, arī tāda nianse var būt no svara.

Edited by mounkuls
Link to comment
Share on other sites

Kāpēc gan neizmantot veco labo switch?

 

Switch nesmuks, masīvi FTW!

 

<?
$mapping = array(
"profile",
"users",
"random_shit",
"default",
);

$cmd = isset($_GET['cmd']) && in_array($cmd, $mapping) ? $_GET['cmd'] : "default";

include("files/$cmd.php");

Link to comment
Share on other sites

Switch nesmuks, masīvi FTW!

 

<?
$mapping = array(
"profile",
"users",
"random_shit",
"default",
);

$cmd = isset($_GET['cmd']) && in_array($cmd, $mapping) ? $_GET['cmd'] : "default";

include("files/$cmd.php");

Arī var, bet ja es gribu ielikt random_shit vietā funkciju kādu nevis php.php? :D Netak, ir pa tēmu variants, tikai piesienos :D jo aiz "default" ir smuks komats! :D

Link to comment
Share on other sites

Vai kaimiņu hakeris Jurčiks varētu izdarīt kaut ko ļaunu, ja mans kods izskatās apmēram šāds:

 

<?php
if(isset($_GET["cms"])){
include("lapas/".$_GET["cms"].".php");	
}else{
include("lapas/starts.php");
}
?>

 

Respektīvi, iebāzt tajā $_GET["cms"] kaut ko very very evil. ?

 

Saprotu, nav jau SQL, bet, bet...

 

$GET['cms']=> '../tavas_sql_paroles_un_jebkursh_cits_fails.php'

 

Gudri pačakarējot var atrast VOC, jeb variable output collision. Piemērs:

 

Fails include 1:

$var = 1;

 

Fails include 2 (caur $_GET):

$var = 2;

 

Fails iekš kura notiek include 2:

///Teorētiski vajadzētu atgriezt 1. Kolīzijas gadījumā atgriezīs 2.
echo $var;

Šāda kļūda bieži sastopama iesācēju/"kruto", kas domā, ka viņu krutums atspēko koda kļūdas, scenārijos.

 

Vēl jo vairāk, var izdarīt šādi:

$GET['cms']=> '../admin/admin_lapa_kuraa_izvadas_sql/jebkadas_paroles.php'

 

Arī itkā, neviens taču neveido setup formas ar echo $manaparole, bet ja nu gadās kāds ģēnijs? :} Tādā gadījumā ir pilnīgs tavas lapas own.

 

Brieža variants ir pieņemams. Iesaku izmantot.

Edited by F3llony
Link to comment
Share on other sites

Vēl var piebilst, ka, ja to failu ir daudz un ļoti negribas masīvu veidot ar rokām, var ielasīt masīvā mapes lapas saturu, un tad sanāk nočekot, fails ir masīvā, tad var droši rādīt. Pieņemot, ka mapē lapas ir visi fiali, ko drīkst inkludot.

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