Skip to content
Snippets Groups Projects
Commit d7554c0b authored by Andreas Gohr's avatar Andreas Gohr
Browse files

Added CRSF security token checks in ACL plugin

parent 49eb6e38
No related branches found
No related tags found
No related merge requests found
...@@ -31,7 +31,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { ...@@ -31,7 +31,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
return array( return array(
'author' => 'Andreas Gohr', 'author' => 'Andreas Gohr',
'email' => 'andi@splitbrain.org', 'email' => 'andi@splitbrain.org',
'date' => '2009-08-07', 'date' => '2010-01-17',
'name' => 'ACL Manager', 'name' => 'ACL Manager',
'desc' => 'Manage Page Access Control Lists', 'desc' => 'Manage Page Access Control Lists',
'url' => 'http://dokuwiki.org/plugin:acl', 'url' => 'http://dokuwiki.org/plugin:acl',
...@@ -67,6 +67,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { ...@@ -67,6 +67,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
// fresh 1:1 copy without replacements // fresh 1:1 copy without replacements
$AUTH_ACL = file(DOKU_CONF.'acl.auth.php'); $AUTH_ACL = file(DOKU_CONF.'acl.auth.php');
// namespace given? // namespace given?
if($_REQUEST['ns'] == '*'){ if($_REQUEST['ns'] == '*'){
$this->ns = '*'; $this->ns = '*';
...@@ -89,7 +90,8 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { ...@@ -89,7 +90,8 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
} }
// handle modifications // handle modifications
if(isset($_REQUEST['cmd'])){ if(isset($_REQUEST['cmd']) && checkSecurityToken()){
// scope for modifications // scope for modifications
if($this->ns){ if($this->ns){
if($this->ns == '*'){ if($this->ns == '*'){
...@@ -310,6 +312,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { ...@@ -310,6 +312,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
echo '<input type="hidden" name="id" value="'.hsc($ID).'" />'.NL; echo '<input type="hidden" name="id" value="'.hsc($ID).'" />'.NL;
echo '<input type="hidden" name="do" value="admin" />'.NL; echo '<input type="hidden" name="do" value="admin" />'.NL;
echo '<input type="hidden" name="page" value="acl" />'.NL; echo '<input type="hidden" name="page" value="acl" />'.NL;
echo '<input type="hidden" name="sectok" value="'.getSecurityToken().'" />'.NL;
echo '</div></form>'.NL; echo '</div></form>'.NL;
} }
...@@ -480,11 +483,11 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { ...@@ -480,11 +483,11 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
$alt = '+'; $alt = '+';
} }
$ret .= '<img src="'.$img.'" alt="'.$alt.'" />'; $ret .= '<img src="'.$img.'" alt="'.$alt.'" />';
$ret .= '<a href="'.wl('',$this->_get_opts(array('ns'=>$item['id']))).'" class="idx_dir'.$cl.'">'; $ret .= '<a href="'.wl('',$this->_get_opts(array('ns'=>$item['id'],'sectok'=>getSecurityToken()))).'" class="idx_dir'.$cl.'">';
$ret .= $base; $ret .= $base;
$ret .= '</a>'; $ret .= '</a>';
}else{ }else{
$ret .= '<a href="'.wl('',$this->_get_opts(array('id'=>$item['id'],'ns'=>''))).'" class="wikilink1'.$cl.'">'; $ret .= '<a href="'.wl('',$this->_get_opts(array('id'=>$item['id'],'ns'=>'','sectok'=>getSecurityToken()))).'" class="wikilink1'.$cl.'">';
$ret .= noNS($item['id']); $ret .= noNS($item['id']);
$ret .= '</a>'; $ret .= '</a>';
} }
...@@ -562,6 +565,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { ...@@ -562,6 +565,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
echo '<input type="hidden" name="acl_w" value="'.hsc($this->who).'" />'.NL; echo '<input type="hidden" name="acl_w" value="'.hsc($this->who).'" />'.NL;
echo '<input type="hidden" name="do" value="admin" />'.NL; echo '<input type="hidden" name="do" value="admin" />'.NL;
echo '<input type="hidden" name="page" value="acl" />'.NL; echo '<input type="hidden" name="page" value="acl" />'.NL;
echo '<input type="hidden" name="sectok" value="'.getSecurityToken().'" />'.NL;
echo '<table class="inline">'; echo '<table class="inline">';
echo '<tr>'; echo '<tr>';
echo '<th>'.$this->getLang('where').'</th>'; echo '<th>'.$this->getLang('where').'</th>';
......
...@@ -19,11 +19,11 @@ require_once(DOKU_INC.'inc/auth.php'); ...@@ -19,11 +19,11 @@ require_once(DOKU_INC.'inc/auth.php');
//close session //close session
session_write_close(); session_write_close();
if(!auth_isadmin()) die('forbidden'); if(!auth_isadmin()) die('for admins only');
if(!checkSecurityToken()) die('CRSF Attack');
$ID = getID(); $ID = getID();
if(!auth_isadmin) die('for admins only');
require_once(DOKU_INC.'inc/pluginutils.php'); require_once(DOKU_INC.'inc/pluginutils.php');
require_once(DOKU_INC.'inc/html.php'); require_once(DOKU_INC.'inc/html.php');
$acl = plugin_load('admin','acl'); $acl = plugin_load('admin','acl');
......
...@@ -48,7 +48,8 @@ acl = { ...@@ -48,7 +48,8 @@ acl = {
data[1] = ajax.encVar('id',frm.elements['id'].value); data[1] = ajax.encVar('id',frm.elements['id'].value);
data[2] = ajax.encVar('acl_t',frm.elements['acl_t'].value); data[2] = ajax.encVar('acl_t',frm.elements['acl_t'].value);
data[3] = ajax.encVar('acl_w',frm.elements['acl_w'].value); data[3] = ajax.encVar('acl_w',frm.elements['acl_w'].value);
data[4] = ajax.encVar('ajax','info'); data[4] = ajax.encVar('sectok',frm.elements['sectok'].value);
data[5] = ajax.encVar('ajax','info');
ajax.elementObj = $('acl__info'); ajax.elementObj = $('acl__info');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment