Struts - Direktaufruf eines URL verhindern

Status
Nicht offen für weitere Antworten.
S

synthesist

Gast
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/newEntry.do?action=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/newEntry.do?action=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.
 
S

SlaterB

Gast
'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
 

MatthiasKnorr

Aktives Mitglied
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
 
S

synthesist

Gast
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.
 

KSG9|sebastian

Top Contributor
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.
 

MatthiasKnorr

Aktives Mitglied
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
 
S

SlaterB

Gast
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
 
S

synthesist

Gast
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/NewEntry.do?action=neuerEintrag&customer_id=7


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

http://localhost:8080/MyApplication/NewEntry.do?action=neuerEintrag&customer_id=7
http://localhost:8080/MyApplication/NewEntry.do?action=neuerEintrag&customer_id=8
http://localhost:8080/MyApplication/NewEntry.do?action=neuerEintrag&customer_id=9
http://localhost:8080/MyApplication/NewEntry.do?action=neuerEintrag&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/NewEntry.do?action=neuerEintrag&customer_id=188574637847234

kann der Nutzer immer noch

http://localhost:8080/MyApplication/NewEntry.do?action=neuerEintrag&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!
 

DreamArtist

Bekanntes Mitglied
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
 

ms

Top Contributor
@synthesist

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

SnooP

Top Contributor
wollte ich gerade erwähnen - bevor man sich solche komplexe Pseudo-Verschlüsselungsmaßnahmen überleget, wie wär's, wenn nur User auf Inhalte zugreifen können, die auch nur für sie bestimmt sind? Dann kommt man mit den get-parametern nicht weit, sollte jemand diese manuell verändern.
 

byte

Top Contributor
Ein Workaround wäre sowas:

Code:
<form name="hiddenForm" action="blablub" method="post">
    <input name="foo" value="bar" type="hidden"/>
    [url="#"]Link mit hidden Post[/url]
</form>

