/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
$_REQUEST
Fra : Kim Emax


Dato : 15-07-03 20:32

Hey

Sidder og er ved at portere gammel kode, så det spiller med register_globals
off så mens jeg tester løs falder jeg over noget jeg lige vil høre om jeg
har misforstået:

if($_REQUEST[action]) {
print "action=".$_REQUEST[action];
}
else {
print '<a href="./?action=mustafa">link</A>'
}

Hvis jeg angivet linket selv i adresse linien, f.eks.
domain.dk/?action=hest - så printes hest, men er det ikke lige netop det,
der er den øgede sikkerhed? At en væmmelig bruger kan indtaste sine egne
data eller har jeg misset noget?

--
Take Care
Kim Emax - Freelance programmør
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



 
 
Michael Rasmussen (15-07-2003)
Kommentar
Fra : Michael Rasmussen


Dato : 15-07-03 23:34

On Tue, 15 Jul 2003 21:32:00 +0200, Kim Emax wrote:

> Hvis jeg angivet linket selv i adresse linien, f.eks.
> domain.dk/?action=hest - så printes hest, men er det ikke lige netop det,
> der er den øgede sikkerhed? At en væmmelig bruger kan indtaste sine egne
> data eller har jeg misset noget?
Til dels $_REQUEST indeholder både get og post. Hvis du vil være sikker
på, at skumle personer ikke kan ændre indhold, bør du kun benytte post
($_POST). Get bør efter min mening kun benyttes til sessionsID, mens alle
andre input der skal medsendes, bør gemmes i en sessionsvariabel. F.eks.

---------------------------------------
/var/www/html/app/index.php
---------------------------------------
session_start();
session_register("userinput");
$userinput = array();
$userinput["var1"] = "bla";
$userinput["var2"] = "blabla";
---------------------------------------
/var/www/html/app/side2.php
---------------------------------------
session_start();
print "Indhold af session:";
print "<p>".$userinput['var1']."<br />".$userinput['var2']."</p>";
--
Hilsen/Sincerely, Michael Rasmussen

En windows admin er en person, for hvem den største bedrift er, at
lave konfiguration af serveren med trial and error via en gui.


hoaX (15-07-2003)
Kommentar
Fra : hoaX


Dato : 15-07-03 23:46

> print "Indhold af session:";
> print "<p>".$userinput['var1']."<br />".$userinput['var2']."</p>";

Hvorfor bruger I print og ikke echo?

- hoaX
----------------------------------------
hoaX's website-->
www.hoaxmusic.dk



Jesper Brunholm (16-07-2003)
Kommentar
Fra : Jesper Brunholm


Dato : 16-07-03 11:11

hoaX wrote:

>>print "Indhold af session:";
>>print "<p>".$userinput['var1']."<br />".$userinput['var2']."</p>";
>
>
> Hvorfor bruger I print og ikke echo?

sikkert for sjov - de to ting gør nøjagtigt det samme. Hvad folk bruger
afhænger som regel af hvad de først har fået præsenteret, eller hvad de
kan huske fordi de bruger en funktion med samme navn i et andet sprog.

mvh

Jesper Brunholm

--
Phønix - dansk folk-musik i front - <http://www.phonixfolk.dk/>
H.C. Andersen-Centret med nyt design: <http://www.andersen.sdu.dk/>


Martin Sveegaard (16-07-2003)
Kommentar
Fra : Martin Sveegaard


Dato : 16-07-03 18:53

On Wed, 16 Jul 2003 12:11:20 +0200, Jesper Brunholm
<nospam@brunholm-scharff.dk> wrote:

>> Hvorfor bruger I print og ikke echo?
>
>sikkert for sjov - de to ting gør nøjagtigt det samme. Hvad folk bruger
>afhænger som regel af hvad de først har fået præsenteret, eller hvad de
>kan huske fordi de bruger en funktion med samme navn i et andet sprog.

Der er den lille forskel at print returnerer 1 eller 0, hvorimod echo
ikke returnerer noget.
MVH Martin S

hoaX (16-07-2003)
Kommentar
Fra : hoaX


Dato : 16-07-03 20:35

> Der er den lille forskel at print returnerer 1 eller 0, hvorimod echo
> ikke returnerer noget.

Og hvad skal det så bruges til?

- hoaX
----------------------------------------
www.hoaxmusic.dk
www.hoaxmusic.dk/galleri/



