[PHP] Form referrer: controleren ?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een scriptje, waarbij iets via een form wordt gepost. Echter, als dit form vanaf een andere host wordt ge-submit, kun je zo allerlei data toevoegen..

Wat is aan te raden: bij elke $_POST[]-action de referrer controleren? Of hoe doen jullie dat? Of maken jullie je geen zorgen over dit? :)

Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou me hier niet te druk over maken, maar als je wil kun je idd kijken naar de referrer met een include ofzow, komt ie van een gode referrer laat je alles doorgaan anders doe je een redirect naar een of andere fout pagina

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

Je moet natuurlijk altijd je gegevens die je via post of get binnenkrijgt controleren of ze wel voldoen aan je 'voorwaarden'!

denk hierbij aan:
• controleren of variabele van het goede type is (is_numeric(), is_Array(), etc)
• voordat je db-queries uit ga voeren met de data *altijd* quotes escapen
• controleren of waardes voldaan aan je voorwaarden (lengte van string, hoogte van een getal, etc)

[ Voor 59% gewijzigd door thomaske op 03-01-2003 10:57 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
thomaske schreef op 03 January 2003 @ 10:54:
Je moet natuurlijk altijd je gegevens die je via post of get binnenkrijgt controleren of ze wel voldoen aan je 'voorwaarden'!

denk hierbij aan:
• controleren of variabele van het goede type is (is_numeric(), is_Array(), etc)
• voordat je db-queries uit ga voeren met de data *altijd* quotes escapen
• controleren of waardes voldaan aan je voorwaarden (lengte van string, hoogte van een getal, etc)
Ja, dit doe ik al allemaal :) addslashes() is toch genoeg om de quotes te escapen?

En nog iets: bepaalde velden moeten ingevuld worden, andere velden zijn optioneel. Hoe zou ik dit checken? Dmv een javascript? Of pas later als de data gesubmit is ?

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

In je formulier (en sessie/database) een dynamische waarde plaatsen en die controleren in je database/sessie.

Echt helpen doet het trouwens niet, maar het maakt het wel iets moeilijker.
Opzich maakt het ook niet uit dat data toegevoegd wordt, dit kan je prima negeren door de entries gewoon niet te gebruiken ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 03 januari 2003 @ 11:12:
[...]
Ja, dit doe ik al allemaal :) addslashes() is toch genoeg om de quotes te escapen?

En nog iets: bepaalde velden moeten ingevuld worden, andere velden zijn optioneel. Hoe zou ik dit checken? Dmv een javascript? Of pas later als de data gesubmit is ?
Het best zou zijn als je dat met php doet, dan kan de gebruiker er namelijk niet meer omheen, je zet je gegevens pas in je DB als ze allemaal kloppen.

Het is misschien wel minder gebruikers vriendelijk, omdat de gebruiker steeds moet submitten en wachten tot je form goedgekeurd is.

Toch zou ik gaan voor de php variant, meestal gebruik ik dan een andere kleur "label" voor het verkeerd ingevulde veld.

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

Verwijderd schreef op 03 January 2003 @ 11:12:
[...]
En nog iets: bepaalde velden moeten ingevuld worden, andere velden zijn optioneel. Hoe zou ik dit checken? Dmv een javascript? Of pas later als de data gesubmit is ?
Allebei! Javascript voor de gebruiksvriendelijkheid en php om de waardes alsnog te controleren :)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 00:01

me1299

$ondertitel

Verwijderd schreef op 03 januari 2003 @ 11:12:
[...]
Ja, dit doe ik al allemaal :) addslashes() is toch genoeg om de quotes te escapen?

En nog iets: bepaalde velden moeten ingevuld worden, andere velden zijn optioneel. Hoe zou ik dit checken? Dmv een javascript? Of pas later als de data gesubmit is ?
javascript is voor de gebruiker makkelijker, omdat hun browser dan niet hoeft te refreshen, maar echt fail proof is het niet.

Beide is dan idd de beste optie ;)

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok beide dan :) Ik heb zoiets met PHP gemaakt: als de 'required-fields' in een form niet allemaal zijn ingevuld, zet hij de waardes die ie wel heeft in een $_SESSION-array en displayed ze zo in het form.