Funktioniert halt nur, wenn Javascript aktiviert ist.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Struts 2 datetimepicker Allgemeines EE 3
W Struts Tutorial für EE Noobs? Allgemeines EE 2
N Struts vs JSF ? Allgemeines EE 7
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
Lex Property per html:link schreiben in struts Allgemeines EE 2
Shihan Line Breaks in <br /> umwandeln (Struts) Allgemeines EE 7
S Struts: zwei JSP's nutzen eine Action Allgemeines EE 5
G Struts: ActionMessage value in JSP anzeigen Allgemeines EE 2
S Problem mit Struts und tiles Allgemeines EE 4
S Struts und Session Allgemeines EE 2
K Struts - FormBean mit 2 Listen - Anzeigen und Speichern Allgemeines EE 2
S Probleme mit struts - ActionServlet Allgemeines EE 6
C Struts in iFrame Allgemeines EE 2
Z Struts: Formularfelder initialisieren Allgemeines EE 3
S Struts: Wert in einem iterierten Drop-Down Menü selektieren Allgemeines EE 7
T Struts 2 Allgemeines EE 6
R Struts-Action in JSP abfragen? Allgemeines EE 2
J struts: Bild als submit-button Allgemeines EE 2
J Internationalization mit Struts Allgemeines EE 2
E bei struts inhalte über mehrere seite verteilen Allgemeines EE 6
velaluka Struts- falsches Character-Encoding? Allgemeines EE 3
M URL Darstl. und Struts Allgemeines EE 2
G Struts beans Allgemeines EE 7
D Struts + Table Allgemeines EE 6
L Struts - Action auslösen bei Browser Back Allgemeines EE 2
N Struts - Problem mit <html:link> Action Allgemeines EE 3
netspy Struts, Spring oder ... ? Allgemeines EE 5
1 Frage zu Struts und findForward Allgemeines EE 4
N Struts Jboss und Filter Allgemeines EE 2
S Fragen zu: Servlets, Struts & Hibernate Allgemeines EE 9
T Struts und Objekte in Comboboxen Allgemeines EE 4
J Probleme mit Struts Allgemeines EE 3
K STRUTS The server encountered an internal error Allgemeines EE 5
F struts logic:iterate Allgemeines EE 5
M STRUTS/Cannot retrieve definition for form bean null on acti Allgemeines EE 4
G struts-config.xml Allgemeines EE 3
H Ich bin sehr verwirrt - struts, jsp, jsf . ? Allgemeines EE 53
P Testen von Struts-Anwendung Allgemeines EE 7
P Struts Form Bean vs. Session Variable Allgemeines EE 6
A Tomcat undeploy unter Windows klappt nicht wegen struts.jar Allgemeines EE 2
B Struts Problem: Array in JSP ausgeben (logic:iterate) Allgemeines EE 12
M Struts Deployment Allgemeines EE 3
R Mehrsprachige Seite mit Struts & Co. ? Allgemeines EE 5
S mehrere Message Resources in Struts ansprechen Allgemeines EE 7
G Values aus DB in Input-Feldern anzeigen (Struts) Allgemeines EE 2
G Exception creating bean of class . (Struts) Allgemeines EE 8
B Verwendung von DynActionForm (Struts) Allgemeines EE 10
K dynamischer Zugriff auf .properties (Struts) Allgemeines EE 2
K Struts html:messages tag Allgemeines EE 2
M Struts File Upload problem Allgemeines EE 6
G Validierung mittels Struts. Benötige Hilfe. Allgemeines EE 7
J Buchempfehlung: Servlets, JSP, Struts, JSTL Allgemeines EE 3
P struts "beliebige motive in der datenbank finden" Allgemeines EE 6
P Struts und Frames Allgemeines EE 13
L jfreechart und Struts / JSPs Allgemeines EE 3
P struts Hibernate MySQL Select Statement Allgemeines EE 24
P keine verbindung vom struts framework zu mysql Allgemeines EE 2
R Vernünftige Session-Verwaltung mit Struts Allgemeines EE 4
P Struts Anwendung- FormBean Tabelle mit input type=text Allgemeines EE 2
G Probleme mit Validierung (Struts, validation.xml) Allgemeines EE 4
M Struts - ActionForward Allgemeines EE 9
clemson gesplittete struts-config mittels ant zusammenbauen Allgemeines EE 2
J Struts Textfeld Allgemeines EE 10
M Struts shale Allgemeines EE 7
M Struts - jsp site - werte formatieren Allgemeines EE 6
clemson mehrere Mail Attachments - JSP Struts Allgemeines EE 7
T JSTL + Struts (inkl.Hibernate) -> forEach Problem Allgemeines EE 6
R Struts FormBean Allgemeines EE 4
S Struts 1.1 download einer Datei Allgemeines EE 4
R Use bean in scriptlet in struts Allgemeines EE 4
S reagieren auf select events in jsp-struts seiten Allgemeines EE 5
P Struts - Text formatieren Allgemeines EE 6
C Grafische Komponenten unter Struts jsp (Liste) Allgemeines EE 4
P Struts - Abarbeitung Allgemeines EE 3
P J2EE Struts - Database connection failed - Hilfe?:( Allgemeines EE 6
P J2EE Struts Allgemeines EE 2
R struts 1.0.2 Checkbox-Property bleibt immer false Allgemeines EE 3
TRunKX Werteübergabe von einer *.jsp in eine *.java ohne struts Allgemeines EE 4
clemson [Struts] Validierung server-seitig bringt StackOverflowError Allgemeines EE 5
clemson [Struts] HTML-Checkbox Tag ID Allgemeines EE 2
clemson [Struts] Einer Action Parameter übergeben Allgemeines EE 2
clemson [Struts] Innerhalb Action auf form zugreifen Allgemeines EE 4
G In einer JSP auf Struts-Elemente "reagieren" Allgemeines EE 4
clemson [Struts] struts-config.xml parsen Allgemeines EE 2
clemson [Struts] Parameter an ActionForward anhängen Allgemeines EE 3
clemson [Struts] TilesRequestProcessor - processRoles Allgemeines EE 14
F Struts Allgemeines EE 9
G Struts-Write Anweisungen in Hyperlink einbauen Allgemeines EE 3
G Struts-Form: in validate- oder reset-Methode umleiten. Allgemeines EE 3
G Listenfeld mit Struts und Beans realisieren Allgemeines EE 4
L Anfänger: suche Tutorials zu Struts/EJB Allgemeines EE 6
G Struts - dynamisches FormBean Allgemeines EE 3
R struts und Mapped Properties Allgemeines EE 2
A Javadocs zu struts Allgemeines EE 5
A Kolloquium J2EE / Struts Allgemeines EE 16
A Expression Language in Struts? Allgemeines EE 6
A Form Validierung mit Struts? Allgemeines EE 2
A struts: html:form-tag das Attribut "name" ersetzen Allgemeines EE 7
B struts - beginnerproblem Allgemeines EE 3
B Struts DBCP Allgemeines EE 4

Ähnliche Java Themen

Neue Themen


Oben