[pmwiki-devel] Help with understanding an authentication problem
Peter Bowers
pbowers at pobox.com
Sun May 24 02:40:22 CDT 2009
On Sun, May 24, 2009 at 1:53 AM, John Rankin <john.rankin at affinity.co.nz>wrote:
> It seems to me that we ought to be able to define a custom
> $AuthFunction that checks the IP address of the requestor,
> rather than asking for a username and password. Then the
> custom auth function can authenticate the request based on
> the fact that it comes from an IP address pmwiki trusts.
> It may have to grant "admin" rights, especially where the
> request is retrieving multiple pmwiki pages.
>
Something along these lines might work (UNTESTED - basically just making a
wrapper for PmWikiAuth())...
$AuthFunction = 'MyAuthFunction';
$PrivilegedIP = array('/^100\.100\.100\.[0-9]*$/', '/^89\.90\.91\.92$/');
function MyAuthFunction($pagename, $level, $authprompt, $since)
{
global $PrivilegedIP;
if (!in_array($action, array('edit', 'attr')))
foreach ($PrivilegedIP as $IPPat)
if (preg_match($IPPat, $_SERVER['REMOTE_ADDR']))
return true;
return PmWikiAuth($pagename, $level, $authprompt, $since);
}
You'll note I've made a quick attempt to disallow editing and
attribute-setting using this "Privileged IP" authentication. If that's not
desirable then just delete the line with "if (!in_array...". If there are
other actions I'm thinking of that should not be available then just edit
the array (or, better yet, change it into a configurable var).
I *think* I've read that $_SERVER['REMOTE_ADDR'] can be spoofed, so be aware
that this opens a potential security hole. That's why I've made a
rudimentary effort to allow only browsing using this form of authentication.
-Peter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.pmichaud.com/pipermail/pmwiki-devel/attachments/20090524/30480a10/attachment.html
More information about the pmwiki-devel
mailing list