WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Länka till en frame med php? (https://www.wn.se/forum/showthread.php?t=2157)

AlternativePhotography 2004-04-29 01:02

Hej!
Jag har en hobby sajt som jag försöker sätta upp en shop på.
Jag vill länka från en sida med en produkt på:
http://www.alternativephotography.co...test_link.html

Länken ser ut så här:
test link
Till en sida där film_timezero2.html filen visas i framen som heter 'mainShop'
Den här sidan:
http://www.alternativephotography.co...op_product.php
Koden ser ut så här:
<?php echo $content; ?>
Här är hela framesettet:
-----------
<frameset rows="178,*,35" cols="790" frameborder="no" framespacing="0">
<frame src="../common/aphead_shop.html" name="apheadShop" scrolling="NO" marginwidth="0" marginheight="0" noresize>
<frameset cols="180,610,*" frameborder="no" framespacing="0">
<frame src="../common/left_shop.html" name="leftnavShop" scrolling="NO" marginwidth="0" marginheight="0" noresize>
<frame src="<?php echo $content; ?>" name="mainShop" scrolling=auto marginwidth="0" marginheight="0" noresize>
<frame src="../common/blank.html" name="empty" scrolling="NO" marginwidth="0" marginheight="0" noresize>
</frameset>
<frame src="../common/apfoot_shop.html" name="apfootShop" scrolling="NO" marginwidth="0" marginheight="0" frameborder="no" noresize>
</frameset>

Per 2004-04-29 01:06

Spontan gissning är att register_globals är satt till off

Pröva: <? echo $_GET['content']; ?>

Sen kan man diskutera huruvida du öht ska ha den typen av koden då den är sårbara för cross-site scripting attacker. :unsure:

AlternativePhotography 2004-04-29 01:20

Funkar alldeles utmärkt! Tackar ödmjukast! :lol:
Vad menar du förresten med sårbar för hackers? Skulle det bli bättre om jag ber min server-master sätta på 'register_global'?
Malin

Per 2004-04-29 09:42

http://www.alternativephotography.co...www.google.com

Jag hade fel i mitt tidigare inlägg, det är ingen cross-site-scripting sårbarhet men det är ändå en olägenhet, som kanske borde avhjälpas.

Edit: Tog bort länken så detta exempel inte dyker upp i sökmotorerna.
WN

AlternativePhotography 2004-04-29 12:47

Ok... och hur gör man det?
Malin

AlternativePhotography 2004-05-04 23:08

Nej, du hade helt rätt!!! Min sajt har blivit 'hijacked' av en Brasiliansk gamesite som gör precis som du visade med 'google' i mitten (deras innehåll där du skrivit google)... går det att avhjälpa på något sätt??? Känns inte alls bra!
Malin

Per 2004-05-04 23:30

Citat:

Originally posted by AlternativePhotography@May 4 2004, 20:08
Nej, du hade helt rätt!!! Min sajt har blivit 'hijacked' av en Brasiliansk gamesite som gör precis som du visade med 'google' i mitten (deras innehåll där du skrivit google)... går det att avhjälpa på något sätt??? Känns inte alls bra!
Malin

Du måste göra någon form av kontroll av värdet på $_GET['content'], en av grundreglerna vid webbprogrammering är att aldrig lita på data som på något sätt kan manipuleras av användaren.

I ditt fall skulle man exempelvis kunna göra något i stil med:

Kod:

switch ($_GET['content']) {
  case 'tillåtensida1.html':
  case 'tillåtensida2.html':
  case 'tillåtensida3.html':
    $content = $_GET['content'];
    break;
  default:
    $content = 'forbjuden_sida.html';
}

Och sedan använda sig av $content som då kan betecknas som "säker".

zoran 2004-07-08 08:25

Citat:

Originally posted by AlternativePhotography@Apr 29 2004, 01:20
Funkar alldeles utmärkt! Tackar ödmjukast! :lol:
Vad menar du förresten med sårbar för hackers? Skulle det bli bättre om jag ber min server-master sätta på 'register_global'?
Malin

Register_globals ska var OFF, register_globals ska vara OFF, se så, upprepa 1000 ggr.

Register_globals är ett otyg som gör ditt jobb till ett helvete om du ska använda dig av authenticering och sessionshantering pga. säkerhetsrisker.

Exempel: Om jag, för att markera att en användare är inloggad sätter $_SESSION['loggedin'] = "true"; med register_globals off, så kan inte "surfaren" komma åt den variabeln för att sätta den och gå förbi authenticeringen.

Använder jag register_globals och inte använder $_SESSION[''], och varje $_POST['foo'] eller $_GET['foo'] blir istället $foo automatiskt, så kan användaren göra helt enkelt http://www.example.com/mittscript.php?loggedin=true för att sätta min autenticeringsvariabel.

Så ditt webbhotell gör rätt. Personligen skulle jag ALDRIG anlita någon med register_globals on.

Du begår ett annat misstag. Din input från användaren kontrolleras inte alls. Det är en ajabaja nr 2. Aldrig aldrig ska få en användare mata in något i ditt skript utan att du har dubbelkollat ifall det är godkänt att använda det.

/Zoran

orreborre 2004-07-08 08:47

Citat:

Originally posted by zoran@Jul 8 2004, 08:25
Exempel: Om jag, för att markera att en användare är inloggad sätter $_SESSION['loggedin'] = "true"; med register_globals off, så kan inte "surfaren" komma åt den variabeln för att sätta den och gå förbi authenticeringen.

Använder jag register_globals och inte använder $_SESSION[''], och varje $_POST['foo'] eller $_GET['foo'] blir istället $foo automatiskt, så kan användaren göra helt enkelt http://www.example.com/mittscript.php?loggedin=true för att sätta min autenticeringsvariabel.

/Zoran

Jag säger inte emot dig, jag håller med om att globals ska vara off, men riktigt så enkelt är det inte för användarna.
Hur ska en användare veta att det är just variabeln "loggedin" som ska sättas till true?
Vad jag menar är att sessionvaribaler är gömda och att man inte kan få reda på variabelnamnen utan måste gissa, så vitt jag vet i alla fall.

zoran 2004-07-08 15:17

Citat:

Ursprungligen postat av orreborre
Citat:

Ursprungligen postat av zoran
Exempel: Om jag, för att markera att en användare är inloggad sätter $_SESSION['loggedin'] = "true"; med register_globals off, så kan inte "surfaren" komma åt den variabeln för att sätta den och gå förbi authenticeringen.

Använder jag register_globals och inte använder $_SESSION[''], och varje $_POST['foo'] eller $_GET['foo'] blir istället $foo automatiskt, så kan användaren göra helt enkelt http://www.example.com/mittscript.php?loggedin=true för att sätta min autenticeringsvariabel.

/Zoran

Jag säger inte emot dig, jag håller med om att globals ska vara off, men riktigt så enkelt är det inte för användarna.
Hur ska en användare veta att det är just variabeln "loggedin" som ska sättas till true?
Vad jag menar är att sessionvaribaler är gömda och att man inte kan få reda på variabelnamnen utan måste gissa, så vitt jag vet i alla fall.

Nja, om din ända säkerhet är att räkna med att användaren "inte" ska gissa sig till ditt variabelnamn så handlar det om "security by obscurity", vilket är i princip det sämsta möjliga sätt att skydda sig. Då tvingas du att använda variabelnamn som inte är lättgissade, vilket försvårar ditt jobb också.

Ett annat problem är att du aldrig kan släppa det systemet "publikt", eftersom "folket" kan då se vilka variabler du använder och kan på så sätt attackera alla de som använder ditt system.

Personligen tycker jag att det är KNÖLIGARE att skriva php-kod med register globals. Man kan inte klart urskilja POST från GET-variabler.

/Zoran


Alla tider är GMT +2. Klockan är nu 06:37.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson