[php] gegevens veilig versturen over het net

Pagina: 1
Acties:

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Als ik bijvoorbeeld een id verstuur via een url of een post dan is deze voor iedereen zichtbaar. Nu wil ik iets maken dat deze voor niemand zichtbaar is.

Wat ik doe is namelijk het volgende. Als iemand op een link klikt, dan gaat diegene naar een bepaalde pagina. In deze pagina staan weer links en in deze pagina wordt tevens een record geinsert in de database. Het record dat geinsert is heeft een bepaalde id. Als de gebruiker nu weer op een link klikt, dan komt de gebruiker weer op een pagina met allemaal links. Tevens wordt nu het record geupdate met het id dat net geinsert was. Om dit te bewerkstelligen moet ik via die link het id meesturen. Dit id is nu voor iedereen zichtbaar. Als men dus een andere id invult wordt een ander record geupdate. Dit is natuurlijk niet de bedoeling. Nu kan ik het id versleutelen met RSA encryptie en dergelijke en dan versturen, maar dan is het nog steeds mogelijk om het geencrypte id aan te passen en zo kan als nog een id gegenereerd worden. De kans is allicht klein dat dit gebeurt , maar het kan wel en ik wil dit uitsluiten. Ik zit al een tijdje met dit probleem in mn maag en kan zelf eigenlijk geen oplossing bedenken. Het gebruik van coockies en sessions mag niet. Iemand ideen?

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 08-09 17:10
cookies? sessions? forms?

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22:11

TheDane

1.618

