[Java EE 6] 'Veilig' een parameters doorgeven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Max Hunt
  • Registratie: Oktober 2004
  • Laatst online: 15:34
Ik ben op dit moment bezig met een, tot zover, standaard website met een database eraan gekoppeld. Op dit moment is het niet meer dan een redelijke CRUD uitwerking.

Ik heb een ManagedBean die RequestScoped is (dat laatste is een eis). Om op dit moment te gaan van de web-pagina met een overzicht van alle entiteiten in de database naar een pagina die bijvoorbeeld alle velden laat zien van 1 entiteit gebruik ik op dit moment de volgende methode:

List.xhtml:
- In een dataTable
- Maak ik een link: view.xhtml?id=#{row.id}

ManagedBean:
- @ManagedProperty(value = "#{param.id}")
- In de @PostConstruct gebruik ik de ID om de entiteit op te halen

Dit werkt prima, maar de ID is gewoon zichtbaar en aanpasbaar in de URL. Dat wil ik graag veranderen zodat dit niet meer het geval is. Maar de oplossingen die ik tot nu toe gevonden heb gaan vrijwel altijd uit van een session scoped managed bean (zoals bijv. bij deze 4 mogelijkheden).

Ik zie op dit moment 2 mogelijkheden om dit te bewerkstelligen:
1. De parameter moet op een andere manier worden doorgegeven aan de view.xhtml pagina. Ik zou misschien een form kunnen maken van die link waarmee de ID wel mee kan worden gegeven maar deze niet te zien is
2. Ik zorg ervoor de ID bewaart blijft buiten de request-scoped managed bean. Misschien dat een static variabele al genoeg zou zijn.

Maar misschien mis ik wel iets, of er is al een 'echte' oplossing voor wat ik hier probeer te doen. Daarom leek het me handig om voordat ik van alles ga aanpassen (ik kan m'n code thuis niet testen) om wat input te vragen.

Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Het doorgeven van een aanpasbaar ID hoeft geen probleem te zijn als je degelijke authorisatie controles hebt.
Met andere woorden: bij elke request kijk je of de gebruiker wel de rechten heeft om die pagina te bekijken.

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je 't ID wilt verbergen zul je een POST moeten doen, maar dan moet je even inlezen in idempotentie en waarom je dat eigenlijk voor GET danwel POST zou moeten kiezen.
En los daarvan los je er niets mee op, een POST kun je net zo goed (aan de client kant) aanpassen; het is-en-blijft gewoon user input.

Hoe dan ook zul je 't ID dat de user geklikt heeft op een-of-andere manier naar de server moeten zien te krijgen; dat ga je niet kunnen oplossen. Daarom zul je server-side zoals H!GHGuY aangeeft, altijd de nodige zaken moeten controleren. Ik kan hier rustig een ID van een crewtopic neerzetten dat je dan in de URL kunt gooien hier; wedden dat je een foutmelding krijgt? ;)

[ Voor 46% gewijzigd door RobIII op 15-01-2012 12:26 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Max Hunt schreef op zondag 15 januari 2012 @ 10:44:
Dit werkt prima, maar de ID is gewoon zichtbaar en aanpasbaar in de URL. Dat wil ik graag veranderen zodat dit niet meer het geval is.
Waarom wil je dat?

https://niels.nu