Ik vind dit een beetje ranzige methode... Zijn er nog andere methodes voor ?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ACM schreef op 03 januari 2003 @ 11:15:
In je formulier (en sessie/database) een dynamische waarde plaatsen en die controleren in je database/sessie.

Echt helpen doet het trouwens niet, maar het maakt het wel iets moeilijker.
Opzich maakt het ook niet uit dat data toegevoegd wordt, dit kan je prima negeren door de entries gewoon niet te gebruiken ;)
Hmm, op zich wel interessant, maar hoe zou het dan worden?

Bij het viewen van het form een waarde maken en in dbase gooien, en vervolgens bij het posten van het form checken of de waarde nog bestaat: zo ja: vervolg, zo nee: error ?

Acties:
  • 0 Henk 'm!

  • Reggino
  • Registratie: Augustus 2002
  • Laatst online: 29-11-2023

Reggino

Je weet toch

Je kan natuurlijk ook het bouwen van een formulier in een functie laten gebeuren.

In dit formulier (in die functie) zet je bijvoorbeeld standaard

<input type="text" name="blah" value="$blah">

Bij het submitten, als je controle failed, dan nog een keer het formulier weer laten bouwen door de functie (alleen voor fileuploads werkt dit niet). En dan zijn de waarden alvast weer ingevuld.

Het ouwe moet eerst op!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Reggino schreef op 03 January 2003 @ 13:43:
Je kan natuurlijk ook het bouwen van een formulier in een functie laten gebeuren.

In dit formulier (in die functie) zet je bijvoorbeeld standaard

<input type="text" name="blah" value="$blah">

Bij het submitten, als je controle failed, dan nog een keer het formulier weer laten bouwen door de functie (alleen voor fileuploads werkt dit niet). En dan zijn de waarden alvast weer ingevuld.
Ja doh, zover was ik ook :P Ik heb standaard die value erin staan, maar worden door een parser ge-replaced in waardes. Als er geen waardes zijn, wordt het dus door '' ingevuld :)

Hmm, ik denk dat ik al weet hoe ik het ga doen :D

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 03 January 2003 @ 13:17:
Bij het viewen van het form een waarde maken en in dbase gooien, en vervolgens bij het posten van het form checken of de waarde nog bestaat: zo ja: vervolg, zo nee: error ?

Ja, inderdaad.
Met sessies is het nog iets handiger, dan kan je gewoon het sessieid erin proppen, die blijft de hele sessie gelijk en hoef je dus niet eens (apart) te controleren verder in je db.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ACM schreef op 03 januari 2003 @ 14:16:

[...]

Ja, inderdaad.
Met sessies is het nog iets handiger, dan kan je gewoon het sessieid erin proppen, die blijft de hele sessie gelijk en hoef je dus niet eens (apart) te controleren verder in je db.
Hmm, ok, maar iemand anders zou dit form op kunnen vragen: daarin staat het session_id.

Page maken op een andere server die ook een session begint, met het session_id dat je uit het form hebt gehaald. Zo kun je nog vanaf een andere server posten/spammen ? Of deze methode icm. http_referrer ?

Acties:
  • 0 Henk 'm!

  • PieterJ
  • Registratie: Juli 2000
  • Laatst online: 12:46
Verwijderd schreef op 03 January 2003 @ 15:38:
[...]
Hmm, ok, maar iemand anders zou dit form op kunnen vragen: daarin staat het session_id.

Page maken op een andere server die ook een session begint, met het session_id dat je uit het form hebt gehaald. Zo kun je nog vanaf een andere server posten/spammen ? Of deze methode icm. http_referrer ?
Dan voeg je het IP adress, je domainnaam en een "secretcode" toe aan je session_id en hash je de boel met MD5. Bijvoorbeeld.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PieterJ schreef op 03 January 2003 @ 15:41:
[...]


Dan voeg je het IP adress, je domainnaam en een "secretcode" toe aan je session_id en hash je de boel met MD5. Bijvoorbeeld.
Dat maakt dan toch nog niks uit? Als ik die session_id in dat form zet, is ie voor iedereen beschikbaar die dat form leest, of ie nou zo ingewikkeld is of niet ?
Pagina: 1