add security considerations to plugins.txt
authorkink <kink@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Tue, 14 Jun 2005 10:39:45 +0000 (10:39 +0000)
committerkink <kink@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Tue, 14 Jun 2005 10:39:45 +0000 (10:39 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@9604 7612ce4b-ef26-0410-bec9-ea0150e637f0

doc/Development/plugin.txt

index a51e405cb96f2c8d1c11a391fb0e553b74fb463b..7ab2dc0b6bd9f70dc7757c4fe9a407188bf84617 100644 (file)
@@ -1316,6 +1316,34 @@ scope automatically.  There is nothing more to do than this:
    sqgetGlobalVar('favorite_color', $favorite_color, SQ_FORM);
 
 
+Security considerations
+-----------------------
+
+All plugins should consider the security implications of their plugin.
+Of course, if you call external programs you have to use great care,
+but the following issues are important to nearly every plugin.
+
+- Escape any untrusted data before you output it. This is to prevent
+cross site scripting attachs. It means that you have to htmlspecialchar()
+every variable that comes in through the URL, a mail message or other
+external factors, before outputting it.
+
+- Make sure that your plugin doesn't perform its function when it's not
+enabled. If you just call hooks, your hooks won't be called when the
+plugin is disabled, but if you also supply extra .php files, you should
+check if they perform any function if accessed directly. If they do, you
+should check at the start of that file if the plugin is enabled in the
+config, and if not, exit the script. Example:
+  global $plugins;
+  if ( !in_array('mypluginname', $plugins) ) {
+      die("Plugin not enabled in SquirrelMail configuration.");
+  }
+
+If you have any questions about this or are unsure, please contact the
+mailinglist or IRC channel, because security is very important for a
+widely used application like SquirrelMail!
+
+
 Extra Blank Lines
 -----------------