Martin Sveegaard (16-07-2003)
Kommentar
Fra : Martin Sveegaard


Dato : 16-07-03 21:44

On Wed, 16 Jul 2003 21:34:34 +0200, "hoaX" <pt5@mail.dk> wrote:

>> Der er den lille forskel at print returnerer 1 eller 0, hvorimod echo
>> ikke returnerer noget.
>
>Og hvad skal det så bruges til?

Det kan man bruge til at afgøre om print blev udført korrekt, ligesom
en hvilken som helst anden funtions returværdi.
Læs evt. om forskellen på print og echo her:
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
MVH Martin S

Peter Brodersen (16-07-2003)
Kommentar
Fra : Peter Brodersen


Dato : 16-07-03 00:31

On Wed, 16 Jul 2003 00:34:19 +0200, Michael Rasmussen
<mir@datanom.net> wrote:

>Hvis du vil være sikker
>på, at skumle personer ikke kan ændre indhold, bør du kun benytte post
>($_POST).

Det er stadigvæk ingen garant for noget. Udefrakommende data bør
stadigvæk betragtes som udefrakommende, uanset om det er GET'et,
POST'et eller COOKIE't ind - derfor giver $_REQUEST fin nok mening.

Moduler som livehttpheaders <http://livehttpheaders.mozdev.org/> giver
fx lethed til at rette i de POST-og COOKIE-værdier, man sender med.
Selv uden lettilgængelige moduler, er det stadigvæk en triviel sag for
en såkaldt skummel person at lave en manuel HTTP-forespørgsel.

For data, der skal transporteres over flere sider, er jeg dog helt
enig i at man lige så godt kan bruge en session - og såvidt muligt kun
lade data blive indført i systemet én gang.

--
- Peter Brodersen

Jesper Brunholm (16-07-2003)
Kommentar
Fra : Jesper Brunholm


Dato : 16-07-03 11:10

Kim Emax wrote:
> Hey
>
> Sidder og er ved at portere gammel kode, så det spiller med register_globals
> off så mens jeg tester løs falder jeg over noget jeg lige vil høre om jeg
> har misforstået:
>
> if($_REQUEST[action]) {
> print "action=".$_REQUEST[action];
> }
> else {
> print '<a href="./?action=mustafa">link</A>'
> }
>
> Hvis jeg angivet linket selv i adresse linien, f.eks.
> domain.dk/?action=hest - så printes hest, men er det ikke lige netop det,
> der er den øgede sikkerhed? At en væmmelig bruger kan indtaste sine egne
> data eller har jeg misset noget?

Du har misset noget - den øgede sikkerhed er at $action ikke automatisk
er lig med $_REQUEST['action']. Dermed bliver det mere bevidst hvad der
er for et indhold i variablerne, og om det sættes i scriptet eller
kommer udefra.
Samtidig opstår der en glimrende lejlighed til at validere input idet
man trækker indholdet fra $_REQUEST over i enkeltvariabler

mvh

Jesper Brunholm

--
Phønix - dansk folk-musik i front - <http://www.phonixfolk.dk/>
H.C. Andersen-Centret med nyt design: <http://www.andersen.sdu.dk/>


Kim Emax (16-07-2003)
Kommentar
Fra : Kim Emax


Dato : 16-07-03 22:34

Jesper Brunholm wrote:

> Du har misset noget - den øgede sikkerhed er at $action ikke
> automatisk er lig med $_REQUEST['action']. Dermed bliver det mere
> bevidst hvad der er for et indhold i variablerne, og om det sættes i
> scriptet eller kommer udefra.

Det eneste jeg kan komme på er, hvis brugeren smider ekstra parametre på
urlen og rammen en variabel, der er sat i scriptet og på den måde, hvis man
har lavet sin kode uheldigt, kan overskrive en variabel værdi f.eks.

?action=mustafa&admin=1

> Samtidig opstår der en glimrende lejlighed til at validere input idet
> man trækker indholdet fra $_REQUEST over i enkeltvariabler

Det har jeg altid gjort. Jeg har bare ikke haft lejlighed til at sætte mig
ind i $_REQUEST , $_GET og $_POST, men havde den opfattelse at det sikrede
mod ovenstående kunne ske.

--
Take Care
Kim Emax - Freelance programmør
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408936
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste