Jump to content
php.lv forumi

don't execute directly


Narix

Recommended Posts

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.

Link to comment
Share on other sites

  • Replies 30
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

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.

Link to comment
Share on other sites

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"

Link to comment
Share on other sites

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

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

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

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.

Link to comment
Share on other sites

 

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

Link to comment
Share on other sites

 

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

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 :)

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