[PHP/JS] Formulier en beveiliging

Pagina: 1
Acties:
  • 55 views sinds 30-01-2008

  • Mr. Right 1
  • Registratie: Maart 2000
  • Laatst online: 02-08-2023

Mr. Right 1

Do I need to say more?

Topicstarter
Hier de situatie:

Op een pagina worden bepaalde acties door de bezoeker verwerkt door een .js

Het resultaat van het .js wordt in een textfield (GETAL) van een FORM gedumpt. Bij iedere nieuwe actie wordt GETAL weer bijgewerkt.

Als de bezoeker op de SUBMIT-button klikt, dan wordt de actuele waarde van GETAL verzonden naar een .php. De .php gooit alles in een MySQL-dbase.

Het textfield GETAL is READ-ONLY en alleen te bewerken door de .js

Naast het veld GETAL staan er nog 2 tekstvelden in het FORM: naam en e-mailadres. Deze mag/moet de gebruiker wel zelf invullen.

Nu is gebleken dat het mogelijk is om met de 2 overige tekstvelden de waarde van GETAL te manipuleren / overschrijven op het moment dat de SUBMIT-knop wordt gebruikt. Er wordt in een van de 2 tekstvelden iets ingevoerd waarbij de veldnaam van GETAL wordt gebruikt.

Hoe kan ik dit probleem oplossen? Het liefst met PHP, zodat de bezoeker de broncode niet kan zien.

Is het bijvoorbeeld mogelijk om met PHP een extra "hidden" veld aan het form toe te voegen? Dan kan ik bijvoorbeeld de waarde van GETAL dubbel posten in het formulier, maar de .php alleen de verborgen waarde laten dumpen in MySQL.

Oh ja, hier het FORM:

<FORM NAME=myform action="file.php" METHOD="POST">
<input type="hidden" name="id" value="NULL">
<INPUT NAME="GETAL" TYPE="text" SIZE=7 ONFOCUS="cheat(this);" READONLY CLASS="textbox">
<input type="TEXT" name="naam" maxlength=50 size=20 class="textbox">
<input type="text" name="email" maxlength="50" size="20">
<input type="submit" value="Verzenden" name="submit">
</FORM>

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Tja. Kan de logica die in het JS zit niet gewoon in PHP komen te staan? Heb je überhaupt al wat geprobeerd in PHP?

Ik zou ook zeker niet clientside gaan checken op iets belangrijks, aangezien ik dan met een heel simpel programma (socket open en sturen maar) de boel kan vervalsen.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 17:38

Gerco

Professional Newbie

Waarom is dat GETAL veld eigenlijk zichtbaar? Als de gebruiker er niets mee kan/mag doen, waarom dan laten zien?

Maak er een <input type="hidden" name="GETAL"> van :)

Nu lost dit natuurlijk het probleem niet op, want het truuckje zal waarschijnlijk nog steeds werken. Om het tegen te gaan is misschien de gebruikte "truuck" wel handig om te zien.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Mr. Right 1
  • Registratie: Maart 2000
  • Laatst online: 02-08-2023

Mr. Right 1

Do I need to say more?

Topicstarter
Op woensdag 10 april 2002 10:22 schreef Glimi het volgende:
Tja. Kan de logica die in het JS zit niet gewoon in PHP komen te staan?
Dat is eigenlijk een beetje mijn bedoeling, maar hoe doe ik dat?

Hoe krijg ik de output van JS in PHP?
Hoe dump ik dat vervolgens in file.php m.b.v. de SUBMIT?

  • Mr. Right 1
  • Registratie: Maart 2000
  • Laatst online: 02-08-2023

Mr. Right 1

Do I need to say more?

Topicstarter
Op woensdag 10 april 2002 10:27 schreef Gerco het volgende:
Waarom is dat GETAL veld eigenlijk zichtbaar? Als de gebruiker er niets mee kan/mag doen, waarom dan laten zien?

Maak er een <input type="hidden" name="GETAL"> van :)
Ten eerste moet de bezoeker op het scherm kunnen zien wat de actuele waarde is van GETAL.

Ten tweede kan ik het wel een "hidden" meegeven, maar als je de broncode bekijkt, zie je het veld evengoed staan en kan het "truukje" alsnog worden uitgehaald.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op woensdag 10 april 2002 10:28 schreef Mr. Right 1 het volgende:

Dat is eigenlijk een beetje mijn bedoeling, maar hoe doe ik dat?

Hoe krijg ik de output van JS in PHP?
Hoe dump ik dat vervolgens in file.php m.b.v. de SUBMIT?
Nou laat ik eens lief zijn :) Ten eeste we willen geen output van JS bij de verwerking in php aan laten komen. We gaan gewoon lekker JS vergeten voor deze 'belangrijke' verificatie (als je gewoon een check wilt of er wel wat is ingevuld voor dat je submit dan volstaat JS wel aardig hoor)

Stel de JS doet dit:
code:
1
2
3
4
5
if(lengteVanHetEmailAdres >= 10 ){
     $nummer = 12;
}else{
     $nummer = 1; 
}

Dan kan php het toch ook? Dus de pagina wordt submitted dan doet PHP het volgende (met nog wat meer checks):
code:
1
2
3
4
5
if( length($emailAdres) >= 10 ){
    $nummer = 12;
}else{
    $nummer = 1;
}

Stel je wilt niet dat het nummer bepaald wordt, maar kijken of hij geldig is:
PHP
code:
1
2
3
4
5
6
7
8
9
if( length($emailAdres >= 10 && $nummer = 12 ){
    //woei :) goed
}else{
    if( $nummer =1 ){
     //invoer ook goed.
    }else{
     //slechte invoer!
    }
}

  • Mr. Right 1
  • Registratie: Maart 2000
  • Laatst online: 02-08-2023

Mr. Right 1

Do I need to say more?

Topicstarter
Ten eeste we willen geen output van JS bij de verwerking in php aan laten komen.
Er komt ook geen output van JS bij de verwerking van PHP terecht. De output van JS wordt in het FORM gegooid en DIE wordt naar PHP gestuurd.

En wat wordt er nou gecontroleerd door je functies? Het e-mailadres zelf of dat er uberhaupt een e-mailadres (en geen andere waarden) in worden gevuld?

Ik vond ook nog een soortgelijke post:

[topic=403104/1/25]

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

ga eerst maar eens het verschil tussen serverside en clientside bepalen en sla jezelf dan voor je kop ;)

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.