From 422de35e3c3141e418a73bfb39b430d5fd74077e Mon Sep 17 00:00:00 2001 From: Kai Reinhard Date: Fri, 6 Dec 2013 00:14:24 +0100 Subject: [PATCH] CSRF protection. --- .../org/projectforge/web/admin/SetupForm.java | 15 +++++++++++++++ .../projectforge/web/admin/SetupImportForm.java | 14 ++++++++++++++ .../org/projectforge/web/admin/SetupPage.html | 2 ++ .../web/admin/SystemUpdateForm.java | 14 ++++++++++++++ .../web/admin/SystemUpdatePage.html | 1 + .../org/projectforge/web/core/NavTopPanel.html | 1 + .../org/projectforge/web/core/NavTopPanel.java | 8 ++++++++ .../projectforge/web/dialog/ModalDialog.html | 5 ++++- .../projectforge/web/dialog/ModalDialog.java | 15 +++++++++++++++ .../web/fibu/RechnungCostEditTablePanel.html | 5 ++++- .../web/fibu/RechnungCostEditTablePanel.java | 17 ++++++++++++++++- .../web/mobile/AbstractMobileEditForm.java | 14 ++++++++++++++ .../web/mobile/AbstractMobileEditPage.html | 1 + .../web/mobile/AbstractMobileListForm.java | 14 ++++++++++++++ .../web/mobile/AbstractMobileListPage.html | 17 ++++++++++------- .../org/projectforge/web/task/TaskTreeForm.java | 11 ++++++++++- .../org/projectforge/web/task/TaskTreePage.html | 1 + .../web/wicket/CsrfTokenHandler.java | 12 ++++++------ .../wicket/components/DropFileContainer.html | 6 ++++-- .../wicket/components/DropFileContainer.java | 12 +++++++++++- 20 files changed, 165 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/projectforge/web/admin/SetupForm.java b/src/main/java/org/projectforge/web/admin/SetupForm.java index 23bf99459..dc44fcefc 100644 --- a/src/main/java/org/projectforge/web/admin/SetupForm.java +++ b/src/main/java/org/projectforge/web/admin/SetupForm.java @@ -40,6 +40,7 @@ import org.projectforge.database.InitDatabaseDao; import org.projectforge.user.UserDao; import org.projectforge.web.wicket.AbstractForm; +import org.projectforge.web.wicket.CsrfTokenHandler; import org.projectforge.web.wicket.WicketUtils; import org.projectforge.web.wicket.bootstrap.GridBuilder; import org.projectforge.web.wicket.components.MaxLengthTextField; @@ -86,9 +87,15 @@ public class SetupForm extends AbstractForm private String encryptedPassword; + /** + * Cross site request forgery token. + */ + private final CsrfTokenHandler csrfTokenHandler; + public SetupForm(final SetupPage parentPage) { super(parentPage, "setupform"); + csrfTokenHandler = new CsrfTokenHandler(this); } @Override @@ -227,6 +234,7 @@ public void validate(final IValidatable validatable) @Override public final void onSubmit() { + csrfTokenHandler.onSubmit(); parentPage.finishSetup(); } }; @@ -237,6 +245,13 @@ public final void onSubmit() } } + @Override + protected void onSubmit() + { + super.onSubmit(); + csrfTokenHandler.onSubmit(); + } + public SetupTarget getSetupMode() { return setupMode; diff --git a/src/main/java/org/projectforge/web/admin/SetupImportForm.java b/src/main/java/org/projectforge/web/admin/SetupImportForm.java index f4df9dd9c..d2a50d017 100644 --- a/src/main/java/org/projectforge/web/admin/SetupImportForm.java +++ b/src/main/java/org/projectforge/web/admin/SetupImportForm.java @@ -29,6 +29,7 @@ import org.apache.wicket.model.Model; import org.apache.wicket.util.lang.Bytes; import org.projectforge.web.wicket.AbstractForm; +import org.projectforge.web.wicket.CsrfTokenHandler; import org.projectforge.web.wicket.bootstrap.GridBuilder; import org.projectforge.web.wicket.components.SingleButtonPanel; import org.projectforge.web.wicket.flowlayout.FieldsetPanel; @@ -42,10 +43,23 @@ public class SetupImportForm extends AbstractForm protected String filename; + /** + * Cross site request forgery token. + */ + private final CsrfTokenHandler csrfTokenHandler; + public SetupImportForm(final SetupPage parentPage) { super(parentPage, "importform"); initUpload(Bytes.megabytes(100)); + csrfTokenHandler = new CsrfTokenHandler(this); + } + + @Override + protected void onSubmit() + { + super.onSubmit(); + csrfTokenHandler.onSubmit(); } @Override diff --git a/src/main/java/org/projectforge/web/admin/SetupPage.html b/src/main/java/org/projectforge/web/admin/SetupPage.html index 2a1333f30..67f79c790 100644 --- a/src/main/java/org/projectforge/web/admin/SetupPage.html +++ b/src/main/java/org/projectforge/web/admin/SetupPage.html @@ -21,6 +21,7 @@
[action buttons]
+ @@ -32,6 +33,7 @@
[action buttons]
+ diff --git a/src/main/java/org/projectforge/web/admin/SystemUpdateForm.java b/src/main/java/org/projectforge/web/admin/SystemUpdateForm.java index 34e9bbd9e..e8ed6aec9 100644 --- a/src/main/java/org/projectforge/web/admin/SystemUpdateForm.java +++ b/src/main/java/org/projectforge/web/admin/SystemUpdateForm.java @@ -38,6 +38,7 @@ import org.projectforge.continuousdb.UpdatePreCheckStatus; import org.projectforge.web.HtmlHelper; import org.projectforge.web.wicket.AbstractForm; +import org.projectforge.web.wicket.CsrfTokenHandler; import org.projectforge.web.wicket.bootstrap.GridBuilder; import org.projectforge.web.wicket.components.SingleButtonPanel; import org.projectforge.web.wicket.flowlayout.CheckBoxPanel; @@ -54,6 +55,11 @@ public class SystemUpdateForm extends AbstractFormUpdate scripts
[action buttons]
+ diff --git a/src/main/java/org/projectforge/web/core/NavTopPanel.html b/src/main/java/org/projectforge/web/core/NavTopPanel.html index 19498d2f9..eb1079824 100644 --- a/src/main/java/org/projectforge/web/core/NavTopPanel.html +++ b/src/main/java/org/projectforge/web/core/NavTopPanel.html @@ -39,6 +39,7 @@