Sites that are running with PHP's register_globals setting set to "On" and versions of PmWiki prior to 2.1.21 may be vulnerable to a botnet exploit that is taking advantage of a bug in PHP. The vulnerability can be closed by turning register_globals off, upgrading to PmWiki 2.1.21 or later, or upgrading to PHP versions 4.4.3 or 5.1.4. In addition, there is a test at PmWiki:SiteAnalyzer that can be used to determine if your site is vulnerable.
You don't want to resort to password protecting the entire wiki, that's not the point after all.
Ideally these protections will be invoked in config.php
how do I stop pages being deleted, eg password protect a page from deletion?
use Cookbook:DeleteAction and password protect the page deletion action? by adding $DefaultPasswords['delete'] = '*'; to config.php or password protect the action with $HandleAuth['delete'] = 'edit';
or $HandleAuth['delete'] = 'admin'; to require the edit or admin password respectively.
how do I stop pages being replaced with an empty (all spaces) page?
how do I stop pages being completely replaced by an inane comment such as excellent site, great information, where the content cannot be blocked?
Try using the newer automatic blocklists that pool information and IP addresses about known wiki defacers.
or
Try using Cookbook:Captchas or Cookbook:Captcha , (note these are different}
or
Set an edit password, but make it publicly available on the Site.AuthForm template.
how do I password protect all common pages in all groups such as recent changes, search, group header, group footer, and so on?
insert the following lines into your local/config.php file. Editing these pages then requires the admin password.
## Require admin password to edit RecentChanges (etc.) pages.
if ($action=='edit'
&& preg_match('/\\.(Search|Group(Header|Footer)|(All)?RecentChanges)$/', $pagename))
{ $DefaultPasswords['edit'] = crypt('secret phrase'); }
Note that all GroupAttributes pages are protected by the attr password.
Alternative:
I think because of my clean URLs setup I had to shorten the regular expression a little to make it work. furthermore I set the edit password for these pages to the admin password set in $DefaultPasswords['admin'] = crypt('secret phrase'); in local/config.php file:
## Require admin password to edit RecentChanges (etc.) pages.
if ($action=='edit'
&& preg_match('(Search|Group(Header|Footer)|(All)?RecentChanges)', $pagename))
{ $HandleAuth['edit'] = 'admin'; }
As far as I could see in my tests this seems to work for me as expected. --Rico, 2007-02-02
how do I password protect the creation of new groups?