Skip to content

Commit 45298b4

Browse files
committed
ADMINTOOL-92: Add a form token check to Query tools
1 parent 03815c5 commit 45298b4

File tree

3 files changed

+20
-11
lines changed

3 files changed

+20
-11
lines changed

src/main/resources/Admin/Query.xml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,16 @@
4545
#if($hasProgramming)
4646
#set($sqlTools = $xwiki.parseGroovyFromPage('Admin.SQLToolsGroovy'))
4747
= Query =
48-
$sqlTools.getForm($request, $doc, true, true, $xcontext)
48+
$sqlTools.getForm($request, $doc, true, true, $xcontext, $services.csrf.token)
4949
#if($request.query)
50-
#set($connection = $sqlTools.getConnectionFromRequest($request))
51-
#set($results = $sqlTools.getResults($connection, $request.query, true))
52-
= Results =
53-
$results
50+
#if ($services.csrf.isTokenValid($request.getParameter('form_token')))
51+
#set($connection = $sqlTools.getConnectionFromRequest($request))
52+
#set($results = $sqlTools.getResults($connection, $request.query, true))
53+
= Results =
54+
$results
55+
#else
56+
{{error}}Invalid form token. Please verify the query and resubmit.{{/error}}
57+
#end
5458
#end
5559
#else
5660
{{error}}Sorry, you need the programming rights to use this tool{{/error}}

src/main/resources/Admin/QueryOnXWiki.xml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,16 @@
4747
#set($system = $sqlTools.getXWikiDatabaseSystem($xwiki, $xcontext))
4848
= Query =
4949
Your database is: **$system**
50-
$sqlTools.getForm($request, $doc, false, true, $xcontext)
50+
$sqlTools.getForm($request, $doc, false, true, $xcontext, $services.csrf.token)
5151
#if($request.query)
52-
#set($connection = $sqlTools.getXWikiConnection($xwiki, $xcontext))
53-
#set($results = $sqlTools.getResults($connection, $request.query, false))
54-
= Results =
55-
$results
52+
#if ($services.csrf.isTokenValid($request.getParameter('form_token')))
53+
#set($connection = $sqlTools.getXWikiConnection($xwiki, $xcontext))
54+
#set($results = $sqlTools.getResults($connection, $request.query, false))
55+
= Results =
56+
$results
57+
#else
58+
{{error}}Invalid form token. Please verify the query and resubmit.{{/error}}
59+
#end
5660
#end
5761
#else
5862
{{error}}Sorry, you need the programming rights to use this tool{{/error}}

src/main/resources/Admin/SQLToolsGroovy.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ class SQLTools{
114114
/**
115115
* Get Form
116116
*/
117-
String getForm(request, doc, withJDBCForm, withQuery, xcontext){
117+
String getForm(request, doc, withJDBCForm, withQuery, xcontext, csrfToken){
118118
def databaseConfiguration = new DatabaseConfiguration(request, xcontext)
119119
def escapeTool = new EscapeTool()
120120
def spageUrl = escapeTool.xml(doc.getURL())
@@ -123,6 +123,7 @@ class SQLTools{
123123
def toReturn = """
124124
{{html clean=="false"}}
125125
<form action="${spageUrl}#HResults" class="xform" method="post">
126+
<input type="hidden" name="form_token" value="${csrfToken}" />
126127
""";
127128
// JDB Form (user, password driver, url)
128129
if(withJDBCForm){

0 commit comments

Comments
 (0)