Op dinsdag 23 april 2002 13:28 schreef elviver het volgende:
cookies? sessions? forms?
dat mocht dus (blijkbaar) niet |:(

waarom eigenlijk niet ?!

maargoed, je zou kunnen zorgen dat er alleen HTTP_POST_VARS geaccepteerd worden als id voor record wat geupdate wordt.
en dat 't ook nog eens via een speciale referer binnen moet komen (jouw script)

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Omdat cookies en sessions volgens mij niet ondersteunt worden door i-mode. Ofwel? Maar dan nog die sessions is volgens mij niet zo betrouwbaar. Al is dat geen goed argument.

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Dus jij bedoelt dat als je zo'n vraagtekentje achter je url zet en daar een id invult dat dat niet toegestaan is. Hoe kun je dat instellen dan via php? Moet je dan kijken of $http_post_vars bestaat of zo dus iets van

if (!$http_post_vars($id)) {
echo $error;
} else {
update blabla
}

Zijn er dan verder geen manieren om dit te omzeilen?

Volgens mij kunnen ze dan gewoon een form maken op eigen server en dat posten op de url van mij .. en dan kunnen ze het alsnog aanpassen en posten met een andere url. :( O sorry het moet via bepaalde referrer binnekomen, niet goed gelezen :( ... Ja dat zou kunnen, maar kunnen ze dat niet faken dan op de een of andere maniet

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22:11

TheDane

1.618

Op dinsdag 23 april 2002 13:34 schreef RSD het volgende:
Dus jij bedoelt dat als je zo'n vraagtekentje achter je url zet en daar een id invult dat dat niet toegestaan is. Hoe kun je dat instellen dan via php? Moet je dan kijken of $http_post_vars bestaat of zo dus iets van

if (!$http_post_vars($id)) {
echo $error;
} else {
update blabla
}

Zijn er dan verder geen manieren om dit te omzeilen?
PHP:
1
<?if ($HTTP_REFERER != "urlvanjouwscript") { echo "alleen via mijn script posten aub"; break;} else {   if (intval($HTTP_POST_VARS["id"]) == 0) {       echo "hmm, geen id";        break;   } else {       // update   }}?>

zo zou ik 't doen. En tsja .. als je geen sessies/cookies mag gebruiken ... anders kun je kijken of degene die wil wijzigen wel permissie heeft om te wijzigen (bijvoorbeeld omdat ie 't record ook heeft aangemaakt oid)

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22:11

TheDane

1.618

Op dinsdag 23 april 2002 13:34 schreef RSD het volgende:
[..]
et moet via bepaalde referrer binnekomen, niet goed gelezen :( ... Ja dat zou kunnen, maar kunnen ze dat niet faken dan op de een of andere maniet
mja, dat zal best wel kunnen ja , fake headertje sturen oid

maar hoe veilig wil je zoiets hebben !?


ik krijg een beetje 't idee dat je een flat wil bouwen met een schep en een hoopje zand

no offence of course, maar als je maar beperkte middelen hebt ...

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Waarom stel je de intval(http_post_vars) gelijk aan 0 en check je daarop?

En dat sessies, gebeurt dat op de server of stuurt die ook een header? Ben niet zo thuis daarin, zal me er eens in gaan verdiepen.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op dinsdag 23 april 2002 13:41 schreef RSD het volgende:
Waarom stel je de intval(http_post_vars) gelijk aan 0 en check je daarop?
zodat je weet dat er een geldig getal in staat (dus 0-9, en niet 0-9a-z etc.)

Klaar voor een nieuwe uitdaging.


Verwijderd

(Hoezo zijn sessions niet betrouwbaar? Werkt prima.)

Bij POST's is het een stuk lastiger om zomaar iets te wijzigen hoor. Zoek eerst eens uit wat het verschil is tussen GET's en POST's.

Als je dan POST's gebruikt, kan je code die met de invoer aan de slag gaat tussen zoiets als if($REQUEST_METHOD == "POST") {...} zetten.

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22:11

TheDane

1.618

Op dinsdag 23 april 2002 13:42 schreef chem het volgende:

[..]

zodat je weet dat er een geldig getal in staat (dus 0-9, en niet 0-9a-z etc.)
:7
of sneaky queries }:O :X

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Sessions zal ongetwijfeld veilig zijn, maar ik mag ze niet gebruiken, omdat het voor imode bedoeld is. Maar nu weet ik niet precies wat een session doet allemaal, en welke headers je naar een imode browser moet/mag sturen. Volgens mij zitten daar nogal beperkingen aan.

Hoezo sneaky queries? Leg eens uit?

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22:11

TheDane

1.618

Op dinsdag 23 april 2002 13:45 schreef RSD het volgende:
Sessions zal ongetwijfeld veilig zijn, maar ik mag ze niet gebruiken, omdat het voor imode bedoeld is. Maar nu weet ik niet precies wat een session doet allemaal, en welke headers je naar een imode browser moet/mag sturen. Volgens mij zitten daar nogal beperkingen aan.

Hoezo sneaky queries? Leg eens uit?
nou, als je een of ander formuliertje hebt, en je kan daar een waarde zelf invullen,
dan kun je zoiets als dit:
code:
1
UwNaam: hah;'delete from users';

oid, en als je dat dus niet afvangt (addslashes/intval) dan heb je toch wel een probleem

maargoed, ik weet verder niks van imode, dusja ,.

  • Grum
  • Registratie: Juni 2001
  • Niet online
[/ot]Nice sig elviver :+

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Hmmz, dat is zo ja, zal ik dat in die andere zooi ook maar eens inbouwen. Is wel zo handig, maar dan moet je wel de juiste tabels kennen :) Maar Sessions, wat doet dat allemaal met je header dan, schrrijft het namelijk iets weg op de harde schijf van de gebruiker zoals een cookie of blijft het allemaal op de server? Als het namelijk op de server zelf gebeurt kunnen sessions wel in mijn ogen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

RSD.. Mag ik je er op wijzen dat je best wel iets vaker in de handleiding kunt kijken waarvan ik eerder al de link gegeven heb? Dan had je namelijk kunnen zien dat imode gewoon basic authentication ondersteund. Dit is mischien wel geen encryptie, maar wel een redelijk veilige manier om iemands identiteit te kunnen garanderen

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Ja maar het gaat hier niet om authentication van een user of dat ze passwords moeten invullen. Dat is het probleem. Dat id dat verstuurd wordt, moet ook echt verstuurd worden. De user zelf mag namelijk het id ook niet aan kunnen passen. Niemand mag het aan kunnen passen. Ze mogen alleen klikken en meer niet en de data moet verstuurd worden. Ik denk dat ik voorgaande dingetjes implementeer en eventueel iets met sessies ga doen, maar ik weet dus niet of dat mogelijk is en ik zal het ook maar gaan encrypten. De eerste checks zal de gevreesde hackers wel doorheen komen, alleen de encryptie moet een probleem worden. Misschien kan ik het koppelen met een user authentication dat is eventueel ook nog wel veilig. Maar als iemand wat meer weet over sessies of die met Imode kunnen te ja of te nee, hoor ik dat graag.

Ennuh ja die handleiding ben ik echt blij mee. Op www.imode.nl heb ik hem nogniet kunnen vinden, hij staat niet tussen de links!

Thnx

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

Op dinsdag 23 april 2002 14:33 schreef RSD het volgende:

Ennuh ja die handleiding ben ik echt blij mee. Op www.imode.nl heb ik hem nogniet kunnen vinden, hij staat niet tussen de links!

Thnx
Rode balke helemaal rechts "Maak een i-mode site", dan links op documenten klikken en dan de bovenste link "iHTML Engelse handleiding"

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Nou goed ik kan hier niet uithalen of sessions nu wel of niet kunnen. En ja die handleiding is wel uitgebreider dan de eerste versie die ik heb. Maar ik dacht dat die oude er nog stond, dus vandaar.

  • xoror
  • Registratie: November 1999
  • Niet online
waarom zou imode geen sessions ondersteunen ? (als je gewoon via de URL de session ID propageert).

ik bedoel, sessions worden serverside afgehandeld. de client krijgt een ID die zijn/haar sessie identificeert.
Je kan die ID opslaan in cookie (gaat niet als imode geen cookies doet), via URL propageren, via POST vars etc meegeven. voor de imode browser is een het gewoon yet another URL.

Mitsubishi Warmtepomp Uitlezen / Besturen | Optimaliseren


  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Maar nu is de vraag , kan ik het zo maken dat de id die ik verstuur voor niemand zichtbaar is.

Als er geklikt wordt, start ik dus een session. Vervolgens wordt de sessionid aangemaakt. Deze sla ik op in de database. Hierna update ik de database met die sessionid. en laat weer wat links zien. Als er nu weer geklikt wordt,roep ik het sessionid op. Vervolgens zoek ik in de database welke sessionid's overeen komen en update het zooitje weer. Maar heeft ie nu nix naar de header gestuurd dan van de imode browser? Of gebeurt alles wat met sessions te maken heeft op de server zelf en wordt er nix naar de browser gestuurd?


Is er niet zoiets dat als ik een query uitvoer.. vervolgens wordt er ergend geklikt.. ik ga naar een andere pagina.. dat ik met mysql_insert_id(link_identifier) De id kan ophalen via die variabele.. of is dat niet mogelijk? Zal wel niet he!

  • xoror
  • Registratie: November 1999
  • Niet online
ik kan alles wel voorkauwen maar is leuker als je zelf doet.
lees deze http://nl.php.net/manual/nl/ref.session.php pagina eens grondig door.

Mitsubishi Warmtepomp Uitlezen / Besturen | Optimaliseren


  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Ik moet dus iets doen van:

session_start;
<a href="index.php?<?=SID?>">***</a>

en dan wordt het sessionid doorgestuurd! Hmmz en dat opslaan in een dbase van een sessionid is ook nog een heel gedoen... brrr...
Pagina: 1