Java-Forum.org  

Zurück   Java-Forum.org > Enterprise Java > Allgemeines EE

Allgemeines EE: Struts - Direktaufruf eines URL verhindern

Allgemeines EE Forum.

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 04.01.2007, 22:40   #1
 
Struts - Direktaufruf eines URL verhindern - Standard Struts - Direktaufruf eines URL verhindern

Hallo,
wie macht man es, dass ein url, der in einem <html:link> einen id Parameter übergeben bekommt, nicht direkt ueber die manuelle Adresseingabe im Browser aufgerufen werden kann, sondern nur über diesen link auf diesen url verweist.

zb wird jemand über einen link an diese seite geleitet

http://localhost:8080/projekt/newEnt...ion=new&s_id=1

momentan ist es so, dass derjenige auch manuell im browser dies eintippen könnte und er würde inhalt sehen, der nicht für ihn bestimmt ist.
http://localhost:8080/projekt/newEnt...ion=new&s_id=2

Wie kann ich sowas verhindern, dass Seiten nur über den Link aufgerufen werden können bzw. das der url ein wenig vershclüsselt wird, so dass ein mancher nicht auf die idee kommen könnte urls auszuprobieren und nicht zugewiesenen inhalt sieht ?

Thanks a lot. Vielen Dank.
 

 
Anzeige
 

AW: Struts - Direktaufruf eines URL verhindern



 
Alt 04.01.2007, 23:31   #2
 
Struts - Direktaufruf eines URL verhindern - Standard AW: Struts - Direktaufruf eines URL verhindern

'ein wenig' verschlüsseln kannst du am einfachsten mit Post-Aufrufen,
dann fallen die Parameter weg,

das geht mit einem Link nicht, aber jeden Link kannst du wohl auch als Formular darstellen
(da ist die Frage, obs nur als Button geht oder auch als Text-Link)

nur Tipp in die richtige Richtung, keine fertige Lösung

------


auf jeden Fall kann man spätestens mit dem Anschauen des HTML-Quelltextes jeden verwendbaren Link erkennen,
alles was der Browser können muss, das kann auch der User,

-------

auf Serverseite könntest du noch tricksen, indem du für eine bestimmte Session die versendeten Links (oder Ids) merkst und nur diese zulässt,
wenn andere kommen, dann hat die wohl ein User manuell eingetippt,

gibt evtl. Probleme, wenn der User in der lokalen History wandert und Links von früheren Seiten aufruft
 
Alt 10.01.2007, 18:29   #3
MatthiasKnorr
 
Struts - Direktaufruf eines URL verhindern - Standard AW: Struts - Direktaufruf eines URL verhindern

Hallo,

du kannst deine Request Information vielleicht auch einfach mit sun.misc.BASE64Encoder oder anders verschlüsseln.
Dann würde der Link so aussehen (vorher noch mit dem java.net.URLEncoder drüber, wegen dem '=' nach Base64):
Code:
http://localhost:8080/projekt/newEntry.do?command=YWN0aW9uPW5ldyZzX2lkPTE%3D
Das hält wengistens den Hauptteil der Nutzer ab, in der URL rumzufuschen.

Grüße,
Matthias
 
Alt 06.02.2007, 12:21   #4
 
Struts - Direktaufruf eines URL verhindern - Standard AW: Struts - Direktaufruf eines URL verhindern

Hallo,
leider kriege ich das mit den "post" links überhaupt nicht hin, das scheint wohl nur mit Button Links zu gehen.
Mathias Knorr, hättest du vielleicht ein Beispiel oder Ansatz wie ich das machen könnte ?

Vielen Dank im voraus.
 
Alt 06.02.2007, 19:19   #5
KSG9|sebastian
 
Struts - Direktaufruf eines URL verhindern - Standard AW: Struts - Direktaufruf eines URL verhindern

der Vorschlag von MatthiasKnorr ist soweit gut. Würd das so lösen, dann haste auch nicht das Problem dass du bei jedem Link per Javascript das Formular posten musst.
 
Alt 07.02.2007, 21:15   #6
MatthiasKnorr
 
Struts - Direktaufruf eines URL verhindern - Standard AW: Struts - Direktaufruf eines URL verhindern

Hallo synthesist,

kannst du bitte kurz erklären (vielleicht mit etwas Code) was du gemacht hast und was daran nicht funktioniert?
Zur Zeit ist mir nicht klar, was du mit 'Post' oder 'Button' Links meinst.

Grüße,
Matthias
 
Alt 07.02.2007, 21:56   #7
 
Struts - Direktaufruf eines URL verhindern - Standard AW: Struts - Direktaufruf eines URL verhindern

das kommt doch von meinem Post drüber,

bei
<form method = post, action=..
<submit>
</form>
usw. werden die Parameter nicht angezeigt,
aber zumindest standardmäßig ist Submit ein Button und kein 'normaler' Link
 
Alt 08.02.2007, 00:23   #8
 
Struts - Direktaufruf eines URL verhindern - Standard AW: Struts - Direktaufruf eines URL verhindern

ja, deswegen die frage: ist es möglich mit einem normalen Textlink ein post zu senden ? Mein derzeitiger Link sieht so aus:
Code:
 <logic:iterate 
              id="currententry"                          
              name="entries"            
              indexId="i"        
 >  
 <td
    <html:img src="import/list.gif" align="absmidlle"/></td>
	 <td width="430">
	     <html:link action="/NewEntry.do?action=neuerEintrag"
				  			 paramName="currententry"
				  			 paramProperty="customer_id"
							 paramId="customer_id"					 
	     >
		<bean:write name="currenentry" property="inhalt"/>
	    </html:link
</td>	

</logic:iterate>
Dies führt zu einer Reihe von Links, die nach Anklicken im Browser so aussehen:

http://localhost:8080/MyApplication/...&customer_id=7


Und mein Problem ist nun, dass jemand der es darauf anlegt, manuell einfach im Browser eingibt

http://localhost:8080/MyApplication/...&customer_id=7
http://localhost:8080/MyApplication/...&customer_id=8
http://localhost:8080/MyApplication/...&customer_id=9
http://localhost:8080/MyApplication/...customer_id=13

usw.

eingibt, und dadurch unbefugten Inhalt sieht. (Die IDs sind die tatsächlichen Ids wie sie in der Datenbank auch sind).

Dann habe ich probiert, die Zahl nach der customer_id durch einen Random Long und einer HashMap zu "verschlüsseln", was auch gut funktioniert hat. Doch leider musste ich feststellen, dass auch dies nur eine oberflächliche Sicherheit war. Denn selbst wenn dies im Browser erscheint

http://localhost:8080/MyApplication/...88574637847234

kann der Nutzer immer noch

http://localhost:8080/MyApplication/...&customer_id=2

manuell eingeben, und nix wars mit den Randoms.

Dann hab ich mir überlegt, ob es auf DB Ebene eine Möglichkeit gibt, jedesmal einen neuen, zufälligen und eindeutigen Primary Key zu erzeugen. Weiß ich nicht. Weiß auch nicht ob man das so machen würde.

Jedenfalls suche ich einen Mechanismus,
- der den Direktaufruf einer Action oder jsp verhindert (ohne alles in WEB-INF 'verstecken' zu müssen)
- eine andere Lösung für die Parameterübergabe einer Action ?


Danke nochmal für alle Vorschläge!
 
Alt 09.02.2007, 15:56   #9
DreamArtist
 
Struts - Direktaufruf eines URL verhindern - Standard Session?

Setzt in der Session die ID.
Dann musst du sie nicht aus dem Request auslesen sondern kannst Sie aus der Session auslesen.
Und die Session wird kann der User nicht manipulieren
 
Alt 22.08.2007, 07:39   #10
ms
 
Struts - Direktaufruf eines URL verhindern - Standard AW: Struts - Direktaufruf eines URL verhindern

@synthesist

Wozu brauchst du das eigentlich?
Wenn das dein Berechtigungskonzept für deine User ist, dann überdenke das bitte nochmal.
 
Thema geschlossen    

Zurück   Java-Forum.org > Enterprise Java > Allgemeines EE

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen: Struts - Direktaufruf eines URL verhindern

Flimmern wegen eines Thread verhindern
Flimmern wegen eines Thread verhindern: hi leute, ich habe ein chatProgramm geschrieben, damit ich nicht immer in den 2. stock laufen muss, um mit meinen kollegen zu quatschen! dieses chatProgramm bezieht sich aber nicht auf server und...
Direktaufruf einer jsp nicht zulassen
Direktaufruf einer jsp nicht zulassen: Unter tomcat habe ich eine Mini-Webapplikation zu Testzwecken erstellt. Von meinem Controllerservlet werden jsp-Dateien aufgerufen und ausgeführt. Leider wird die jeweilige Adresse einer jsp in...
Wie das Beenden eines Javaprogrammes verhindern?
Wie das Beenden eines Javaprogrammes verhindern?: Guten Tag, ich möchte verhindern, dass ein Benutzer meine Software beendet bzw. wenn er es tut, dass der PC gesperrt oder heruntergefahren wird. Ich hatte gehofft mit ...
Schließen eines Fensters verhindern
Schließen eines Fensters verhindern: Hallo, ich habe ein Fenster unter Swing welches ein paar JRadioButtons und ein paar Textfelder enthält. FÜr das Fenster ist ein WindowListener implementiert, welcher im Falle von windowClosing...




Sie betrachten gerade Struts - Direktaufruf eines URL verhindern