<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Phild</id>
	<title>Joomla! Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Phild"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Phild"/>
	<updated>2026-06-23T09:26:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Htaccess_examples_(security)&amp;diff=104281</id>
		<title>Htaccess examples (security)</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Htaccess_examples_(security)&amp;diff=104281"/>
		<updated>2013-10-09T15:41:56Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* External links */ removed dead external links and updated other external links as necessary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{DISPLAYTITLE:htaccess examples (security)}}__TOC__&lt;br /&gt;
&#039;&#039;Credit for this .htaccess file goes to Ronald van den Heetkamp, Nicholas Dionysopoulos, g1smd, and others where listed&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Suggested Master htaccess file ==&lt;br /&gt;
&lt;br /&gt;
This can be discussed in [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=549841&amp;amp;start=330#p2555002 this forum topic]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning: Read the hashed areas! Incorrect settings on some servers may cause 500 page errors. The only way to figure out which rule(s) or section(s) are causing the errors is by trial and error.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This .htaccess file is not meant to be just dropped in your site. You should go through all sections and modify the file to match your site. Most notably, all instances of example.com and example\.com should be replaced with your real domain name. Some sections may cause problems with legitimate requests.&lt;br /&gt;
&lt;br /&gt;
You are ultimately responsible for disabling sections or writing exception rules for legitimate requests that fail. Most notably, the advanced server protection section will cause issues with several minifiers, eXtplorer, VirtueMart and other extensions which use non-standard scripts as their entry points. You must add exceptions manually to the proper area of the file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
###############################################################################&lt;br /&gt;
## The Master .htaccess&lt;br /&gt;
##&lt;br /&gt;
## Version 2.5 (proposed) - May 16th, 2011&lt;br /&gt;
##&lt;br /&gt;
## ----------&lt;br /&gt;
## This file is designed to be the template .htaccess file to put on your new&lt;br /&gt;
## sites, increasing your site&#039;s security and performance. It is not meant to&lt;br /&gt;
## be just dropped in your site, though. You should go through all of its&lt;br /&gt;
## sections and modify it to match your site. Most notably, all instances of&lt;br /&gt;
## example.com and example\.com should be replaced with your real domain name.&lt;br /&gt;
##&lt;br /&gt;
## Some sections are too picky and may cause problems with legitimate requests.&lt;br /&gt;
## You are ultimately responsible for disabling them or writing exception rules&lt;br /&gt;
## for your requests. Most notably, the advanced server protection section will&lt;br /&gt;
## cause issues with several minifiers, eXtplorer, VirtueMart and other exten-&lt;br /&gt;
## sions which use non-standard scripts as their entry points. You must add&lt;br /&gt;
## exceptions for them manually.&lt;br /&gt;
##&lt;br /&gt;
## Some sections - depending on your server configuration - may cause your site&lt;br /&gt;
## to throw 500 Internal Server Error. The only way to figure out which one is&lt;br /&gt;
## causing it is trial and error.&lt;br /&gt;
##&lt;br /&gt;
## Big thank you&#039;s to Brian Teeman, Ken Crowder, Radek Suski and Fotis&lt;br /&gt;
## Evangelou for sharing their .htaccess rules with the world and inspiring&lt;br /&gt;
## the creation of this file. Special thanks to Jon Brown for sharing his&lt;br /&gt;
## research and helping me improve this file.&lt;br /&gt;
##&lt;br /&gt;
## Additional thank-yous to John for his remarks and g1smd for taking the&lt;br /&gt;
## time to optimize the speed of the file.&lt;br /&gt;
##&lt;br /&gt;
## It is usually prudent to remove the comments from the file when using it&lt;br /&gt;
## on a live host to minimize the parsing time.&lt;br /&gt;
##&lt;br /&gt;
## ----------------------------------------------------------------------&lt;br /&gt;
## Do you want to customize this .htaccess file with a few clicks?&lt;br /&gt;
## Admin Tools Professional by AkeebaBackup.com does this and much more.&lt;br /&gt;
##&lt;br /&gt;
## Learn more: http://www.akeebabackup.com/software/admin-tools.html&lt;br /&gt;
## ----------------------------------------------------------------------&lt;br /&gt;
##&lt;br /&gt;
## Have fun, stay safe.&lt;br /&gt;
##&lt;br /&gt;
## Nicholas K. Dionysopoulos&lt;br /&gt;
## Lead Developer, AkeebaBackup.com&lt;br /&gt;
##&lt;br /&gt;
## CHANGELOG:&lt;br /&gt;
## Version 2.5 (proposed) (May 16th, 2011)&lt;br /&gt;
## - Placeholders for custom code. Correction of ruleset ordering.&lt;br /&gt;
## Version 2.4 (April 18th, 2011)&lt;br /&gt;
## - Dozens of speed optimisations and many logic and syntax corrections.&lt;br /&gt;
## Version 2.3 (November 18th, 2010)&lt;br /&gt;
## - Added .ico to the pass-through rules, for favicons to load&lt;br /&gt;
## Version 2.2 (October 25th, 2010)&lt;br /&gt;
## - Bug in the tmpl=component rule&lt;br /&gt;
## Version 2.1 (October 19th, 2010)&lt;br /&gt;
## - index.php to root redirection would kill some AJAX requests&lt;br /&gt;
## - Referer filtering was screwed up&lt;br /&gt;
## - Simplified and more thorough PHP Easter Egg code (thanks Jon!)&lt;br /&gt;
## - The tp/template/tmpl filter was not thorough and killed some components&lt;br /&gt;
## - Optimized Joomla! core SEF section&lt;br /&gt;
## - Bot filters and GZip optimization would never run for dynamic content&lt;br /&gt;
## - Content expiration optimization got more optimized&lt;br /&gt;
## - Added ETag rule&lt;br /&gt;
##&lt;br /&gt;
###############################################################################&lt;br /&gt;
&lt;br /&gt;
########## Begin - RewriteEngine enabled&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
########## End - RewriteEngine enabled&lt;br /&gt;
&lt;br /&gt;
########## Begin - RewriteBase&lt;br /&gt;
# Uncomment following line if your webserver&#039;s URL&lt;br /&gt;
# is not directly related to physical file paths.&lt;br /&gt;
# Update Your Joomla! Directory (just / for root)&lt;br /&gt;
&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
########## End - RewriteBase&lt;br /&gt;
&lt;br /&gt;
########## Begin - No directory listings&lt;br /&gt;
## Note: +FollowSymlinks may cause problems and you might have to remove it&lt;br /&gt;
IndexIgnore *&lt;br /&gt;
Options +FollowSymLinks All -Indexes&lt;br /&gt;
########## End - No directory listings&lt;br /&gt;
&lt;br /&gt;
########## Begin - File execution order, by Komra.de&lt;br /&gt;
DirectoryIndex index.php index.html&lt;br /&gt;
########## End - File execution order&lt;br /&gt;
&lt;br /&gt;
########## Begin - ETag Optimization&lt;br /&gt;
## This rule will create an ETag for files based only on the modification&lt;br /&gt;
## timestamp and their size. This works wonders if you are using rsync&#039;ed&lt;br /&gt;
## servers, where the inode number of identical files differs.&lt;br /&gt;
## Note: It may cause problems on your server and you may need to remove it&lt;br /&gt;
FileETag MTime Size&lt;br /&gt;
########## End - ETag Optimization&lt;br /&gt;
&lt;br /&gt;
########## Begin - Common hacking tools and bandwidth hoggers block&lt;br /&gt;
## By SigSiu.net and @nikosdion.&lt;br /&gt;
# This line also disables Akeeba Remote Control 2.5 and earlier&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Indy Library&amp;quot; stayout=1&lt;br /&gt;
# WARNING: Disabling wget will also block the most common method for&lt;br /&gt;
# running CRON jobs. Remove if you have issues with CRON jobs.&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Wget&amp;quot; stayout=1&lt;br /&gt;
# The following rules are for bandwidth-hogging download tools&lt;br /&gt;
SetEnvIf user-agent &amp;quot;libwww-perl&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Download Demon&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;GetRight&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;GetWeb!&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Go!Zilla&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Go-Ahead-Got-It&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;GrabNet&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;TurnitinBot&amp;quot; stayout=1&lt;br /&gt;
# This line denies access to all of the above tools&lt;br /&gt;
deny from env=stayout&lt;br /&gt;
########## End - Common hacking tools and bandwidth hoggers block&lt;br /&gt;
&lt;br /&gt;
########## Begin - Automatic compression of resources&lt;br /&gt;
# Compress text, html, javascript, css, xml, kudos to Komra.de&lt;br /&gt;
# May kill access to your site for old versions of Internet Explorer&lt;br /&gt;
# The server needs to be compiled with mod_deflate otherwise it will send HTTP 500 Error.&lt;br /&gt;
# mod_deflate is not available on Apache 1.x series. Can only be used with Apache 2.x server.&lt;br /&gt;
# AddOutputFilterByType is now deprecated by Apache. Use mod_filter in the future.&lt;br /&gt;
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript&lt;br /&gt;
########## End - Automatic compression of resources&lt;br /&gt;
&lt;br /&gt;
########## Begin - Add optional bad user agent or IP blocking code&lt;br /&gt;
#&lt;br /&gt;
# If you need to block certain user agents or IP addresses and&lt;br /&gt;
# other signatures, place that code here. Ensure the rules use&lt;br /&gt;
# the correct RewriteRule syntax and the [F] flag.&lt;br /&gt;
#&lt;br /&gt;
########## End - Add optional bad user agent or IP blocking code&lt;br /&gt;
&lt;br /&gt;
########## Begin - Rewrite rules to block out some common exploits&lt;br /&gt;
## If you experience problems on your site block out the operations listed below&lt;br /&gt;
## This attempts to block the most common type of exploit `attempts` to Joomla!&lt;br /&gt;
#&lt;br /&gt;
# If the request query string contains /proc/self/environ (by SigSiu.net)&lt;br /&gt;
RewriteCond %{QUERY_STRING} proc/self/environ [OR]&lt;br /&gt;
# Block out any script trying to set a mosConfig value through the URL&lt;br /&gt;
# (these attacks wouldn&#039;t work w/out Joomla! 1.5&#039;s Legacy Mode plugin)&lt;br /&gt;
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]&lt;br /&gt;
# Block out any script trying to base64_encode or base64_decode data within the URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [OR]&lt;br /&gt;
## IMPORTANT: If the above line throws an HTTP 500 error, replace it with these 2 lines:&lt;br /&gt;
# RewriteCond %{QUERY_STRING} base64_encode\(.*\) [OR]&lt;br /&gt;
# RewriteCond %{QUERY_STRING} base64_decode\(.*\) [OR]&lt;br /&gt;
# Block out any script that includes a &amp;lt;script&amp;gt; tag in URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} (&amp;lt;|%3C)([^s]*s)+cript.*(&amp;gt;|%3E) [NC,OR]&lt;br /&gt;
# Block out any script trying to set a PHP GLOBALS variable via URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]&lt;br /&gt;
# Block out any script trying to modify a _REQUEST variable via URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})&lt;br /&gt;
# Return 403 Forbidden header and show the content of the root homepage&lt;br /&gt;
RewriteRule .* index.php [F]&lt;br /&gt;
#&lt;br /&gt;
########## End - Rewrite rules to block out some common exploits&lt;br /&gt;
&lt;br /&gt;
########## Begin - File injection protection, by SigSiu.net&lt;br /&gt;
RewriteCond %{REQUEST_METHOD} GET&lt;br /&gt;
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
########## End - File injection protection&lt;br /&gt;
&lt;br /&gt;
########## Begin - Basic antispam Filter, by SigSiu.net&lt;br /&gt;
## I removed some common words, tweak to your liking&lt;br /&gt;
## This code uses PCRE and works only with Apache 2.x.&lt;br /&gt;
## This code will NOT work with Apache 1.x servers.&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(ambien|blue\spill|cialis|cocaine|ejaculation|erectile)\b [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(erections|hoodia|huronriveracres|impotence|levitra|libido)\b [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)\b [NC]&lt;br /&gt;
## Note: The final RewriteCond must NOT use the [OR] flag.&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
## Note: The previous lines are a &amp;quot;compressed&amp;quot; version&lt;br /&gt;
## of the filters. You can add your own filters as:&lt;br /&gt;
## RewriteCond %{QUERY_STRING} \bbadword\b [NC,OR]&lt;br /&gt;
## where &amp;quot;badword&amp;quot; is the word you want to exclude.&lt;br /&gt;
########## End - Basic antispam Filter, by SigSiu.net&lt;br /&gt;
&lt;br /&gt;
########## Begin - Advanced server protection - query strings, referrer and config&lt;br /&gt;
# Advanced server protection, version 3.2 - May 2011&lt;br /&gt;
# by Nicholas K. Dionysopoulos&lt;br /&gt;
&lt;br /&gt;
## Disallow PHP Easter Eggs (can be used in fingerprinting attacks to determine&lt;br /&gt;
## your PHP version). See http://www.0php.com/php_easter_egg.php and&lt;br /&gt;
## http://osvdb.org/12184 for more information&lt;br /&gt;
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
&lt;br /&gt;
## SQLi first line of defense, thanks to Radek Suski (SigSiu.net) @&lt;br /&gt;
## http://www.sigsiu.net/presentations/fortifying_your_joomla_website.html&lt;br /&gt;
## May cause problems on legitimate requests&lt;br /&gt;
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
&lt;br /&gt;
## Referrer filtering for common media files. Replace with your own domain name.&lt;br /&gt;
## This blocks most common fingerprinting attacks ;)&lt;br /&gt;
## Note: Change www\.example\.com with your own domain name, substituting the&lt;br /&gt;
## dots with \.  i.e. use www\.example\.com for www.example.com&lt;br /&gt;
RewriteRule ^images/stories/([^/]+/)*([^/.]+\.)+(jp(e?g|2)?|png|gif|bmp|css|js|swf|ico)$ - [L]&lt;br /&gt;
RewriteCond %{HTTP_REFERER} .&lt;br /&gt;
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} -f&lt;br /&gt;
RewriteRule \.(jp(e?g|2)?|png|gif|bmp|css|js|swf|ico)$ - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow visual fingerprinting of Joomla! sites (module position dump)&lt;br /&gt;
## Initial idea by Brian Teeman and Ken Crowder, see:&lt;br /&gt;
## http://www.slideshare.net/brianteeman/hidden-joomla-secrets&lt;br /&gt;
## Improved by @nikosdion to work more efficiently and handle template&lt;br /&gt;
## and tmpl query parameters&lt;br /&gt;
RewriteCond %{QUERY_STRING} (^|&amp;amp;)tmpl=(component|system) [NC]&lt;br /&gt;
RewriteRule .* - [L]&lt;br /&gt;
RewriteCond %{QUERY_STRING} (^|&amp;amp;)t(p|emplate|mpl)= [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow access to htaccess.txt, configuration.php, configuration.php-dist and php.ini&lt;br /&gt;
RewriteRule ^(htaccess\.txt|configuration\.php(-dist)?|php\.ini)$ - [F]&lt;br /&gt;
&lt;br /&gt;
########## End - Advanced server protection - query strings, referrer and config&lt;br /&gt;
&lt;br /&gt;
########## Begin - Advanced server protection rules exceptions ####&lt;br /&gt;
##&lt;br /&gt;
## These are sample exceptions to the Advanced Server Protection 3.1&lt;br /&gt;
## rule set further down this file.&lt;br /&gt;
##&lt;br /&gt;
## Allow UddeIM CAPTCHA&lt;br /&gt;
RewriteRule ^components/com_uddeim/captcha15\.php$ - [L]&lt;br /&gt;
## Allow Phil Taylor&#039;s Turbo Gears&lt;br /&gt;
RewriteRule ^plugins/system/GoogleGears/gears-manifest\.php$ - [L]&lt;br /&gt;
## Allow JoomlaWorks AllVideos&lt;br /&gt;
RewriteRule ^plugins/content/jw_allvideos/includes/jw_allvideos_scripts\.php$ - [L]&lt;br /&gt;
## Allow Admin Tools Joomla! updater to run&lt;br /&gt;
RewriteRule ^administrator/components/com_admintools/restore\.php$ - [L]&lt;br /&gt;
## Allow Akeeba Backup Professional&#039;s integrated restoration script to run&lt;br /&gt;
RewriteRule ^administrator/components/com_akeeba/restore\.php$ - [L]&lt;br /&gt;
## Allow Akeeba Kickstart&lt;br /&gt;
RewriteRule ^kickstart\.php$ - [L]&lt;br /&gt;
&lt;br /&gt;
# Add more rules to single PHP files here&lt;br /&gt;
&lt;br /&gt;
## Allow Agora attachments, but not PHP files in that directory!&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !(\.php)$&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} -f&lt;br /&gt;
RewriteRule ^components/com_agora/img/members/ - [L]&lt;br /&gt;
&lt;br /&gt;
# Add more rules for allowing full access (except PHP files) on more directories here&lt;br /&gt;
&lt;br /&gt;
## Uncomment to allow full access to the cache directory (strongly not recommended!)&lt;br /&gt;
#RewriteRule ^cache/ - [L]&lt;br /&gt;
## Uncomment to allow full access to the tmp directory (strongly not recommended!)&lt;br /&gt;
#RewriteRule ^tmp/ - [L]&lt;br /&gt;
&lt;br /&gt;
# Add more full access rules here&lt;br /&gt;
&lt;br /&gt;
########## End - Advanced server protection rules exceptions ####&lt;br /&gt;
&lt;br /&gt;
########## Begin - Advanced server protection - paths and files&lt;br /&gt;
# Advanced server protection, version 3.2 - May 2011&lt;br /&gt;
# by Nicholas K. Dionysopoulos&lt;br /&gt;
&lt;br /&gt;
## Back-end protection&lt;br /&gt;
## This also blocks fingerprinting attacks browsing for XML and INI files&lt;br /&gt;
RewriteRule ^administrator/?$ - [L]&lt;br /&gt;
RewriteRule ^administrator/index\.(php|html?)$ - [L]&lt;br /&gt;
RewriteRule ^administrator/index[23]\.php$ - [L]&lt;br /&gt;
RewriteRule ^administrator/(components|modules|templates|images|plugins)/([^/]+/)*([^/.]+\.)+(jp(e?g|2)?|png|gif|bmp|css|js|swf|html?|mp(eg?|[34])|avi|wav|og[gv]|xlsx?|docx?|pptx?|zip|rar|pdf|xps|txt|7z|svg|od[tsp]|flv|mov)$ - [L]&lt;br /&gt;
RewriteRule ^administrator/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Explicitly allow access only to XML-RPC&#039;s xmlrpc/index.php or plain xmlrpc/ directory&lt;br /&gt;
RewriteRule ^xmlrpc/(index\.php)?$ - [L]&lt;br /&gt;
RewriteRule ^xmlrpc/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow front-end access for certain Joomla! system directories&lt;br /&gt;
RewriteRule ^includes/js/ - [L]&lt;br /&gt;
RewriteRule ^(cache|includes|language|libraries|logs|tmp)/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Allow limited access for certain Joomla! system directories with client-accessible content&lt;br /&gt;
RewriteRule ^(components|modules|plugins|templates)/([^/]+/)*([^/.]+\.)+(jp(e?g|2)?|png|gif|bmp|css|js|swf|html?|mp(eg?|[34])|avi|wav|og[gv]|xlsx?|docx?|pptx?|zip|rar|pdf|xps|txt|7z|svg|od[tsp]|flv|mov)$ - [L]&lt;br /&gt;
## Uncomment this line if you have extensions which require direct access to their own&lt;br /&gt;
## custom index.php files. Note that this is UNSAFE and the developer should be ashamed&lt;br /&gt;
## for being so lame, lazy and security unconscious.&lt;br /&gt;
# RewriteRule ^(components|modules|plugins|templates)/([^/]+/)*(index\.php)?$ - [L]&lt;br /&gt;
## Uncomment the following line if your template requires direct access to PHP files&lt;br /&gt;
## inside its directory, e.g. GZip compressed copies of its CSS files&lt;br /&gt;
# RewriteRule ^templates/([^/]+/)*([^/.]+\.)+php$ - [L]&lt;br /&gt;
RewriteRule ^(components|modules|plugins|templates)/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow access to rogue PHP files throughout the site, unless they are explicitly allowed&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} \.php$&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !/index[23]?\.php$&lt;br /&gt;
## The next line is to explicitly allow the forum post assistant(fpa-xx)script to run&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !/fpa-[a-z]{2}\.php&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} -f&lt;br /&gt;
RewriteRule ^([^/]+/)*([^/.]+\.)+php$ - [F]&lt;br /&gt;
&lt;br /&gt;
########## End - Advanced server protection - paths and files&lt;br /&gt;
&lt;br /&gt;
########## Begin - Google Apps redirection, by Komra.de&lt;br /&gt;
## Uncomment the following line to enable:&lt;br /&gt;
# RewriteRule ^mail http://mail.google.com/a/example.com [R=301,L]&lt;br /&gt;
## If the above doesn&#039;t work on your server, try this:&lt;br /&gt;
## RewriteRule ^mail http://mail.google.com/a/example.com [R,L]&lt;br /&gt;
########## End - Google Apps redirection&lt;br /&gt;
&lt;br /&gt;
########## Begin - Custom redirects&lt;br /&gt;
#&lt;br /&gt;
# If you need to redirect some pages, place that code here. Ensure those&lt;br /&gt;
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.&lt;br /&gt;
#&lt;br /&gt;
########## End - Custom redirects&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect (www.)olddomain.com to www.example.com&lt;br /&gt;
## Note: olddomain.com is your old domain name, you want to redirect FROM,&lt;br /&gt;
## whereas www.example.com is the new domain name you want to redirect TO.&lt;br /&gt;
## Change those names to reflect your current configuration. Remember, this&lt;br /&gt;
## small part of the file is supposed to be placed in www.olddomain.com!&lt;br /&gt;
## Note: Replace [R=301,L] with [R,L] if you get error 500.&lt;br /&gt;
## Uncomment the following lines to enable:&lt;br /&gt;
# RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com [NC]&lt;br /&gt;
# RewriteRule (.*) http://www.example.com/$1 [R=301,L]&lt;br /&gt;
## Note: The above section is only required if you are changing your domain name.&lt;br /&gt;
########## End - Redirect (www.)olddomain.com to www.example.com&lt;br /&gt;
&lt;br /&gt;
########## Begin - Force HTTPS for certain pages&lt;br /&gt;
# Force the page foobar.html to run in HTTPS mode, no matter what Joomla! says.&lt;br /&gt;
# This is a sample redirection for foobar.html. Do note that you have to change&lt;br /&gt;
# www.example.com to reflect your own domain. Remember to escape the dots using&lt;br /&gt;
# \. in the left hand side of each rule. You need BOTH LINES PER URL for the rule&lt;br /&gt;
# to work.&lt;br /&gt;
RewriteCond %{SERVER_PORT} !^443$&lt;br /&gt;
## Alternatively, comment the above line and uncomment the following line:&lt;br /&gt;
# RewriteCond %{HTTPS} ^off$ [NC]&lt;br /&gt;
RewriteRule ^foobar\.html$ https://www.example.com/foobar.html [R=301,L]&lt;br /&gt;
## NOTE: If you get an HTTP 500 error, please swap [R=301,L] with [R,L]&lt;br /&gt;
# Add more rules below this line as required&lt;br /&gt;
########## End - Force HTTPS for certain pages&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect index.php to /&lt;br /&gt;
## Note: Change example.com to reflect your own domain name&lt;br /&gt;
RewriteCond %{THE_REQUEST} !^POST&lt;br /&gt;
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/&lt;br /&gt;
RewriteCond %{SERVER_PORT}&amp;gt;s ^(443&amp;gt;(s)|[0-9]+&amp;gt;s)$&lt;br /&gt;
RewriteRule ^index\.php$ http%2://www.example.com/$1 [R=301,L]&lt;br /&gt;
## If the above line throws a 500 error, change [R=301,L] to [R,L]&lt;br /&gt;
########## End - Redirect index.php to /&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect non-www to www&lt;br /&gt;
RewriteCond %{HTTP_HOST} !^www\. [NC]&lt;br /&gt;
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]&lt;br /&gt;
## If the above throws an HTTP 500 error, swap [R=301,L] with [R,L]&lt;br /&gt;
########## End - Redirect non-www to www&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect www to non-www&lt;br /&gt;
## WARNING: Comment out the non-www to www rule if you choose to use this&lt;br /&gt;
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]&lt;br /&gt;
# RewriteRule ^(.*)$ http://%1/$1 [R=301,L]&lt;br /&gt;
## If the above throws an HTTP 500 error, swap [R=301,L] with [R,L]&lt;br /&gt;
########## End - Redirect non-www to www&lt;br /&gt;
&lt;br /&gt;
########## Begin - Custom internal rewrites&lt;br /&gt;
#&lt;br /&gt;
# If you need to internally rewrite some specific URL requests,&lt;br /&gt;
# place that code here. Ensure those internal rewrites use the&lt;br /&gt;
# correct RewriteRule syntax without domain name and with [L] flag.&lt;br /&gt;
#&lt;br /&gt;
########## End - Custom internal rewrites&lt;br /&gt;
&lt;br /&gt;
########## Begin - Joomla! core SEF Section&lt;br /&gt;
#&lt;br /&gt;
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]&lt;br /&gt;
#&lt;br /&gt;
# If the requested path and file is not /index.php and the request&lt;br /&gt;
# has not already been internally rewritten to the index.php script&lt;br /&gt;
RewriteCond %{REQUEST_URI} !^/index\.php&lt;br /&gt;
# and the request is for the site root, or for an extensionless URL,&lt;br /&gt;
# or the requested URL ends with one of the listed extensions&lt;br /&gt;
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw|ini|zip|json|file))$ [NC]&lt;br /&gt;
# and the requested path and file doesn&#039;t directly match a physical file&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
# and the requested path doesn&#039;t directly match a physical folder&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
# internally rewrite the request to the index.php script&lt;br /&gt;
RewriteRule .* index.php [L]&lt;br /&gt;
#&lt;br /&gt;
########## End - Joomla! core SEF Section&lt;br /&gt;
&lt;br /&gt;
########## Begin - Optimal default expiration time&lt;br /&gt;
## Note: this might cause problems and you might have to comment it out by&lt;br /&gt;
## placing a hash in front of this section&#039;s lines&lt;br /&gt;
&amp;lt;IfModule mod_expires.c&amp;gt;&lt;br /&gt;
# Enable expiration control&lt;br /&gt;
ExpiresActive On&lt;br /&gt;
&lt;br /&gt;
# Default expiration: 1 hour after request&lt;br /&gt;
ExpiresDefault &amp;quot;now plus 1 hour&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# CSS and JS expiration: 1 week after request&lt;br /&gt;
ExpiresByType text/css &amp;quot;now plus 1 week&amp;quot;&lt;br /&gt;
ExpiresByType application/javascript &amp;quot;now plus 1 week&amp;quot;&lt;br /&gt;
ExpiresByType application/x-javascript &amp;quot;now plus 1 week&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Image files expiration: 1 month after request&lt;br /&gt;
ExpiresByType image/bmp &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/gif &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/jpeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/jp2 &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/pipeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/png &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/svg+xml &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/tiff &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/vnd.microsoft.icon &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/x-icon &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/ico &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/icon &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType text/ico &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType application/ico &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/vnd.wap.wbmp &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType application/vnd.wap.wbxml &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType application/smil &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Audio files expiration: 1 month after request&lt;br /&gt;
ExpiresByType audio/basic &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/mid &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/midi &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/mpeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/x-aiff &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/x-mpegurl &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/x-pn-realaudio &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/x-wav &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Movie files expiration: 1 month after request&lt;br /&gt;
ExpiresByType application/x-shockwave-flash &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType x-world/x-vrml &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/x-msvideo &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/mpeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/mp4 &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/quicktime &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/x-la-asf &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/x-ms-asf &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
########## End - Optimal expiration time&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If not using the suggested master htaccess file, the following suggestions will need RewriteEngine set to On, and will likely also need Options +FollowSymLinks too:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
 # mod_rewrite in use&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 Options +FollowSymLinks&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other useful settings ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
 ServerSignature Off&lt;br /&gt;
 RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]&lt;br /&gt;
 RewriteCond %{THE_REQUEST} (\\r|\\n|%0A|%0D) [NC,OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_COOKIE} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]&lt;br /&gt;
 RewriteCond %{REQUEST_URI} ^/(,|;|:|&amp;lt;|&amp;gt;|”&amp;gt;|”&amp;lt;|/|\\\.\.\\).{0,9999} [NC,OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^$ [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} (winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} (libwww-perl|curl|wget|python|nikto|scan) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]&lt;br /&gt;
 &lt;br /&gt;
 #Block mySQL injects&lt;br /&gt;
 RewriteCond %{QUERY_STRING} (;|&amp;lt;|&amp;gt;|’|”|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark) [NC,OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{QUERY_STRING} \.\./\.\. [OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]&lt;br /&gt;
 RewriteCond %{QUERY_STRING} \.[a-z0-9] [NC,OR]&lt;br /&gt;
 RewriteCond %{QUERY_STRING} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC]&lt;br /&gt;
 # Note: The final RewriteCond must NOT use the [OR] flag.&lt;br /&gt;
&lt;br /&gt;
 # Return 403 Forbidden error.&lt;br /&gt;
 RewriteRule .* index.php [F]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Block bad user agents ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
 ########## Block bad user agents&lt;br /&gt;
 ## The following list may include bots that no longer exist or are not a problem&lt;br /&gt;
 ## for your site. The list will always be incomplete and it is therefore wise to&lt;br /&gt;
 ## follow discussions on one of the many &amp;quot;security&amp;quot; mailing lists or on a forum&lt;br /&gt;
 ## such as http://www.webmasterworld.com/search_engine_spiders/&lt;br /&gt;
 ## It is also unwise to rely on this list as your ONLY security mechanism.&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Zeus&lt;br /&gt;
 ## Note: The final RewriteCond must NOT use the [OR] flag.&lt;br /&gt;
&lt;br /&gt;
 ## Return 403 Forbidden error.&lt;br /&gt;
 RewriteRule .* - [F]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://perishablepress.com/press/tag/htaccess/ .htaccess tag archive @ perishablepress.com]&lt;br /&gt;
&lt;br /&gt;
https://github.com/nikosdion/master-htaccess Proposed &amp;quot;master htaccess&amp;quot; (by Nicholas v3.3) DO read the intro by Nicholas!]&lt;br /&gt;
&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
&lt;br /&gt;
The original file contained a number of syntax errors, several rules that would never work, and a number of expressions that could be more efficiently coded.&lt;br /&gt;
&lt;br /&gt;
Primary discussion of bugs and enhancements discussed at: http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=549841&lt;br /&gt;
&lt;br /&gt;
Secondary discussion was also at: http://snipt.net/g1smd/joomla-patch/&lt;br /&gt;
&lt;br /&gt;
The new proposed file: http://code.google.com/p/joomla-master-htaccess/source/list and at: https://github.com/nikosdion/master-htaccess&lt;br /&gt;
&lt;br /&gt;
The changes explained, line by line:&lt;br /&gt;
&lt;br /&gt;
http://codereview.appspot.com/4312049/diff/1/joomla-master-htaccess.txt&lt;br /&gt;
&lt;br /&gt;
http://codereview.appspot.com/4290071/diff/1/joomla-master-htaccess.txt&lt;br /&gt;
&lt;br /&gt;
http://codereview.appspot.com/4290071/diff/8001/joomla-master-htaccess.txt&lt;br /&gt;
&lt;br /&gt;
http://codereview.appspot.com/4370051/diff/3/joomla-master-htaccess.txt&lt;br /&gt;
&lt;br /&gt;
http://codereview.appspot.com/4314051/diff/1001/joomla-master-htaccess.txt&lt;br /&gt;
&lt;br /&gt;
http://codereview.appspot.com/4430062/diff/1/joomla-master-htaccess.txt&lt;br /&gt;
&lt;br /&gt;
http://codereview.appspot.com/4528051/diff/1/joomla-master-htaccess.txt&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Htaccess_examples_(security)&amp;diff=101725</id>
		<title>Htaccess examples (security)</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Htaccess_examples_(security)&amp;diff=101725"/>
		<updated>2013-07-15T17:32:11Z</updated>

		<summary type="html">&lt;p&gt;Phild: Reordered page sections. Expanded warning note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{DISPLAYTITLE:htaccess examples (security)}}__TOC__&lt;br /&gt;
&#039;&#039;Credit for this .htaccess file goes to Ronald van den Heetkamp, Nicholas Dionysopoulos, g1smd, and others where listed&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Suggested Master htaccess file ==&lt;br /&gt;
&lt;br /&gt;
This can be discussed in [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=549841&amp;amp;start=330#p2555002 this forum topic]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning: Read the hashed areas! Incorrect settings on some servers may cause 500 page errors. The only way to figure out which rule(s) or section(s) are causing the errors is by trial and error.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This .htaccess file is not meant to be just dropped in your site. You should go through all sections and modify the file to match your site. Most notably, all instances of example.com and example\.com should be replaced with your real domain name. Some sections may cause problems with legitimate requests.&lt;br /&gt;
&lt;br /&gt;
You are ultimately responsible for disabling sections or writing exception rules for legitimate requests that fail. Most notably, the advanced server protection section will cause issues with several minifiers, eXtplorer, VirtueMart and other extensions which use non-standard scripts as their entry points. You must add exceptions manually to the proper area of the file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
###############################################################################&lt;br /&gt;
## The Master .htaccess&lt;br /&gt;
##&lt;br /&gt;
## Version 2.5 (proposed) - May 16th, 2011&lt;br /&gt;
##&lt;br /&gt;
## ----------&lt;br /&gt;
## This file is designed to be the template .htaccess file to put on your new&lt;br /&gt;
## sites, increasing your site&#039;s security and performance. It is not meant to&lt;br /&gt;
## be just dropped in your site, though. You should go through all of its&lt;br /&gt;
## sections and modify it to match your site. Most notably, all instances of&lt;br /&gt;
## example.com and example\.com should be replaced with your real domain name.&lt;br /&gt;
##&lt;br /&gt;
## Some sections are too picky and may cause problems with legitimate requests.&lt;br /&gt;
## You are ultimately responsible for disabling them or writing exception rules&lt;br /&gt;
## for your requests. Most notably, the advanced server protection section will&lt;br /&gt;
## cause issues with several minifiers, eXtplorer, VirtueMart and other exten-&lt;br /&gt;
## sions which use non-standard scripts as their entry points. You must add&lt;br /&gt;
## exceptions for them manually.&lt;br /&gt;
##&lt;br /&gt;
## Some sections - depending on your server configuration - may cause your site&lt;br /&gt;
## to throw 500 Internal Server Error. The only way to figure out which one is&lt;br /&gt;
## causing it is trial and error.&lt;br /&gt;
##&lt;br /&gt;
## Big thank you&#039;s to Brian Teeman, Ken Crowder, Radek Suski and Fotis&lt;br /&gt;
## Evangelou for sharing their .htaccess rules with the world and inspiring&lt;br /&gt;
## the creation of this file. Special thanks to Jon Brown for sharing his&lt;br /&gt;
## research and helping me improve this file.&lt;br /&gt;
##&lt;br /&gt;
## Additional thank-yous to John for his remarks and g1smd for taking the&lt;br /&gt;
## time to optimize the speed of the file.&lt;br /&gt;
##&lt;br /&gt;
## It is usually prudent to remove the comments from the file when using it&lt;br /&gt;
## on a live host to minimize the parsing time.&lt;br /&gt;
##&lt;br /&gt;
## ----------------------------------------------------------------------&lt;br /&gt;
## Do you want to customize this .htaccess file with a few clicks?&lt;br /&gt;
## Admin Tools Professional by AkeebaBackup.com does this and much more.&lt;br /&gt;
##&lt;br /&gt;
## Learn more: http://www.akeebabackup.com/software/admin-tools.html&lt;br /&gt;
## ----------------------------------------------------------------------&lt;br /&gt;
##&lt;br /&gt;
## Have fun, stay safe.&lt;br /&gt;
##&lt;br /&gt;
## Nicholas K. Dionysopoulos&lt;br /&gt;
## Lead Developer, AkeebaBackup.com&lt;br /&gt;
##&lt;br /&gt;
## CHANGELOG:&lt;br /&gt;
## Version 2.5 (proposed) (May 16th, 2011)&lt;br /&gt;
## - Placeholders for custom code. Correction of ruleset ordering.&lt;br /&gt;
## Version 2.4 (April 18th, 2011)&lt;br /&gt;
## - Dozens of speed optimisations and many logic and syntax corrections.&lt;br /&gt;
## Version 2.3 (November 18th, 2010)&lt;br /&gt;
## - Added .ico to the pass-through rules, for favicons to load&lt;br /&gt;
## Version 2.2 (October 25th, 2010)&lt;br /&gt;
## - Bug in the tmpl=component rule&lt;br /&gt;
## Version 2.1 (October 19th, 2010)&lt;br /&gt;
## - index.php to root redirection would kill some AJAX requests&lt;br /&gt;
## - Referer filtering was screwed up&lt;br /&gt;
## - Simplified and more thorough PHP Easter Egg code (thanks Jon!)&lt;br /&gt;
## - The tp/template/tmpl filter was not thorough and killed some components&lt;br /&gt;
## - Optimized Joomla! core SEF section&lt;br /&gt;
## - Bot filters and GZip optimization would never run for dynamic content&lt;br /&gt;
## - Content expiration optimization got more optimized&lt;br /&gt;
## - Added ETag rule&lt;br /&gt;
##&lt;br /&gt;
###############################################################################&lt;br /&gt;
&lt;br /&gt;
########## Begin - RewriteEngine enabled&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
########## End - RewriteEngine enabled&lt;br /&gt;
&lt;br /&gt;
########## Begin - RewriteBase&lt;br /&gt;
# Uncomment following line if your webserver&#039;s URL&lt;br /&gt;
# is not directly related to physical file paths.&lt;br /&gt;
# Update Your Joomla! Directory (just / for root)&lt;br /&gt;
&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
########## End - RewriteBase&lt;br /&gt;
&lt;br /&gt;
########## Begin - No directory listings&lt;br /&gt;
## Note: +FollowSymlinks may cause problems and you might have to remove it&lt;br /&gt;
IndexIgnore *&lt;br /&gt;
Options +FollowSymLinks All -Indexes&lt;br /&gt;
########## End - No directory listings&lt;br /&gt;
&lt;br /&gt;
########## Begin - File execution order, by Komra.de&lt;br /&gt;
DirectoryIndex index.php index.html&lt;br /&gt;
########## End - File execution order&lt;br /&gt;
&lt;br /&gt;
########## Begin - ETag Optimization&lt;br /&gt;
## This rule will create an ETag for files based only on the modification&lt;br /&gt;
## timestamp and their size. This works wonders if you are using rsync&#039;ed&lt;br /&gt;
## servers, where the inode number of identical files differs.&lt;br /&gt;
## Note: It may cause problems on your server and you may need to remove it&lt;br /&gt;
FileETag MTime Size&lt;br /&gt;
########## End - ETag Optimization&lt;br /&gt;
&lt;br /&gt;
########## Begin - Common hacking tools and bandwidth hoggers block&lt;br /&gt;
## By SigSiu.net and @nikosdion.&lt;br /&gt;
# This line also disables Akeeba Remote Control 2.5 and earlier&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Indy Library&amp;quot; stayout=1&lt;br /&gt;
# WARNING: Disabling wget will also block the most common method for&lt;br /&gt;
# running CRON jobs. Remove if you have issues with CRON jobs.&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Wget&amp;quot; stayout=1&lt;br /&gt;
# The following rules are for bandwidth-hogging download tools&lt;br /&gt;
SetEnvIf user-agent &amp;quot;libwww-perl&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Download Demon&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;GetRight&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;GetWeb!&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Go!Zilla&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Go-Ahead-Got-It&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;GrabNet&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;TurnitinBot&amp;quot; stayout=1&lt;br /&gt;
# This line denies access to all of the above tools&lt;br /&gt;
deny from env=stayout&lt;br /&gt;
########## End - Common hacking tools and bandwidth hoggers block&lt;br /&gt;
&lt;br /&gt;
########## Begin - Automatic compression of resources&lt;br /&gt;
# Compress text, html, javascript, css, xml, kudos to Komra.de&lt;br /&gt;
# May kill access to your site for old versions of Internet Explorer&lt;br /&gt;
# The server needs to be compiled with mod_deflate otherwise it will send HTTP 500 Error.&lt;br /&gt;
# mod_deflate is not available on Apache 1.x series. Can only be used with Apache 2.x server.&lt;br /&gt;
# AddOutputFilterByType is now deprecated by Apache. Use mod_filter in the future.&lt;br /&gt;
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript&lt;br /&gt;
########## End - Automatic compression of resources&lt;br /&gt;
&lt;br /&gt;
########## Begin - Add optional bad user agent or IP blocking code&lt;br /&gt;
#&lt;br /&gt;
# If you need to block certain user agents or IP addresses and&lt;br /&gt;
# other signatures, place that code here. Ensure the rules use&lt;br /&gt;
# the correct RewriteRule syntax and the [F] flag.&lt;br /&gt;
#&lt;br /&gt;
########## End - Add optional bad user agent or IP blocking code&lt;br /&gt;
&lt;br /&gt;
########## Begin - Rewrite rules to block out some common exploits&lt;br /&gt;
## If you experience problems on your site block out the operations listed below&lt;br /&gt;
## This attempts to block the most common type of exploit `attempts` to Joomla!&lt;br /&gt;
#&lt;br /&gt;
# If the request query string contains /proc/self/environ (by SigSiu.net)&lt;br /&gt;
RewriteCond %{QUERY_STRING} proc/self/environ [OR]&lt;br /&gt;
# Block out any script trying to set a mosConfig value through the URL&lt;br /&gt;
# (these attacks wouldn&#039;t work w/out Joomla! 1.5&#039;s Legacy Mode plugin)&lt;br /&gt;
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]&lt;br /&gt;
# Block out any script trying to base64_encode or base64_decode data within the URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [OR]&lt;br /&gt;
## IMPORTANT: If the above line throws an HTTP 500 error, replace it with these 2 lines:&lt;br /&gt;
# RewriteCond %{QUERY_STRING} base64_encode\(.*\) [OR]&lt;br /&gt;
# RewriteCond %{QUERY_STRING} base64_decode\(.*\) [OR]&lt;br /&gt;
# Block out any script that includes a &amp;lt;script&amp;gt; tag in URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} (&amp;lt;|%3C)([^s]*s)+cript.*(&amp;gt;|%3E) [NC,OR]&lt;br /&gt;
# Block out any script trying to set a PHP GLOBALS variable via URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]&lt;br /&gt;
# Block out any script trying to modify a _REQUEST variable via URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})&lt;br /&gt;
# Return 403 Forbidden header and show the content of the root homepage&lt;br /&gt;
RewriteRule .* index.php [F]&lt;br /&gt;
#&lt;br /&gt;
########## End - Rewrite rules to block out some common exploits&lt;br /&gt;
&lt;br /&gt;
########## Begin - File injection protection, by SigSiu.net&lt;br /&gt;
RewriteCond %{REQUEST_METHOD} GET&lt;br /&gt;
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
########## End - File injection protection&lt;br /&gt;
&lt;br /&gt;
########## Begin - Basic antispam Filter, by SigSiu.net&lt;br /&gt;
## I removed some common words, tweak to your liking&lt;br /&gt;
## This code uses PCRE and works only with Apache 2.x.&lt;br /&gt;
## This code will NOT work with Apache 1.x servers.&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(ambien|blue\spill|cialis|cocaine|ejaculation|erectile)\b [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(erections|hoodia|huronriveracres|impotence|levitra|libido)\b [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)\b [NC]&lt;br /&gt;
## Note: The final RewriteCond must NOT use the [OR] flag.&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
## Note: The previous lines are a &amp;quot;compressed&amp;quot; version&lt;br /&gt;
## of the filters. You can add your own filters as:&lt;br /&gt;
## RewriteCond %{QUERY_STRING} \bbadword\b [NC,OR]&lt;br /&gt;
## where &amp;quot;badword&amp;quot; is the word you want to exclude.&lt;br /&gt;
########## End - Basic antispam Filter, by SigSiu.net&lt;br /&gt;
&lt;br /&gt;
########## Begin - Advanced server protection - query strings, referrer and config&lt;br /&gt;
# Advanced server protection, version 3.2 - May 2011&lt;br /&gt;
# by Nicholas K. Dionysopoulos&lt;br /&gt;
&lt;br /&gt;
## Disallow PHP Easter Eggs (can be used in fingerprinting attacks to determine&lt;br /&gt;
## your PHP version). See http://www.0php.com/php_easter_egg.php and&lt;br /&gt;
## http://osvdb.org/12184 for more information&lt;br /&gt;
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
&lt;br /&gt;
## SQLi first line of defense, thanks to Radek Suski (SigSiu.net) @&lt;br /&gt;
## http://www.sigsiu.net/presentations/fortifying_your_joomla_website.html&lt;br /&gt;
## May cause problems on legitimate requests&lt;br /&gt;
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
&lt;br /&gt;
## Referrer filtering for common media files. Replace with your own domain name.&lt;br /&gt;
## This blocks most common fingerprinting attacks ;)&lt;br /&gt;
## Note: Change www\.example\.com with your own domain name, substituting the&lt;br /&gt;
## dots with \.  i.e. use www\.example\.com for www.example.com&lt;br /&gt;
RewriteRule ^images/stories/([^/]+/)*([^/.]+\.)+(jp(e?g|2)?|png|gif|bmp|css|js|swf|ico)$ - [L]&lt;br /&gt;
RewriteCond %{HTTP_REFERER} .&lt;br /&gt;
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} -f&lt;br /&gt;
RewriteRule \.(jp(e?g|2)?|png|gif|bmp|css|js|swf|ico)$ - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow visual fingerprinting of Joomla! sites (module position dump)&lt;br /&gt;
## Initial idea by Brian Teeman and Ken Crowder, see:&lt;br /&gt;
## http://www.slideshare.net/brianteeman/hidden-joomla-secrets&lt;br /&gt;
## Improved by @nikosdion to work more efficiently and handle template&lt;br /&gt;
## and tmpl query parameters&lt;br /&gt;
RewriteCond %{QUERY_STRING} (^|&amp;amp;)tmpl=(component|system) [NC]&lt;br /&gt;
RewriteRule .* - [L]&lt;br /&gt;
RewriteCond %{QUERY_STRING} (^|&amp;amp;)t(p|emplate|mpl)= [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow access to htaccess.txt, configuration.php, configuration.php-dist and php.ini&lt;br /&gt;
RewriteRule ^(htaccess\.txt|configuration\.php(-dist)?|php\.ini)$ - [F]&lt;br /&gt;
&lt;br /&gt;
########## End - Advanced server protection - query strings, referrer and config&lt;br /&gt;
&lt;br /&gt;
########## Begin - Advanced server protection rules exceptions ####&lt;br /&gt;
##&lt;br /&gt;
## These are sample exceptions to the Advanced Server Protection 3.1&lt;br /&gt;
## rule set further down this file.&lt;br /&gt;
##&lt;br /&gt;
## Allow UddeIM CAPTCHA&lt;br /&gt;
RewriteRule ^components/com_uddeim/captcha15\.php$ - [L]&lt;br /&gt;
## Allow Phil Taylor&#039;s Turbo Gears&lt;br /&gt;
RewriteRule ^plugins/system/GoogleGears/gears-manifest\.php$ - [L]&lt;br /&gt;
## Allow JoomlaWorks AllVideos&lt;br /&gt;
RewriteRule ^plugins/content/jw_allvideos/includes/jw_allvideos_scripts\.php$ - [L]&lt;br /&gt;
## Allow Admin Tools Joomla! updater to run&lt;br /&gt;
RewriteRule ^administrator/components/com_admintools/restore\.php$ - [L]&lt;br /&gt;
## Allow Akeeba Backup Professional&#039;s integrated restoration script to run&lt;br /&gt;
RewriteRule ^administrator/components/com_akeeba/restore\.php$ - [L]&lt;br /&gt;
## Allow Akeeba Kickstart&lt;br /&gt;
RewriteRule ^kickstart\.php$ - [L]&lt;br /&gt;
&lt;br /&gt;
# Add more rules to single PHP files here&lt;br /&gt;
&lt;br /&gt;
## Allow Agora attachments, but not PHP files in that directory!&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !(\.php)$&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} -f&lt;br /&gt;
RewriteRule ^components/com_agora/img/members/ - [L]&lt;br /&gt;
&lt;br /&gt;
# Add more rules for allowing full access (except PHP files) on more directories here&lt;br /&gt;
&lt;br /&gt;
## Uncomment to allow full access to the cache directory (strongly not recommended!)&lt;br /&gt;
#RewriteRule ^cache/ - [L]&lt;br /&gt;
## Uncomment to allow full access to the tmp directory (strongly not recommended!)&lt;br /&gt;
#RewriteRule ^tmp/ - [L]&lt;br /&gt;
&lt;br /&gt;
# Add more full access rules here&lt;br /&gt;
&lt;br /&gt;
########## End - Advanced server protection rules exceptions ####&lt;br /&gt;
&lt;br /&gt;
########## Begin - Advanced server protection - paths and files&lt;br /&gt;
# Advanced server protection, version 3.2 - May 2011&lt;br /&gt;
# by Nicholas K. Dionysopoulos&lt;br /&gt;
&lt;br /&gt;
## Back-end protection&lt;br /&gt;
## This also blocks fingerprinting attacks browsing for XML and INI files&lt;br /&gt;
RewriteRule ^administrator/?$ - [L]&lt;br /&gt;
RewriteRule ^administrator/index\.(php|html?)$ - [L]&lt;br /&gt;
RewriteRule ^administrator/index[23]\.php$ - [L]&lt;br /&gt;
RewriteRule ^administrator/(components|modules|templates|images|plugins)/([^/]+/)*([^/.]+\.)+(jp(e?g|2)?|png|gif|bmp|css|js|swf|html?|mp(eg?|[34])|avi|wav|og[gv]|xlsx?|docx?|pptx?|zip|rar|pdf|xps|txt|7z|svg|od[tsp]|flv|mov)$ - [L]&lt;br /&gt;
RewriteRule ^administrator/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Explicitly allow access only to XML-RPC&#039;s xmlrpc/index.php or plain xmlrpc/ directory&lt;br /&gt;
RewriteRule ^xmlrpc/(index\.php)?$ - [L]&lt;br /&gt;
RewriteRule ^xmlrpc/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow front-end access for certain Joomla! system directories&lt;br /&gt;
RewriteRule ^includes/js/ - [L]&lt;br /&gt;
RewriteRule ^(cache|includes|language|libraries|logs|tmp)/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Allow limited access for certain Joomla! system directories with client-accessible content&lt;br /&gt;
RewriteRule ^(components|modules|plugins|templates)/([^/]+/)*([^/.]+\.)+(jp(e?g|2)?|png|gif|bmp|css|js|swf|html?|mp(eg?|[34])|avi|wav|og[gv]|xlsx?|docx?|pptx?|zip|rar|pdf|xps|txt|7z|svg|od[tsp]|flv|mov)$ - [L]&lt;br /&gt;
## Uncomment this line if you have extensions which require direct access to their own&lt;br /&gt;
## custom index.php files. Note that this is UNSAFE and the developer should be ashamed&lt;br /&gt;
## for being so lame, lazy and security unconscious.&lt;br /&gt;
# RewriteRule ^(components|modules|plugins|templates)/([^/]+/)*(index\.php)?$ - [L]&lt;br /&gt;
## Uncomment the following line if your template requires direct access to PHP files&lt;br /&gt;
## inside its directory, e.g. GZip compressed copies of its CSS files&lt;br /&gt;
# RewriteRule ^templates/([^/]+/)*([^/.]+\.)+php$ - [L]&lt;br /&gt;
RewriteRule ^(components|modules|plugins|templates)/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow access to rogue PHP files throughout the site, unless they are explicitly allowed&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} \.php$&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !/index[23]?\.php$&lt;br /&gt;
## The next line is to explicitly allow the forum post assistant(fpa-xx)script to run&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !/fpa-[a-z]{2}\.php&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} -f&lt;br /&gt;
RewriteRule ^([^/]+/)*([^/.]+\.)+php$ - [F]&lt;br /&gt;
&lt;br /&gt;
########## End - Advanced server protection - paths and files&lt;br /&gt;
&lt;br /&gt;
########## Begin - Google Apps redirection, by Komra.de&lt;br /&gt;
## Uncomment the following line to enable:&lt;br /&gt;
# RewriteRule ^mail http://mail.google.com/a/example.com [R=301,L]&lt;br /&gt;
## If the above doesn&#039;t work on your server, try this:&lt;br /&gt;
## RewriteRule ^mail http://mail.google.com/a/example.com [R,L]&lt;br /&gt;
########## End - Google Apps redirection&lt;br /&gt;
&lt;br /&gt;
########## Begin - Custom redirects&lt;br /&gt;
#&lt;br /&gt;
# If you need to redirect some pages, place that code here. Ensure those&lt;br /&gt;
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.&lt;br /&gt;
#&lt;br /&gt;
########## End - Custom redirects&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect (www.)olddomain.com to www.example.com&lt;br /&gt;
## Note: olddomain.com is your old domain name, you want to redirect FROM,&lt;br /&gt;
## whereas www.example.com is the new domain name you want to redirect TO.&lt;br /&gt;
## Change those names to reflect your current configuration. Remember, this&lt;br /&gt;
## small part of the file is supposed to be placed in www.olddomain.com!&lt;br /&gt;
## Note: Replace [R=301,L] with [R,L] if you get error 500.&lt;br /&gt;
## Uncomment the following lines to enable:&lt;br /&gt;
# RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com [NC]&lt;br /&gt;
# RewriteRule (.*) http://www.example.com/$1 [R=301,L]&lt;br /&gt;
## Note: The above section is only required if you are changing your domain name.&lt;br /&gt;
########## End - Redirect (www.)olddomain.com to www.example.com&lt;br /&gt;
&lt;br /&gt;
########## Begin - Force HTTPS for certain pages&lt;br /&gt;
# Force the page foobar.html to run in HTTPS mode, no matter what Joomla! says.&lt;br /&gt;
# This is a sample redirection for foobar.html. Do note that you have to change&lt;br /&gt;
# www.example.com to reflect your own domain. Remember to escape the dots using&lt;br /&gt;
# \. in the left hand side of each rule. You need BOTH LINES PER URL for the rule&lt;br /&gt;
# to work.&lt;br /&gt;
RewriteCond %{SERVER_PORT} !^443$&lt;br /&gt;
## Alternatively, comment the above line and uncomment the following line:&lt;br /&gt;
# RewriteCond %{HTTPS} ^off$ [NC]&lt;br /&gt;
RewriteRule ^foobar\.html$ https://www.example.com/foobar.html [R=301,L]&lt;br /&gt;
## NOTE: If you get an HTTP 500 error, please swap [R=301,L] with [R,L]&lt;br /&gt;
# Add more rules below this line as required&lt;br /&gt;
########## End - Force HTTPS for certain pages&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect index.php to /&lt;br /&gt;
## Note: Change example.com to reflect your own domain name&lt;br /&gt;
RewriteCond %{THE_REQUEST} !^POST&lt;br /&gt;
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/&lt;br /&gt;
RewriteCond %{SERVER_PORT}&amp;gt;s ^(443&amp;gt;(s)|[0-9]+&amp;gt;s)$&lt;br /&gt;
RewriteRule ^index\.php$ http%2://www.example.com/$1 [R=301,L]&lt;br /&gt;
## If the above line throws a 500 error, change [R=301,L] to [R,L]&lt;br /&gt;
########## End - Redirect index.php to /&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect non-www to www&lt;br /&gt;
RewriteCond %{HTTP_HOST} !^www\. [NC]&lt;br /&gt;
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]&lt;br /&gt;
## If the above throws an HTTP 500 error, swap [R=301,L] with [R,L]&lt;br /&gt;
########## End - Redirect non-www to www&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect www to non-www&lt;br /&gt;
## WARNING: Comment out the non-www to www rule if you choose to use this&lt;br /&gt;
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]&lt;br /&gt;
# RewriteRule ^(.*)$ http://%1/$1 [R=301,L]&lt;br /&gt;
## If the above throws an HTTP 500 error, swap [R=301,L] with [R,L]&lt;br /&gt;
########## End - Redirect non-www to www&lt;br /&gt;
&lt;br /&gt;
########## Begin - Custom internal rewrites&lt;br /&gt;
#&lt;br /&gt;
# If you need to internally rewrite some specific URL requests,&lt;br /&gt;
# place that code here. Ensure those internal rewrites use the&lt;br /&gt;
# correct RewriteRule syntax without domain name and with [L] flag.&lt;br /&gt;
#&lt;br /&gt;
########## End - Custom internal rewrites&lt;br /&gt;
&lt;br /&gt;
########## Begin - Joomla! core SEF Section&lt;br /&gt;
#&lt;br /&gt;
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]&lt;br /&gt;
#&lt;br /&gt;
# If the requested path and file is not /index.php and the request&lt;br /&gt;
# has not already been internally rewritten to the index.php script&lt;br /&gt;
RewriteCond %{REQUEST_URI} !^/index\.php&lt;br /&gt;
# and the request is for the site root, or for an extensionless URL,&lt;br /&gt;
# or the requested URL ends with one of the listed extensions&lt;br /&gt;
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw|ini|zip|json|file))$ [NC]&lt;br /&gt;
# and the requested path and file doesn&#039;t directly match a physical file&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
# and the requested path doesn&#039;t directly match a physical folder&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
# internally rewrite the request to the index.php script&lt;br /&gt;
RewriteRule .* index.php [L]&lt;br /&gt;
#&lt;br /&gt;
########## End - Joomla! core SEF Section&lt;br /&gt;
&lt;br /&gt;
########## Begin - Optimal default expiration time&lt;br /&gt;
## Note: this might cause problems and you might have to comment it out by&lt;br /&gt;
## placing a hash in front of this section&#039;s lines&lt;br /&gt;
&amp;lt;IfModule mod_expires.c&amp;gt;&lt;br /&gt;
# Enable expiration control&lt;br /&gt;
ExpiresActive On&lt;br /&gt;
&lt;br /&gt;
# Default expiration: 1 hour after request&lt;br /&gt;
ExpiresDefault &amp;quot;now plus 1 hour&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# CSS and JS expiration: 1 week after request&lt;br /&gt;
ExpiresByType text/css &amp;quot;now plus 1 week&amp;quot;&lt;br /&gt;
ExpiresByType application/javascript &amp;quot;now plus 1 week&amp;quot;&lt;br /&gt;
ExpiresByType application/x-javascript &amp;quot;now plus 1 week&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Image files expiration: 1 month after request&lt;br /&gt;
ExpiresByType image/bmp &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/gif &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/jpeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/jp2 &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/pipeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/png &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/svg+xml &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/tiff &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/vnd.microsoft.icon &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/x-icon &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/ico &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/icon &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType text/ico &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType application/ico &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType image/vnd.wap.wbmp &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType application/vnd.wap.wbxml &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType application/smil &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Audio files expiration: 1 month after request&lt;br /&gt;
ExpiresByType audio/basic &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/mid &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/midi &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/mpeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/x-aiff &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/x-mpegurl &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/x-pn-realaudio &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType audio/x-wav &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Movie files expiration: 1 month after request&lt;br /&gt;
ExpiresByType application/x-shockwave-flash &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType x-world/x-vrml &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/x-msvideo &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/mpeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/mp4 &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/quicktime &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/x-la-asf &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
ExpiresByType video/x-ms-asf &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
########## End - Optimal expiration time&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If not using the suggested master htaccess file, the following suggestions will need RewriteEngine set to On, and will likely also need Options +FollowSymLinks too:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
 # mod_rewrite in use&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 Options +FollowSymLinks&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other useful settings ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
 ServerSignature Off&lt;br /&gt;
 RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]&lt;br /&gt;
 RewriteCond %{THE_REQUEST} (\\r|\\n|%0A|%0D) [NC,OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_COOKIE} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]&lt;br /&gt;
 RewriteCond %{REQUEST_URI} ^/(,|;|:|&amp;lt;|&amp;gt;|”&amp;gt;|”&amp;lt;|/|\\\.\.\\).{0,9999} [NC,OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^$ [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} (winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} (libwww-perl|curl|wget|python|nikto|scan) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]&lt;br /&gt;
 &lt;br /&gt;
 #Block mySQL injects&lt;br /&gt;
 RewriteCond %{QUERY_STRING} (;|&amp;lt;|&amp;gt;|’|”|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark) [NC,OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{QUERY_STRING} \.\./\.\. [OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]&lt;br /&gt;
 RewriteCond %{QUERY_STRING} \.[a-z0-9] [NC,OR]&lt;br /&gt;
 RewriteCond %{QUERY_STRING} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC]&lt;br /&gt;
 # Note: The final RewriteCond must NOT use the [OR] flag.&lt;br /&gt;
&lt;br /&gt;
 # Return 403 Forbidden error.&lt;br /&gt;
 RewriteRule .* index.php [F]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Block bad user agents ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
 ########## Block bad user agents&lt;br /&gt;
 ## The following list may include bots that no longer exist or are not a problem&lt;br /&gt;
 ## for your site. The list will always be incomplete and it is therefore wise to&lt;br /&gt;
 ## follow discussions on one of the many &amp;quot;security&amp;quot; mailing lists or on a forum&lt;br /&gt;
 ## such as http://www.webmasterworld.com/search_engine_spiders/&lt;br /&gt;
 ## It is also unwise to rely on this list as your ONLY security mechanism.&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Zeus&lt;br /&gt;
 ## Note: The final RewriteCond must NOT use the [OR] flag.&lt;br /&gt;
&lt;br /&gt;
 ## Return 403 Forbidden error.&lt;br /&gt;
 RewriteRule .* - [F]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://perishablepress.com/press/tag/htaccess/ .htaccess tag archive @ perishablepress.com]&lt;br /&gt;
&lt;br /&gt;
[http://akeeba.assembla.com/code/master-htaccess/git/nodes/htaccess.txt Proposed &amp;quot;master htaccess&amp;quot; (updated by Nicholas on April 24th 2011 to v3.3) DO read the intro by Nicholas!]&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
&lt;br /&gt;
The original file contained a number of syntax errors, several rules that cwould never work, and a number of expressions that could be more efficiently coded.&lt;br /&gt;
&lt;br /&gt;
Bugs and enhancements originally discussed at: http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=549841&lt;br /&gt;
&lt;br /&gt;
Discussion also at: http://snipt.net/nikosdion/the-master-htaccess/ and http://snipt.net/g1smd/joomla-patch/&lt;br /&gt;
&lt;br /&gt;
The new proposed file: http://code.google.com/p/joomla-master-htaccess/source/list and at: http://akeeba.assembla.com/code/master-htaccess/git/node/logs&lt;br /&gt;
&lt;br /&gt;
The changes explained, line by line:&lt;br /&gt;
http://codereview.appspot.com/4312049/diff/1/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4290071/diff/1/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4290071/diff/8001/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4370051/diff/3/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4314051/diff/1001/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4430062/diff/1/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4528051/diff/1/joomla-master-htaccess.txt&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Htaccess_examples_(security)&amp;diff=101709</id>
		<title>Htaccess examples (security)</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Htaccess_examples_(security)&amp;diff=101709"/>
		<updated>2013-07-14T20:32:18Z</updated>

		<summary type="html">&lt;p&gt;Phild: Protected &amp;quot;Htaccess examples (security)&amp;quot;: Prevent unauthorized editing of htaccess file (‎[edit=sysop] (indefinite) ‎[move=sysop] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:htaccess examples (security)}}__TOC__&lt;br /&gt;
&#039;&#039;Credit for part of this .htaccess file goes to Ronald van den Heetkamp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For this to work you need RewriteEngine set to On, and will likely also need Options +FollowSymLinks too:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
 # mod_rewrite in use&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 Options +FollowSymLinks&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Block bad user agents ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
 ########## Block bad user agents&lt;br /&gt;
 ## The following list may include bots that no longer exist or are not a problem&lt;br /&gt;
 ## for your site. The list will always be incomplete and it is therefore wise to&lt;br /&gt;
 ## follow discussions on one of the many &amp;quot;security&amp;quot; mailing lists or on a forum&lt;br /&gt;
 ## such as http://www.webmasterworld.com/search_engine_spiders/&lt;br /&gt;
 ## It is also unwise to rely on this list as your ONLY security mechanism.&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^Zeus&lt;br /&gt;
 ## Note: The final RewriteCond must NOT use the [OR] flag.&lt;br /&gt;
&lt;br /&gt;
 ## Return 403 Forbidden error.&lt;br /&gt;
 RewriteRule .* - [F]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other useful settings ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
 ServerSignature Off&lt;br /&gt;
 RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]&lt;br /&gt;
 RewriteCond %{THE_REQUEST} (\\r|\\n|%0A|%0D) [NC,OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_COOKIE} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]&lt;br /&gt;
 RewriteCond %{REQUEST_URI} ^/(,|;|:|&amp;lt;|&amp;gt;|”&amp;gt;|”&amp;lt;|/|\\\.\.\\).{0,9999} [NC,OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^$ [OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} (winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} (libwww-perl|curl|wget|python|nikto|scan) [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_USER_AGENT} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]&lt;br /&gt;
 &lt;br /&gt;
 #Block mySQL injects&lt;br /&gt;
 RewriteCond %{QUERY_STRING} (;|&amp;lt;|&amp;gt;|’|”|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark) [NC,OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{QUERY_STRING} \.\./\.\. [OR]&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]&lt;br /&gt;
 RewriteCond %{QUERY_STRING} \.[a-z0-9] [NC,OR]&lt;br /&gt;
 RewriteCond %{QUERY_STRING} (&amp;lt;|&amp;gt;|’|%0A|%0D|%27|%3C|%3E|%00) [NC]&lt;br /&gt;
 # Note: The final RewriteCond must NOT use the [OR] flag.&lt;br /&gt;
&lt;br /&gt;
 # Return 403 Forbidden error.&lt;br /&gt;
 RewriteRule .* index.php [F]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggested Master htaccess file ==&lt;br /&gt;
&lt;br /&gt;
This can be discussed in [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=549841&amp;amp;start=330#p2555002 this forum topic]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning: note the hashed areas. Incorrect settings on some servers may cause 500 page errors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
###############################################################################&lt;br /&gt;
## The Master .htaccess&lt;br /&gt;
##&lt;br /&gt;
## Version 2.5 (proposed) - May 16th, 2011&lt;br /&gt;
##&lt;br /&gt;
## ----------&lt;br /&gt;
## This file is designed to be the template .htaccess file to put on your new&lt;br /&gt;
## sites, increasing your site&#039;s security and performance. It is not meant to&lt;br /&gt;
## be just dropped in your site, though. You should go through all of its&lt;br /&gt;
## sections and modify it to match your site. Most notably, all instances of&lt;br /&gt;
## example.com and example\.com should be replaced with your real domain name.&lt;br /&gt;
##&lt;br /&gt;
## Some sections are too picky and may cause problems with legitimate requests.&lt;br /&gt;
## You are ultimately responsible for disabling them or writing exception rules&lt;br /&gt;
## for your requests. Most notably, the advanced server protection section will&lt;br /&gt;
## cause issues with several minifiers, eXtplorer, VirtueMart and other exten-&lt;br /&gt;
## sions which use non-standard scripts as their entry points. You must add&lt;br /&gt;
## exceptions for them manually.&lt;br /&gt;
##&lt;br /&gt;
## Some sections - depending on your server configuration - may cause your site&lt;br /&gt;
## to throw 500 Internal Server Error. The only way to figure out which one is&lt;br /&gt;
## causing it is trial and error.&lt;br /&gt;
##&lt;br /&gt;
## Big thank you&#039;s to Brian Teeman, Ken Crowder, Radek Suski and Fotis&lt;br /&gt;
## Evangelou for sharing their .htaccess rules with the world and inspiring&lt;br /&gt;
## the creation of this file. Special thanks to Jon Brown for sharing his&lt;br /&gt;
## research and helping me improve this file.&lt;br /&gt;
##&lt;br /&gt;
## Additional thank-yous to John for his remarks and g1smd for taking the&lt;br /&gt;
## time to optimize the speed of the file.&lt;br /&gt;
##&lt;br /&gt;
## It is usually prudent to remove the comments from the file when using it&lt;br /&gt;
## on a live host to minimize the parsing time.&lt;br /&gt;
##&lt;br /&gt;
## ----------------------------------------------------------------------&lt;br /&gt;
## Do you want to customize this .htaccess file with a few clicks?&lt;br /&gt;
## Admin Tools Professional by AkeebaBackup.com does this and much more.&lt;br /&gt;
##&lt;br /&gt;
## Learn more: http://www.akeebabackup.com/software/admin-tools.html&lt;br /&gt;
## ----------------------------------------------------------------------&lt;br /&gt;
##&lt;br /&gt;
## Have fun, stay safe.&lt;br /&gt;
##&lt;br /&gt;
## Nicholas K. Dionysopoulos&lt;br /&gt;
## Lead Developer, AkeebaBackup.com&lt;br /&gt;
##&lt;br /&gt;
## CHANGELOG:&lt;br /&gt;
## Version 2.5 (proposed) (May 16th, 2011)&lt;br /&gt;
## - Placeholders for custom code. Correction of ruleset ordering.&lt;br /&gt;
## Version 2.4 (April 18th, 2011)&lt;br /&gt;
## - Dozens of speed optimisations and many logic and syntax corrections.&lt;br /&gt;
## Version 2.3 (November 18th, 2010)&lt;br /&gt;
## - Added .ico to the pass-through rules, for favicons to load&lt;br /&gt;
## Version 2.2 (October 25th, 2010)&lt;br /&gt;
## - Bug in the tmpl=component rule&lt;br /&gt;
## Version 2.1 (October 19th, 2010)&lt;br /&gt;
## - index.php to root redirection would kill some AJAX requests&lt;br /&gt;
## - Referer filtering was screwed up&lt;br /&gt;
## - Simplified and more thorough PHP Easter Egg code (thanks Jon!)&lt;br /&gt;
## - The tp/template/tmpl filter was not thorough and killed some components&lt;br /&gt;
## - Optimized Joomla! core SEF section&lt;br /&gt;
## - Bot filters and GZip optimization would never run for dynamic content&lt;br /&gt;
## - Content expiration optimization got more optimized&lt;br /&gt;
## - Added ETag rule&lt;br /&gt;
##&lt;br /&gt;
###############################################################################&lt;br /&gt;
&lt;br /&gt;
########## Begin - RewriteEngine enabled&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
########## End - RewriteEngine enabled&lt;br /&gt;
&lt;br /&gt;
########## Begin - RewriteBase&lt;br /&gt;
# Uncomment following line if your webserver&#039;s URL&lt;br /&gt;
# is not directly related to physical file paths.&lt;br /&gt;
# Update Your Joomla! Directory (just / for root)&lt;br /&gt;
&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
########## End - RewriteBase&lt;br /&gt;
&lt;br /&gt;
########## Begin - No directory listings&lt;br /&gt;
## Note: +FollowSymlinks may cause problems and you might have to remove it&lt;br /&gt;
IndexIgnore *&lt;br /&gt;
Options +FollowSymLinks All -Indexes&lt;br /&gt;
########## End - No directory listings&lt;br /&gt;
&lt;br /&gt;
########## Begin - File execution order, by Komra.de&lt;br /&gt;
DirectoryIndex index.php index.html&lt;br /&gt;
########## End - File execution order&lt;br /&gt;
&lt;br /&gt;
########## Begin - ETag Optimization&lt;br /&gt;
## This rule will create an ETag for files based only on the modification&lt;br /&gt;
## timestamp and their size. This works wonders if you are using rsync&#039;ed&lt;br /&gt;
## servers, where the inode number of identical files differs.&lt;br /&gt;
## Note: It may cause problems on your server and you may need to remove it&lt;br /&gt;
FileETag MTime Size&lt;br /&gt;
########## End - ETag Optimization&lt;br /&gt;
&lt;br /&gt;
########## Begin - Common hacking tools and bandwidth hoggers block&lt;br /&gt;
## By SigSiu.net and @nikosdion.&lt;br /&gt;
# This line also disables Akeeba Remote Control 2.5 and earlier&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Indy Library&amp;quot; stayout=1&lt;br /&gt;
# WARNING: Disabling wget will also block the most common method for&lt;br /&gt;
# running CRON jobs. Remove if you have issues with CRON jobs.&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Wget&amp;quot; stayout=1&lt;br /&gt;
# The following rules are for bandwidth-hogging download tools&lt;br /&gt;
SetEnvIf user-agent &amp;quot;libwww-perl&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Download Demon&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;GetRight&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;GetWeb!&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Go!Zilla&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;Go-Ahead-Got-It&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;GrabNet&amp;quot; stayout=1&lt;br /&gt;
SetEnvIf user-agent &amp;quot;TurnitinBot&amp;quot; stayout=1&lt;br /&gt;
# This line denies access to all of the above tools&lt;br /&gt;
deny from env=stayout&lt;br /&gt;
########## End - Common hacking tools and bandwidth hoggers block&lt;br /&gt;
&lt;br /&gt;
########## Begin - Automatic compression of resources&lt;br /&gt;
# Compress text, html, javascript, css, xml, kudos to Komra.de&lt;br /&gt;
# May kill access to your site for old versions of Internet Explorer&lt;br /&gt;
# The server needs to be compiled with mod_deflate otherwise it will send HTTP 500 Error.&lt;br /&gt;
# mod_deflate is not available on Apache 1.x series. Can only be used with Apache 2.x server.&lt;br /&gt;
# AddOutputFilterByType is now deprecated by Apache. Use mod_filter in the future.&lt;br /&gt;
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript&lt;br /&gt;
########## End - Automatic compression of resources&lt;br /&gt;
&lt;br /&gt;
########## Begin - Add optional bad user agent or IP blocking code&lt;br /&gt;
#&lt;br /&gt;
# If you need to block certain user agents or IP addresses and&lt;br /&gt;
# other signatures, place that code here. Ensure the rules use&lt;br /&gt;
# the correct RewriteRule syntax and the [F] flag.&lt;br /&gt;
#&lt;br /&gt;
########## End - Add optional bad user agent or IP blocking code&lt;br /&gt;
&lt;br /&gt;
########## Begin - Rewrite rules to block out some common exploits&lt;br /&gt;
## If you experience problems on your site block out the operations listed below&lt;br /&gt;
## This attempts to block the most common type of exploit `attempts` to Joomla!&lt;br /&gt;
#&lt;br /&gt;
# If the request query string contains /proc/self/environ (by SigSiu.net)&lt;br /&gt;
RewriteCond %{QUERY_STRING} proc/self/environ [OR]&lt;br /&gt;
# Block out any script trying to set a mosConfig value through the URL&lt;br /&gt;
# (these attacks wouldn&#039;t work w/out Joomla! 1.5&#039;s Legacy Mode plugin)&lt;br /&gt;
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]&lt;br /&gt;
# Block out any script trying to base64_encode or base64_decode data within the URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [OR]&lt;br /&gt;
## IMPORTANT: If the above line throws an HTTP 500 error, replace it with these 2 lines:&lt;br /&gt;
# RewriteCond %{QUERY_STRING} base64_encode\(.*\) [OR]&lt;br /&gt;
# RewriteCond %{QUERY_STRING} base64_decode\(.*\) [OR]&lt;br /&gt;
# Block out any script that includes a &amp;lt;script&amp;gt; tag in URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} (&amp;lt;|%3C)([^s]*s)+cript.*(&amp;gt;|%3E) [NC,OR]&lt;br /&gt;
# Block out any script trying to set a PHP GLOBALS variable via URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]&lt;br /&gt;
# Block out any script trying to modify a _REQUEST variable via URL&lt;br /&gt;
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})&lt;br /&gt;
# Return 403 Forbidden header and show the content of the root homepage&lt;br /&gt;
RewriteRule .* index.php [F]&lt;br /&gt;
#&lt;br /&gt;
########## End - Rewrite rules to block out some common exploits&lt;br /&gt;
&lt;br /&gt;
########## Begin - File injection protection, by SigSiu.net&lt;br /&gt;
RewriteCond %{REQUEST_METHOD} GET&lt;br /&gt;
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
########## End - File injection protection&lt;br /&gt;
&lt;br /&gt;
########## Begin - Basic antispam Filter, by SigSiu.net&lt;br /&gt;
## I removed some common words, tweak to your liking&lt;br /&gt;
## This code uses PCRE and works only with Apache 2.x.&lt;br /&gt;
## This code will NOT work with Apache 1.x servers.&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(ambien|blue\spill|cialis|cocaine|ejaculation|erectile)\b [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(erections|hoodia|huronriveracres|impotence|levitra|libido)\b [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} \b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)\b [NC]&lt;br /&gt;
## Note: The final RewriteCond must NOT use the [OR] flag.&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
## Note: The previous lines are a &amp;quot;compressed&amp;quot; version&lt;br /&gt;
## of the filters. You can add your own filters as:&lt;br /&gt;
## RewriteCond %{QUERY_STRING} \bbadword\b [NC,OR]&lt;br /&gt;
## where &amp;quot;badword&amp;quot; is the word you want to exclude.&lt;br /&gt;
########## End - Basic antispam Filter, by SigSiu.net&lt;br /&gt;
&lt;br /&gt;
########## Begin - Advanced server protection - query strings, referrer and config&lt;br /&gt;
# Advanced server protection, version 3.2 - May 2011&lt;br /&gt;
# by Nicholas K. Dionysopoulos&lt;br /&gt;
&lt;br /&gt;
## Disallow PHP Easter Eggs (can be used in fingerprinting attacks to determine&lt;br /&gt;
## your PHP version). See http://www.0php.com/php_easter_egg.php and&lt;br /&gt;
## http://osvdb.org/12184 for more information&lt;br /&gt;
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
&lt;br /&gt;
## SQLi first line of defense, thanks to Radek Suski (SigSiu.net) @&lt;br /&gt;
## http://www.sigsiu.net/presentations/fortifying_your_joomla_website.html&lt;br /&gt;
## May cause problems on legitimate requests&lt;br /&gt;
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]&lt;br /&gt;
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
&lt;br /&gt;
## Referrer filtering for common media files. Replace with your own domain name.&lt;br /&gt;
## This blocks most common fingerprinting attacks ;)&lt;br /&gt;
## Note: Change www\.example\.com with your own domain name, substituting the&lt;br /&gt;
## dots with \.  i.e. use www\.example\.com for www.example.com&lt;br /&gt;
RewriteRule ^images/stories/([^/]+/)*([^/.]+\.)+(jp(e?g|2)?|png|gif|bmp|css|js|swf|ico)$ - [L]&lt;br /&gt;
RewriteCond %{HTTP_REFERER} .&lt;br /&gt;
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} -f&lt;br /&gt;
RewriteRule \.(jp(e?g|2)?|png|gif|bmp|css|js|swf|ico)$ - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow visual fingerprinting of Joomla! sites (module position dump)&lt;br /&gt;
## Initial idea by Brian Teeman and Ken Crowder, see:&lt;br /&gt;
## http://www.slideshare.net/brianteeman/hidden-joomla-secrets&lt;br /&gt;
## Improved by @nikosdion to work more efficiently and handle template&lt;br /&gt;
## and tmpl query parameters&lt;br /&gt;
RewriteCond %{QUERY_STRING} (^|&amp;amp;)tmpl=(component|system) [NC]&lt;br /&gt;
RewriteRule .* - [L]&lt;br /&gt;
RewriteCond %{QUERY_STRING} (^|&amp;amp;)t(p|emplate|mpl)= [NC]&lt;br /&gt;
RewriteRule .* - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow access to htaccess.txt, configuration.php, configuration.php-dist and php.ini&lt;br /&gt;
RewriteRule ^(htaccess\.txt|configuration\.php(-dist)?|php\.ini)$ - [F]&lt;br /&gt;
&lt;br /&gt;
########## End - Advanced server protection - query strings, referrer and config&lt;br /&gt;
&lt;br /&gt;
########## Begin - Advanced server protection rules exceptions ####&lt;br /&gt;
##&lt;br /&gt;
## These are sample exceptions to the Advanced Server Protection 3.1&lt;br /&gt;
## rule set further down this file.&lt;br /&gt;
##&lt;br /&gt;
## Allow UddeIM CAPTCHA&lt;br /&gt;
RewriteRule ^components/com_uddeim/captcha15\.php$ - [L]&lt;br /&gt;
## Allow Phil Taylor&#039;s Turbo Gears&lt;br /&gt;
RewriteRule ^plugins/system/GoogleGears/gears-manifest\.php$ - [L]&lt;br /&gt;
## Allow JoomlaWorks AllVideos&lt;br /&gt;
RewriteRule ^plugins/content/jw_allvideos/includes/jw_allvideos_scripts\.php$ - [L]&lt;br /&gt;
## Allow Admin Tools Joomla! updater to run&lt;br /&gt;
RewriteRule ^administrator/components/com_admintools/restore\.php$ - [L]&lt;br /&gt;
## Allow Akeeba Backup Professional&#039;s integrated restoration script to run&lt;br /&gt;
RewriteRule ^administrator/components/com_akeeba/restore\.php$ - [L]&lt;br /&gt;
## Allow Akeeba Kickstart&lt;br /&gt;
RewriteRule ^kickstart\.php$ - [L]&lt;br /&gt;
&lt;br /&gt;
# Add more rules to single PHP files here&lt;br /&gt;
&lt;br /&gt;
## Allow Agora attachments, but not PHP files in that directory!&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !(\.php)$&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} -f&lt;br /&gt;
RewriteRule ^components/com_agora/img/members/ - [L]&lt;br /&gt;
&lt;br /&gt;
# Add more rules for allowing full access (except PHP files) on more directories here&lt;br /&gt;
&lt;br /&gt;
## Uncomment to allow full access to the cache directory (strongly not recommended!)&lt;br /&gt;
#RewriteRule ^cache/ - [L]&lt;br /&gt;
## Uncomment to allow full access to the tmp directory (strongly not recommended!)&lt;br /&gt;
#RewriteRule ^tmp/ - [L]&lt;br /&gt;
&lt;br /&gt;
# Add more full access rules here&lt;br /&gt;
&lt;br /&gt;
########## End - Advanced server protection rules exceptions ####&lt;br /&gt;
&lt;br /&gt;
########## Begin - Advanced server protection - paths and files&lt;br /&gt;
# Advanced server protection, version 3.2 - May 2011&lt;br /&gt;
# by Nicholas K. Dionysopoulos&lt;br /&gt;
&lt;br /&gt;
## Back-end protection&lt;br /&gt;
## This also blocks fingerprinting attacks browsing for XML and INI files&lt;br /&gt;
RewriteRule ^administrator/?$ - [L]&lt;br /&gt;
RewriteRule ^administrator/index\.(php|html?)$ - [L]&lt;br /&gt;
RewriteRule ^administrator/index[23]\.php$ - [L]&lt;br /&gt;
RewriteRule ^administrator/(components|modules|templates|images|plugins)/([^/]+/)*([^/.]+\.)+(jp(e?g|2)?|png|gif|bmp|css|js|swf|html?|mp(eg?|[34])|avi|wav|og[gv]|xlsx?|docx?|pptx?|zip|rar|pdf|xps|txt|7z|svg|od[tsp]|flv|mov)$ - [L]&lt;br /&gt;
RewriteRule ^administrator/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Explicitly allow access only to XML-RPC&#039;s xmlrpc/index.php or plain xmlrpc/ directory&lt;br /&gt;
RewriteRule ^xmlrpc/(index\.php)?$ - [L]&lt;br /&gt;
RewriteRule ^xmlrpc/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow front-end access for certain Joomla! system directories&lt;br /&gt;
RewriteRule ^includes/js/ - [L]&lt;br /&gt;
RewriteRule ^(cache|includes|language|libraries|logs|tmp)/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Allow limited access for certain Joomla! system directories with client-accessible content&lt;br /&gt;
RewriteRule ^(components|modules|plugins|templates)/([^/]+/)*([^/.]+\.)+(jp(e?g|2)?|png|gif|bmp|css|js|swf|html?|mp(eg?|[34])|avi|wav|og[gv]|xlsx?|docx?|pptx?|zip|rar|pdf|xps|txt|7z|svg|od[tsp]|flv|mov)$ - [L]&lt;br /&gt;
## Uncomment this line if you have extensions which require direct access to their own&lt;br /&gt;
## custom index.php files. Note that this is UNSAFE and the developer should be ashamed&lt;br /&gt;
## for being so lame, lazy and security unconscious.&lt;br /&gt;
# RewriteRule ^(components|modules|plugins|templates)/([^/]+/)*(index\.php)?$ - [L]&lt;br /&gt;
## Uncomment the following line if your template requires direct access to PHP files&lt;br /&gt;
## inside its directory, e.g. GZip compressed copies of its CSS files&lt;br /&gt;
# RewriteRule ^templates/([^/]+/)*([^/.]+\.)+php$ - [L]&lt;br /&gt;
RewriteRule ^(components|modules|plugins|templates)/ - [F]&lt;br /&gt;
&lt;br /&gt;
## Disallow access to rogue PHP files throughout the site, unless they are explicitly allowed&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} \.php$&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !/index[23]?\.php$&lt;br /&gt;
## The next line is to explicitly allow the forum post assistant(fpa-xx)script to run&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !/fpa-[a-z]{2}\.php&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} -f&lt;br /&gt;
RewriteRule ^([^/]+/)*([^/.]+\.)+php$ - [F]&lt;br /&gt;
&lt;br /&gt;
########## End - Advanced server protection - paths and files&lt;br /&gt;
&lt;br /&gt;
########## Begin - Google Apps redirection, by Komra.de&lt;br /&gt;
## Uncomment the following line to enable:&lt;br /&gt;
# RewriteRule ^mail http://mail.google.com/a/example.com [R=301,L]&lt;br /&gt;
## If the above doesn&#039;t work on your server, try this:&lt;br /&gt;
## RewriteRule ^mail http://mail.google.com/a/example.com [R,L]&lt;br /&gt;
########## End - Google Apps redirection&lt;br /&gt;
&lt;br /&gt;
########## Begin - Custom redirects&lt;br /&gt;
#&lt;br /&gt;
# If you need to redirect some pages, place that code here. Ensure those&lt;br /&gt;
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.&lt;br /&gt;
#&lt;br /&gt;
########## End - Custom redirects&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect (www.)olddomain.com to www.example.com&lt;br /&gt;
## Note: olddomain.com is your old domain name, you want to redirect FROM,&lt;br /&gt;
## whereas www.example.com is the new domain name you want to redirect TO.&lt;br /&gt;
## Change those names to reflect your current configuration. Remember, this&lt;br /&gt;
## small part of the file is supposed to be placed in www.olddomain.com!&lt;br /&gt;
## Note: Replace [R=301,L] with [R,L] if you get error 500.&lt;br /&gt;
## Uncomment the following lines to enable:&lt;br /&gt;
# RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com [NC]&lt;br /&gt;
# RewriteRule (.*) http://www.example.com/$1 [R=301,L]&lt;br /&gt;
## Note: The above section is only required if you are changing your domain name.&lt;br /&gt;
########## End - Redirect (www.)olddomain.com to www.example.com&lt;br /&gt;
&lt;br /&gt;
########## Begin - Force HTTPS for certain pages&lt;br /&gt;
# Force the page foobar.html to run in HTTPS mode, no matter what Joomla! says.&lt;br /&gt;
# This is a sample redirection for foobar.html. Do note that you have to change&lt;br /&gt;
# www.example.com to reflect your own domain. Remember to escape the dots using&lt;br /&gt;
# \. in the left hand side of each rule. You need BOTH LINES PER URL for the rule&lt;br /&gt;
# to work.&lt;br /&gt;
RewriteCond %{SERVER_PORT} !^443$&lt;br /&gt;
## Alternatively, comment the above line and uncomment the following line:&lt;br /&gt;
# RewriteCond %{HTTPS} ^off$ [NC]&lt;br /&gt;
RewriteRule ^foobar\.html$ https://www.example.com/foobar.html [R=301,L]&lt;br /&gt;
## NOTE: If you get an HTTP 500 error, please swap [R=301,L] with [R,L]&lt;br /&gt;
# Add more rules below this line as required&lt;br /&gt;
########## End - Force HTTPS for certain pages&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect index.php to /&lt;br /&gt;
## Note: Change example.com to reflect your own domain name&lt;br /&gt;
RewriteCond %{THE_REQUEST} !^POST&lt;br /&gt;
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/&lt;br /&gt;
RewriteCond %{SERVER_PORT}&amp;gt;s ^(443&amp;gt;(s)|[0-9]+&amp;gt;s)$&lt;br /&gt;
RewriteRule ^index\.php$ http%2://www.example.com/$1 [R=301,L]&lt;br /&gt;
## If the above line throws a 500 error, change [R=301,L] to [R,L]&lt;br /&gt;
########## End - Redirect index.php to /&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect non-www to www&lt;br /&gt;
RewriteCond %{HTTP_HOST} !^www\. [NC]&lt;br /&gt;
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]&lt;br /&gt;
## If the above throws an HTTP 500 error, swap [R=301,L] with [R,L]&lt;br /&gt;
########## End - Redirect non-www to www&lt;br /&gt;
&lt;br /&gt;
########## Begin - Redirect www to non-www&lt;br /&gt;
## WARNING: Comment out the non-www to www rule if you choose to use this&lt;br /&gt;
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]&lt;br /&gt;
# RewriteRule ^(.*)$ http://%1/$1 [R=301,L]&lt;br /&gt;
## If the above throws an HTTP 500 error, swap [R=301,L] with [R,L]&lt;br /&gt;
########## End - Redirect non-www to www&lt;br /&gt;
&lt;br /&gt;
########## Begin - Custom internal rewrites&lt;br /&gt;
#&lt;br /&gt;
# If you need to internally rewrite some specific URL requests,&lt;br /&gt;
# place that code here. Ensure those internal rewrites use the&lt;br /&gt;
# correct RewriteRule syntax without domain name and with [L] flag.&lt;br /&gt;
#&lt;br /&gt;
########## End - Custom internal rewrites&lt;br /&gt;
&lt;br /&gt;
########## Begin - Joomla! core SEF Section&lt;br /&gt;
#&lt;br /&gt;
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]&lt;br /&gt;
#&lt;br /&gt;
# If the requested path and file is not /index.php and the request&lt;br /&gt;
# has not already been internally rewritten to the index.php script&lt;br /&gt;
RewriteCond %{REQUEST_URI} !^/index\.php&lt;br /&gt;
# and the request is for the site root, or for an extensionless URL,&lt;br /&gt;
# or the requested URL ends with one of the listed extensions&lt;br /&gt;
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw|ini|zip|json|file))$ [NC]&lt;br /&gt;
# and the requested path and file doesn&#039;t directly match a physical file&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
# and the requested path doesn&#039;t directly match a physical folder&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
# internally rewrite the request to the index.php script&lt;br /&gt;
RewriteRule .* index.php [L]&lt;br /&gt;
#&lt;br /&gt;
########## End - Joomla! core SEF Section&lt;br /&gt;
&lt;br /&gt;
########## Begin - Optimal default expiration time&lt;br /&gt;
## Note: this might cause problems and you might have to comment it out by&lt;br /&gt;
## placing a hash in front of this section&#039;s lines&lt;br /&gt;
&amp;lt;IfModule mod_expires.c&amp;gt;&lt;br /&gt;
	# Enable expiration control&lt;br /&gt;
	ExpiresActive On&lt;br /&gt;
&lt;br /&gt;
	# Default expiration: 1 hour after request&lt;br /&gt;
	ExpiresDefault &amp;quot;now plus 1 hour&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	# CSS and JS expiration: 1 week after request&lt;br /&gt;
	ExpiresByType text/css &amp;quot;now plus 1 week&amp;quot;&lt;br /&gt;
	ExpiresByType application/javascript &amp;quot;now plus 1 week&amp;quot;&lt;br /&gt;
	ExpiresByType application/x-javascript &amp;quot;now plus 1 week&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	# Image files expiration: 1 month after request&lt;br /&gt;
	ExpiresByType image/bmp &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/gif &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/jpeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/jp2 &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/pipeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/png &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/svg+xml &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/tiff &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/vnd.microsoft.icon &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/x-icon &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/ico &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/icon &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType text/ico &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType application/ico &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType image/vnd.wap.wbmp &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType application/vnd.wap.wbxml &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType application/smil &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	# Audio files expiration: 1 month after request&lt;br /&gt;
	ExpiresByType audio/basic &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType audio/mid &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType audio/midi &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType audio/mpeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType audio/x-aiff &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType audio/x-mpegurl &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType audio/x-pn-realaudio &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType audio/x-wav &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	# Movie files expiration: 1 month after request&lt;br /&gt;
	ExpiresByType application/x-shockwave-flash &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType x-world/x-vrml &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType video/x-msvideo &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType video/mpeg &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType video/mp4 &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType video/quicktime &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType video/x-la-asf &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
	ExpiresByType video/x-ms-asf &amp;quot;now plus 1 month&amp;quot;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
########## End - Optimal expiration time&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://perishablepress.com/press/tag/htaccess/ .htaccess tag archive @ perishablepress.com]&lt;br /&gt;
&lt;br /&gt;
[http://akeeba.assembla.com/code/master-htaccess/git/nodes/htaccess.txt Proposed &amp;quot;master htaccess&amp;quot; (updated by Nicholas on April 24th 2011 to v3.3) DO read the intro by Nicholas!]&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
&lt;br /&gt;
The original file contains a number of syntax errors, several rules that can never work, and a number of expressions that can be more efficiently coded.&lt;br /&gt;
&lt;br /&gt;
Bugs and enhancements originally discussed at: http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=549841&lt;br /&gt;
&lt;br /&gt;
Discussion also at: http://snipt.net/nikosdion/the-master-htaccess/ and http://snipt.net/g1smd/joomla-patch/&lt;br /&gt;
&lt;br /&gt;
The new proposed file: http://code.google.com/p/joomla-master-htaccess/source/list and at: http://akeeba.assembla.com/code/master-htaccess/git/node/logs&lt;br /&gt;
&lt;br /&gt;
The changes explained, line by line: &lt;br /&gt;
http://codereview.appspot.com/4312049/diff/1/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4290071/diff/1/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4290071/diff/8001/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4370051/diff/3/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4314051/diff/1001/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4430062/diff/1/joomla-master-htaccess.txt&lt;br /&gt;
http://codereview.appspot.com/4528051/diff/1/joomla-master-htaccess.txt&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User_talk:Phild&amp;diff=100244</id>
		<title>User talk:Phild</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User_talk:Phild&amp;diff=100244"/>
		<updated>2013-06-13T10:59:25Z</updated>

		<summary type="html">&lt;p&gt;Phild: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi Phil, I finally had some time to come up with an archive solution for [[Moving sensitive files outside the web root]]. I used your reason on the page and provided links to other articles. Someone can still see the original page by clicking on the &#039;&#039;&#039;click here&#039;&#039;&#039; link in the page which is the last revision with all the information in it. Hope that&#039;s what you had in mind. Take care [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 07:00, 26 November 2012 (CST)&lt;br /&gt;
&lt;br /&gt;
== Archiving the VEL ==&lt;br /&gt;
&lt;br /&gt;
Hi Phil&lt;br /&gt;
&lt;br /&gt;
Hope you&#039;re doing great.  As you may have noticed, there are lots of changes going on around the wiki. We eventually will be moving the VEL list of Extension over to the Archived namespace now that you guys have your own subdomain. Congratulations on that too! It will look like this page at the top, [[Archived:Joomla! 1.6 Development Status]]. It creates a more prominent, this page is archived, don&#039;t rely on it for information. Because it is a move, I will leave a redirect in place which will forward any links to the original VEL page to the Archived page. Take care [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 17:04, 12 June 2013 (CDT)&lt;br /&gt;
&lt;br /&gt;
Ok, That looks and sounds good to me. Thanks for the update!&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;diff=100221</id>
		<title>Security Checklist/You have been hacked or defaced</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;diff=100221"/>
		<updated>2013-06-12T16:10:42Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* On Line Action List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== You have been hacked/defaced ?==&lt;br /&gt;
We are sorry for any basic language used in this document.&lt;br /&gt;
Before you post in the Joomla! Security Forum [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=475313 please read this] checklist summary, then use it as a post template.&lt;br /&gt;
&lt;br /&gt;
=== On Line Action List===&lt;br /&gt;
* Take your [[Taking_the_website_temporarily_offline#Using the htaccess method (cpanel)|website offline]] (&#039;&#039;&#039;We recommend the htaccess method&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* Run the [https://github.com/ForumPostAssistant/FPA/zipball/en-GB forum post assistant and security tool] The simple Instructions are [http://forum.joomla.org/viewtopic.php?f=621&amp;amp;t=582860 available here]. More detailed instructions are included in the download package. You will need to unzip this package and upload the fpa-en.php file to your server Joomla root The FPA is also [https://github.com/ForumPostAssistant/FPA/tarball/en-GB available in a tar.gz package] for those who desire or need a unix style package. The fpa-en.php file from the package will need to be uploaded to your server Joomla root.&lt;br /&gt;
&lt;br /&gt;
* Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc. (see [[#Local_Security|Local Security]] below)&lt;br /&gt;
&lt;br /&gt;
* Ensure you have downloaded the &#039;&#039;&#039;latest version&#039;&#039;&#039; of [http://www.joomla.org/download.html Joomla] for the series of Joomla used on the site. (see [[#incompatible_versions|Incompatible Versions]] below)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Notify your host&#039;&#039;&#039; and work with them to clean up the site, and to make sure there are no back doors to your site.&lt;br /&gt;
&lt;br /&gt;
* Review [http://vel.joomla.org/ Vulnerable Extensions List] to see if you have any vulnerable extensions and deal with them. A clue to any extensions being targeted is your logs file. Here is an example of what to look for,&lt;br /&gt;
&amp;lt;pre&amp;gt;//administrator/components/com_extension/admin.extension.php?mosConfig.absolute.path=http:&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;../../../../../../../../../../../../../../../../proc/self/environ&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Review and action [[Security Checklist]] to make sure you&#039;ve gone through all of the steps (please note some steps are optional, but please review them all).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Change all passwords&#039;&#039;&#039; and if possible user names for the domains control panel, mysql, FTP, [[Why_should_you_immediately_change_the_name_of_the_default_admin_user%3F|Joomla! Super Admin]], and Joomla! Admin password; do change them often. Passwords should be at least 12 mixed alphanumeric characters and contain no common word phrases. &lt;br /&gt;
* Do not use the standard Admin user, [[Why_should_you_immediately_change_the_name_of_the_default_admin_user%3F|disable it]]. If you need to reset your admin password, see [[How_do_you_recover_your_admin_password%3F|these instructions]]. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Delete and Replace&#039;&#039;&#039; all templates and files with clean copies,&lt;br /&gt;
* &#039;&#039;&#039;Check&#039;&#039;&#039; and/or replace all .pdf, image, photo files for exploits. Delete any that are suspicious&lt;br /&gt;
* Check you server logs for IP&#039;s calling suspicious files or attempting POST commands to non-form&#039;s&lt;br /&gt;
* Use proper permissions on files and directories. They &#039;&#039;&#039;should never be 777&amp;lt;ref&amp;gt;Permissions should never be 777&amp;lt;/ref&amp;gt;, but ideal is 644 for files and 755 folders&#039;&#039;&#039;.&lt;br /&gt;
* Disable [http://docs.cpanel.net/twiki/bin/view/AllDocumentation/CpanelDocs/AnonymousFTP anonymous] FTP&lt;br /&gt;
&lt;br /&gt;
== chmod and cron ==&lt;br /&gt;
&lt;br /&gt;
IF you have permissions to access SSH (secure shell) via putty you can chmod the files and directories.&lt;br /&gt;
If you do not have shell access, you can run the commands from [http://en.wikipedia.org/wiki/Cron cron] by setting up a temporary cron job. Copy and paste the command into a cron job. Run the job about 2 minutes after saving the job.&lt;br /&gt;
When using the command by putty or a cron job, the use of the full physical path to public_html is recommended for best results.&lt;br /&gt;
&lt;br /&gt;
For files use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -exec chmod 644 {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and for directories use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type d -exec chmod 755 {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitoring for File Changes ===&lt;br /&gt;
To check for recent file changes on your system use these commands from putty (SSH - secure shell) or via a cron job.&lt;br /&gt;
If you run the command from a cron job you can schedule it to check for changed files several times each day.&lt;br /&gt;
Results will be sent to the domain account owner and show the time/date stamp for any changed files.&lt;br /&gt;
When using the command by putty or a cron job, the use of the full physical path to public_html is recommended&lt;br /&gt;
for best results.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -ctime -1 -exec ls -ls {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note your sites files may be located in public_html, httpdocs, www, or a similar place, and your physical path may also be different than in the examples. Adjust the physical path accordingly.&lt;br /&gt;
&lt;br /&gt;
== 777 Permissions ==&lt;br /&gt;
&#039;&#039;&#039;If&#039;&#039;&#039; the server your are on requires 777 permissions for Joomla to work correctly,&lt;br /&gt;
then&#039;&#039;&#039; request to be put on another server&#039;&#039;&#039; with php as cgi and suphp and up-to-date&lt;br /&gt;
serverside software (apache, php etc) on your existing host or find another server host if necessary.&lt;br /&gt;
 &lt;br /&gt;
To protect directories that seemed to need 777 permissions to run or as a default in your images/media folder try this code within a .htaccess file within the open folder.&lt;br /&gt;
&amp;lt;pre&amp;gt;# secure directory by disabling script execution&lt;br /&gt;
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi&lt;br /&gt;
Options -ExecCGI&amp;lt;/pre&amp;gt; especially in your images folder&lt;br /&gt;
* Make sure that is in a htaccess file in a directory that will not run any scripts or remove the extensions as required&lt;br /&gt;
&lt;br /&gt;
Do check with your hosting provider to see if they have purposely secured the server your site is on; and that they &#039;&#039;&#039;or you&#039;&#039;&#039; perform regular (weekly) security updates to keep the server up to date.&lt;br /&gt;
Check you have jail shell. &lt;br /&gt;
A rule of thumb is the less you pay, the less they care&lt;br /&gt;
&lt;br /&gt;
== A Safe route for disaster relief ==&lt;br /&gt;
* save the configuration.php file and your images and personal files one by one, (not the folder as it may contain unwanted files)&lt;br /&gt;
* wipe the entire folder where Joomla! is installed&lt;br /&gt;
* upload a new clean full package latest version of joomla 1.5.x or Joomla 2.5.x (minus the install folder)&amp;lt;ref&amp;gt;Incompatible Versions&amp;lt;/ref&amp;gt;&lt;br /&gt;
* reupload your configuration file &amp;amp; images.&lt;br /&gt;
* reupload or reinstall the latest versions of your extensions , templates (even better is to use original clean copies to ensure that the hacker/defacer did not leave any shell script files in your site)&lt;br /&gt;
&lt;br /&gt;
To do this will take your site off line for around 15 minutes. To track down your hacked/defaced html may take hours or even longer.&lt;br /&gt;
&lt;br /&gt;
=== Local Security ===&lt;br /&gt;
&lt;br /&gt;
* Don&#039;t store user name/password in ftp program&lt;br /&gt;
** Use a password manager such as the free [http://keepass.info/ keepass]&lt;br /&gt;
&lt;br /&gt;
* Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc.&lt;br /&gt;
&lt;br /&gt;
* Several packages available are&lt;br /&gt;
** [http://www.eset.com/ ENOD32] from eSet&lt;br /&gt;
** [http://www.safer-networking.org/ Spybot Search and Destroy]&lt;br /&gt;
** [http://www.malwarebytes.org/ Malwarebytes]&lt;br /&gt;
** [http://www.microsoft.com/security/ Microsoft Malicious Software Removal Tool]&lt;br /&gt;
** [http://www.free-av.com/de/tools/12/avira_antivir_rescue_system.html Linux AntiVirus boot cd]&lt;br /&gt;
** [http://www.javacoolsoftware.com/spywareblaster.html spyware blaster]&lt;br /&gt;
** [http://www.siteadvisor.com/ siteadvisor]&lt;br /&gt;
* Consider the [http://ubcd4win.com/ Ultimate Boot CD for Windows] used for repairing, restoring, or diagnosing almost any home computer problem&lt;br /&gt;
&lt;br /&gt;
=== Other Considerations ===&lt;br /&gt;
&lt;br /&gt;
* Do not use the standard jos_ table prefix and avoid one click installers where possible&lt;br /&gt;
&lt;br /&gt;
* Set the [http://feeds.joomla.org/JoomlaSecurityNews?format=xml joomla security newsfeed] as the main top module in your joomla admin control panel. [[Screen.modulesadministrator.edit.15#Feed_Display|Set up the Security Newsfeed]] &lt;br /&gt;
** [[Screen.modulesadministrator.edit.15#How_to_access|Add the Admin Feed Display Module]] if it is missing. Enable it to the first place on your sites back end control panel.&lt;br /&gt;
&lt;br /&gt;
* Consider adding a [http://forum.joomla.org/viewtopic.php?p=1568940#p1568940 bot block list] to your .htaccess file&lt;br /&gt;
&lt;br /&gt;
* Use [http://en.wikipedia.org/wiki/SSH_file_transfer_protocol sFTP] instead of FTP where possible&lt;br /&gt;
&lt;br /&gt;
* Do not enable or use [http://en.wikipedia.org/wiki/File_Transfer_Protocol#Anonymous_FTP anonymous ftp] accounts for any reason.&lt;br /&gt;
&lt;br /&gt;
* Use a server that has [http://www.modsecurity.org/ mod_security] installed properly&lt;br /&gt;
&lt;br /&gt;
* Check for any added sub domains and/or added directories&lt;br /&gt;
&lt;br /&gt;
* Check for any [http://en.wikipedia.org/wiki/Common_Gateway_Interface cgi scripts]&lt;br /&gt;
&lt;br /&gt;
* Check [http://en.wikipedia.org/wiki/Cron cron] for any cron jobs not set up by domain administrator&lt;br /&gt;
&lt;br /&gt;
* Download and &amp;lt;ref&amp;gt;Review raw access and error logs.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Deny any IP&#039;s that you got to the IP ban on your site but it may belong to a proxy site.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Was your site hacked in the past&#039;&#039;&#039; and proper site sanitation not used to remove actual&lt;br /&gt;
 (and hidden) hack thus leaving a backdoor for reinfection.&lt;br /&gt;
&lt;br /&gt;
* Consider removing &amp;quot;[http://docs.joomla.org/How_do_you_remove_or_change_the_%22Welcome_to_the_Frontpage%22_title%3F welcome to the front page]&amp;quot; to reduce [http://www.google.co.uk/search?q=intext%3A+welcome+to+the+front+page+joomla&amp;amp; search engine attacks]. &lt;br /&gt;
&lt;br /&gt;
* Completely remove/uninstall, don&#039;t unpublish unused or vulnerable extensions. [[Why_isn&#039;t_un-publishing_a_vulnerable_extension_enough_to_protect_your_site%3F|Un-publishing a vulnerable extension will not protect your site.]]&lt;br /&gt;
&lt;br /&gt;
=== Malicious Code or Odd Links appearing on your site ===&lt;br /&gt;
&lt;br /&gt;
Check that the original template file does or does not insert the [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=411735 unwanted code/Malicious Javascript ] or that you downloaded a paid for template from a non trusted source eg file sharing sites&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.iss.net/threats/gumblar.html Gumblar]&#039;&#039;&#039; doesn’t use any particular script vulnerability.&lt;br /&gt;
This script is injected into every web page ( I would imagine though not confirmed, if infected page is edited then saved it will also be in database) on a site.&lt;br /&gt;
Script changes every time it is accessed.&lt;br /&gt;
It has been seen on phpBB, SMF and vBulletin forums, on WordPress 2.7.1 blogs, on proprietary PHP sites.&lt;br /&gt;
The script starts with &#039;&#039;(function(&#039;&#039; and has no name and is obfusticated.&lt;br /&gt;
A common Gumblar version breaks sites due to a bug in script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;iFrames&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In recent iframe exploits the malicious code was only injected into files with most common filenames (e.g. index.html, index.php, etc.). [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=411735 Related Forum Sticky]&lt;br /&gt;
&lt;br /&gt;
=== Contributors &amp;amp; Editing === &lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=28000 mandville]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=67439 PhilD]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=3701 fw116]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=322239 JeffChannell]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=339316 dynamicnet]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
When your hosting provider runs PHP as an Apache Module it executes as the user/group of the webserver which is usually &amp;quot;nobody&amp;quot;, &amp;quot;httpd&amp;quot; or &amp;quot;apache&amp;quot;. Under this (ownership) mode, files or directories that you require your php scripts to be able to write do need 777 permissions (read/write/execute at user/group/world level) if the ownership of the files and directories are not Chown (Change Owner) to the User. Such a scenario is absolute unacceptable  from a security perspective since &#039;777&#039; not only allows the webserver to write to the file; it also allows anyone else to read or write to the file.&lt;br /&gt;
If your provider is not able to change this, one should strongly consider changing host!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Logs&#039;&#039;&#039;&lt;br /&gt;
Make sure that in your control panel your raw access logs have been activated for review!&lt;br /&gt;
&lt;br /&gt;
Raw Access Logs allow you to see who has accessed your site without the use of graphs, charts or other graphics. in cPanel for instance you can use the Raw Access Logs menu to download a zipped version of the server&#039;s access log for your site. This can be very useful when you need to see who is accessing your site quickly. Many people forget that this needs to be activated by the user of the account and is not automatically activated upon the creation of a hosting account in cPanel for instance!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;incompatible_versions&amp;quot; /&amp;gt;&#039;&#039;&#039;Incompatible Versions&#039;&#039;&#039;&lt;br /&gt;
This document applies to all versions of Joomla. Use the latest version of Joomla that is compatible with your existing Joomla websites version to repair your site. Some version upgrades require a [[Migrating_from_Joomla_1.5_to_Joomla_2.5|site migration]] and will render your Joomla site inoperative if used to replace an earlier version of Joomla when repairing site hacking. For example: Do not replace a 1.5.xx based site with version 2.5.xx of Joomla. Doing so will leave the site in an inoperative state and may also result in a loss of data.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;diff=100220</id>
		<title>Security Checklist/You have been hacked or defaced</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;diff=100220"/>
		<updated>2013-06-12T16:08:32Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* References */ added anchor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== You have been hacked/defaced ?==&lt;br /&gt;
We are sorry for any basic language used in this document.&lt;br /&gt;
Before you post in the Joomla! Security Forum [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=475313 please read this] checklist summary, then use it as a post template.&lt;br /&gt;
&lt;br /&gt;
=== On Line Action List===&lt;br /&gt;
* Take your [[Taking_the_website_temporarily_offline#Using the htaccess method (cpanel)|website offline]] (&#039;&#039;&#039;We recommend the htaccess method&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* Run the [https://github.com/ForumPostAssistant/FPA/zipball/en-GB forum post assistant and security tool] The simple Instructions are [http://forum.joomla.org/viewtopic.php?f=621&amp;amp;t=582860 available here]. More detailed instructions are included in the download package. You will need to unzip this package and upload the fpa-en.php file to your server Joomla root The FPA is also [https://github.com/ForumPostAssistant/FPA/tarball/en-GB available in a tar.gz package] for those who desire or need a unix style package. The fpa-en.php file from the package will need to be uploaded to your server Joomla root.&lt;br /&gt;
&lt;br /&gt;
* Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc. (see [[#Local_Security|Local Security]] below)&lt;br /&gt;
&lt;br /&gt;
* Ensure you have downloaded the &#039;&#039;&#039;latest version&#039;&#039;&#039; of [http://www.joomla.org/download.html Joomla] for the series of Joomla used on the site.(see [[#Incompatible Versions|Incompatible Versions]] below).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Notify your host&#039;&#039;&#039; and work with them to clean up the site, and to make sure there are no back doors to your site.&lt;br /&gt;
&lt;br /&gt;
* Review [http://vel.joomla.org/ Vulnerable Extensions List] to see if you have any vulnerable extensions and deal with them. A clue to any extensions being targeted is your logs file. Here is an example of what to look for,&lt;br /&gt;
&amp;lt;pre&amp;gt;//administrator/components/com_extension/admin.extension.php?mosConfig.absolute.path=http:&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;../../../../../../../../../../../../../../../../proc/self/environ&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Review and action [[Security Checklist]] to make sure you&#039;ve gone through all of the steps (please note some steps are optional, but please review them all).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Change all passwords&#039;&#039;&#039; and if possible user names for the domains control panel, mysql, FTP, [[Why_should_you_immediately_change_the_name_of_the_default_admin_user%3F|Joomla! Super Admin]], and Joomla! Admin password; do change them often. Passwords should be at least 12 mixed alphanumeric characters and contain no common word phrases. &lt;br /&gt;
* Do not use the standard Admin user, [[Why_should_you_immediately_change_the_name_of_the_default_admin_user%3F|disable it]]. If you need to reset your admin password, see [[How_do_you_recover_your_admin_password%3F|these instructions]]. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Delete and Replace&#039;&#039;&#039; all templates and files with clean copies,&lt;br /&gt;
* &#039;&#039;&#039;Check&#039;&#039;&#039; and/or replace all .pdf, image, photo files for exploits. Delete any that are suspicious&lt;br /&gt;
* Check you server logs for IP&#039;s calling suspicious files or attempting POST commands to non-form&#039;s&lt;br /&gt;
* Use proper permissions on files and directories. They &#039;&#039;&#039;should never be 777&amp;lt;ref&amp;gt;Permissions should never be 777&amp;lt;/ref&amp;gt;, but ideal is 644 for files and 755 folders&#039;&#039;&#039;.&lt;br /&gt;
* Disable [http://docs.cpanel.net/twiki/bin/view/AllDocumentation/CpanelDocs/AnonymousFTP anonymous] FTP&lt;br /&gt;
&lt;br /&gt;
== chmod and cron ==&lt;br /&gt;
&lt;br /&gt;
IF you have permissions to access SSH (secure shell) via putty you can chmod the files and directories.&lt;br /&gt;
If you do not have shell access, you can run the commands from [http://en.wikipedia.org/wiki/Cron cron] by setting up a temporary cron job. Copy and paste the command into a cron job. Run the job about 2 minutes after saving the job.&lt;br /&gt;
When using the command by putty or a cron job, the use of the full physical path to public_html is recommended for best results.&lt;br /&gt;
&lt;br /&gt;
For files use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -exec chmod 644 {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and for directories use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type d -exec chmod 755 {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitoring for File Changes ===&lt;br /&gt;
To check for recent file changes on your system use these commands from putty (SSH - secure shell) or via a cron job.&lt;br /&gt;
If you run the command from a cron job you can schedule it to check for changed files several times each day.&lt;br /&gt;
Results will be sent to the domain account owner and show the time/date stamp for any changed files.&lt;br /&gt;
When using the command by putty or a cron job, the use of the full physical path to public_html is recommended&lt;br /&gt;
for best results.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -ctime -1 -exec ls -ls {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note your sites files may be located in public_html, httpdocs, www, or a similar place, and your physical path may also be different than in the examples. Adjust the physical path accordingly.&lt;br /&gt;
&lt;br /&gt;
== 777 Permissions ==&lt;br /&gt;
&#039;&#039;&#039;If&#039;&#039;&#039; the server your are on requires 777 permissions for Joomla to work correctly,&lt;br /&gt;
then&#039;&#039;&#039; request to be put on another server&#039;&#039;&#039; with php as cgi and suphp and up-to-date&lt;br /&gt;
serverside software (apache, php etc) on your existing host or find another server host if necessary.&lt;br /&gt;
 &lt;br /&gt;
To protect directories that seemed to need 777 permissions to run or as a default in your images/media folder try this code within a .htaccess file within the open folder.&lt;br /&gt;
&amp;lt;pre&amp;gt;# secure directory by disabling script execution&lt;br /&gt;
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi&lt;br /&gt;
Options -ExecCGI&amp;lt;/pre&amp;gt; especially in your images folder&lt;br /&gt;
* Make sure that is in a htaccess file in a directory that will not run any scripts or remove the extensions as required&lt;br /&gt;
&lt;br /&gt;
Do check with your hosting provider to see if they have purposely secured the server your site is on; and that they &#039;&#039;&#039;or you&#039;&#039;&#039; perform regular (weekly) security updates to keep the server up to date.&lt;br /&gt;
Check you have jail shell. &lt;br /&gt;
A rule of thumb is the less you pay, the less they care&lt;br /&gt;
&lt;br /&gt;
== A Safe route for disaster relief ==&lt;br /&gt;
* save the configuration.php file and your images and personal files one by one, (not the folder as it may contain unwanted files)&lt;br /&gt;
* wipe the entire folder where Joomla! is installed&lt;br /&gt;
* upload a new clean full package latest version of joomla 1.5.x or Joomla 2.5.x (minus the install folder)&amp;lt;ref&amp;gt;Incompatible Versions&amp;lt;/ref&amp;gt;&lt;br /&gt;
* reupload your configuration file &amp;amp; images.&lt;br /&gt;
* reupload or reinstall the latest versions of your extensions , templates (even better is to use original clean copies to ensure that the hacker/defacer did not leave any shell script files in your site)&lt;br /&gt;
&lt;br /&gt;
To do this will take your site off line for around 15 minutes. To track down your hacked/defaced html may take hours or even longer.&lt;br /&gt;
&lt;br /&gt;
=== Local Security ===&lt;br /&gt;
&lt;br /&gt;
* Don&#039;t store user name/password in ftp program&lt;br /&gt;
** Use a password manager such as the free [http://keepass.info/ keepass]&lt;br /&gt;
&lt;br /&gt;
* Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc.&lt;br /&gt;
&lt;br /&gt;
* Several packages available are&lt;br /&gt;
** [http://www.eset.com/ ENOD32] from eSet&lt;br /&gt;
** [http://www.safer-networking.org/ Spybot Search and Destroy]&lt;br /&gt;
** [http://www.malwarebytes.org/ Malwarebytes]&lt;br /&gt;
** [http://www.microsoft.com/security/ Microsoft Malicious Software Removal Tool]&lt;br /&gt;
** [http://www.free-av.com/de/tools/12/avira_antivir_rescue_system.html Linux AntiVirus boot cd]&lt;br /&gt;
** [http://www.javacoolsoftware.com/spywareblaster.html spyware blaster]&lt;br /&gt;
** [http://www.siteadvisor.com/ siteadvisor]&lt;br /&gt;
* Consider the [http://ubcd4win.com/ Ultimate Boot CD for Windows] used for repairing, restoring, or diagnosing almost any home computer problem&lt;br /&gt;
&lt;br /&gt;
=== Other Considerations ===&lt;br /&gt;
&lt;br /&gt;
* Do not use the standard jos_ table prefix and avoid one click installers where possible&lt;br /&gt;
&lt;br /&gt;
* Set the [http://feeds.joomla.org/JoomlaSecurityNews?format=xml joomla security newsfeed] as the main top module in your joomla admin control panel. [[Screen.modulesadministrator.edit.15#Feed_Display|Set up the Security Newsfeed]] &lt;br /&gt;
** [[Screen.modulesadministrator.edit.15#How_to_access|Add the Admin Feed Display Module]] if it is missing. Enable it to the first place on your sites back end control panel.&lt;br /&gt;
&lt;br /&gt;
* Consider adding a [http://forum.joomla.org/viewtopic.php?p=1568940#p1568940 bot block list] to your .htaccess file&lt;br /&gt;
&lt;br /&gt;
* Use [http://en.wikipedia.org/wiki/SSH_file_transfer_protocol sFTP] instead of FTP where possible&lt;br /&gt;
&lt;br /&gt;
* Do not enable or use [http://en.wikipedia.org/wiki/File_Transfer_Protocol#Anonymous_FTP anonymous ftp] accounts for any reason.&lt;br /&gt;
&lt;br /&gt;
* Use a server that has [http://www.modsecurity.org/ mod_security] installed properly&lt;br /&gt;
&lt;br /&gt;
* Check for any added sub domains and/or added directories&lt;br /&gt;
&lt;br /&gt;
* Check for any [http://en.wikipedia.org/wiki/Common_Gateway_Interface cgi scripts]&lt;br /&gt;
&lt;br /&gt;
* Check [http://en.wikipedia.org/wiki/Cron cron] for any cron jobs not set up by domain administrator&lt;br /&gt;
&lt;br /&gt;
* Download and &amp;lt;ref&amp;gt;Review raw access and error logs.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Deny any IP&#039;s that you got to the IP ban on your site but it may belong to a proxy site.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Was your site hacked in the past&#039;&#039;&#039; and proper site sanitation not used to remove actual&lt;br /&gt;
 (and hidden) hack thus leaving a backdoor for reinfection.&lt;br /&gt;
&lt;br /&gt;
* Consider removing &amp;quot;[http://docs.joomla.org/How_do_you_remove_or_change_the_%22Welcome_to_the_Frontpage%22_title%3F welcome to the front page]&amp;quot; to reduce [http://www.google.co.uk/search?q=intext%3A+welcome+to+the+front+page+joomla&amp;amp; search engine attacks]. &lt;br /&gt;
&lt;br /&gt;
* Completely remove/uninstall, don&#039;t unpublish unused or vulnerable extensions. [[Why_isn&#039;t_un-publishing_a_vulnerable_extension_enough_to_protect_your_site%3F|Un-publishing a vulnerable extension will not protect your site.]]&lt;br /&gt;
&lt;br /&gt;
=== Malicious Code or Odd Links appearing on your site ===&lt;br /&gt;
&lt;br /&gt;
Check that the original template file does or does not insert the [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=411735 unwanted code/Malicious Javascript ] or that you downloaded a paid for template from a non trusted source eg file sharing sites&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.iss.net/threats/gumblar.html Gumblar]&#039;&#039;&#039; doesn’t use any particular script vulnerability.&lt;br /&gt;
This script is injected into every web page ( I would imagine though not confirmed, if infected page is edited then saved it will also be in database) on a site.&lt;br /&gt;
Script changes every time it is accessed.&lt;br /&gt;
It has been seen on phpBB, SMF and vBulletin forums, on WordPress 2.7.1 blogs, on proprietary PHP sites.&lt;br /&gt;
The script starts with &#039;&#039;(function(&#039;&#039; and has no name and is obfusticated.&lt;br /&gt;
A common Gumblar version breaks sites due to a bug in script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;iFrames&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In recent iframe exploits the malicious code was only injected into files with most common filenames (e.g. index.html, index.php, etc.). [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=411735 Related Forum Sticky]&lt;br /&gt;
&lt;br /&gt;
=== Contributors &amp;amp; Editing === &lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=28000 mandville]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=67439 PhilD]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=3701 fw116]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=322239 JeffChannell]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=339316 dynamicnet]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
When your hosting provider runs PHP as an Apache Module it executes as the user/group of the webserver which is usually &amp;quot;nobody&amp;quot;, &amp;quot;httpd&amp;quot; or &amp;quot;apache&amp;quot;. Under this (ownership) mode, files or directories that you require your php scripts to be able to write do need 777 permissions (read/write/execute at user/group/world level) if the ownership of the files and directories are not Chown (Change Owner) to the User. Such a scenario is absolute unacceptable  from a security perspective since &#039;777&#039; not only allows the webserver to write to the file; it also allows anyone else to read or write to the file.&lt;br /&gt;
If your provider is not able to change this, one should strongly consider changing host!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Logs&#039;&#039;&#039;&lt;br /&gt;
Make sure that in your control panel your raw access logs have been activated for review!&lt;br /&gt;
&lt;br /&gt;
Raw Access Logs allow you to see who has accessed your site without the use of graphs, charts or other graphics. in cPanel for instance you can use the Raw Access Logs menu to download a zipped version of the server&#039;s access log for your site. This can be very useful when you need to see who is accessing your site quickly. Many people forget that this needs to be activated by the user of the account and is not automatically activated upon the creation of a hosting account in cPanel for instance!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;incompatible_versions&amp;quot; /&amp;gt;&#039;&#039;&#039;Incompatible Versions&#039;&#039;&#039;&lt;br /&gt;
This document applies to all versions of Joomla. Use the latest version of Joomla that is compatible with your existing Joomla websites version to repair your site. Some version upgrades require a [[Migrating_from_Joomla_1.5_to_Joomla_2.5|site migration]] and will render your Joomla site inoperative if used to replace an earlier version of Joomla when repairing site hacking. For example: Do not replace a 1.5.xx based site with version 2.5.xx of Joomla. Doing so will leave the site in an inoperative state and may also result in a loss of data.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;diff=100219</id>
		<title>Security Checklist/You have been hacked or defaced</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;diff=100219"/>
		<updated>2013-06-12T15:49:41Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* On Line Action List */ changed wording to indicate delete files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== You have been hacked/defaced ?==&lt;br /&gt;
We are sorry for any basic language used in this document.&lt;br /&gt;
Before you post in the Joomla! Security Forum [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=475313 please read this] checklist summary, then use it as a post template.&lt;br /&gt;
&lt;br /&gt;
=== On Line Action List===&lt;br /&gt;
* Take your [[Taking_the_website_temporarily_offline#Using the htaccess method (cpanel)|website offline]] (&#039;&#039;&#039;We recommend the htaccess method&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* Run the [https://github.com/ForumPostAssistant/FPA/zipball/en-GB forum post assistant and security tool] The simple Instructions are [http://forum.joomla.org/viewtopic.php?f=621&amp;amp;t=582860 available here]. More detailed instructions are included in the download package. You will need to unzip this package and upload the fpa-en.php file to your server Joomla root The FPA is also [https://github.com/ForumPostAssistant/FPA/tarball/en-GB available in a tar.gz package] for those who desire or need a unix style package. The fpa-en.php file from the package will need to be uploaded to your server Joomla root.&lt;br /&gt;
&lt;br /&gt;
* Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc. (see [[#Local_Security|Local Security]] below)&lt;br /&gt;
&lt;br /&gt;
* Ensure you have downloaded the &#039;&#039;&#039;latest version&#039;&#039;&#039; of [http://www.joomla.org/download.html Joomla] for the series of Joomla used on the site.(see [[#Incompatible Versions|Incompatible Versions]] below).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Notify your host&#039;&#039;&#039; and work with them to clean up the site, and to make sure there are no back doors to your site.&lt;br /&gt;
&lt;br /&gt;
* Review [http://vel.joomla.org/ Vulnerable Extensions List] to see if you have any vulnerable extensions and deal with them. A clue to any extensions being targeted is your logs file. Here is an example of what to look for,&lt;br /&gt;
&amp;lt;pre&amp;gt;//administrator/components/com_extension/admin.extension.php?mosConfig.absolute.path=http:&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;../../../../../../../../../../../../../../../../proc/self/environ&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Review and action [[Security Checklist]] to make sure you&#039;ve gone through all of the steps (please note some steps are optional, but please review them all).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Change all passwords&#039;&#039;&#039; and if possible user names for the domains control panel, mysql, FTP, [[Why_should_you_immediately_change_the_name_of_the_default_admin_user%3F|Joomla! Super Admin]], and Joomla! Admin password; do change them often. Passwords should be at least 12 mixed alphanumeric characters and contain no common word phrases. &lt;br /&gt;
* Do not use the standard Admin user, [[Why_should_you_immediately_change_the_name_of_the_default_admin_user%3F|disable it]]. If you need to reset your admin password, see [[How_do_you_recover_your_admin_password%3F|these instructions]]. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Delete and Replace&#039;&#039;&#039; all templates and files with clean copies,&lt;br /&gt;
* &#039;&#039;&#039;Check&#039;&#039;&#039; and/or replace all .pdf, image, photo files for exploits. Delete any that are suspicious&lt;br /&gt;
* Check you server logs for IP&#039;s calling suspicious files or attempting POST commands to non-form&#039;s&lt;br /&gt;
* Use proper permissions on files and directories. They &#039;&#039;&#039;should never be 777&amp;lt;ref&amp;gt;Permissions should never be 777&amp;lt;/ref&amp;gt;, but ideal is 644 for files and 755 folders&#039;&#039;&#039;.&lt;br /&gt;
* Disable [http://docs.cpanel.net/twiki/bin/view/AllDocumentation/CpanelDocs/AnonymousFTP anonymous] FTP&lt;br /&gt;
&lt;br /&gt;
== chmod and cron ==&lt;br /&gt;
&lt;br /&gt;
IF you have permissions to access SSH (secure shell) via putty you can chmod the files and directories.&lt;br /&gt;
If you do not have shell access, you can run the commands from [http://en.wikipedia.org/wiki/Cron cron] by setting up a temporary cron job. Copy and paste the command into a cron job. Run the job about 2 minutes after saving the job.&lt;br /&gt;
When using the command by putty or a cron job, the use of the full physical path to public_html is recommended for best results.&lt;br /&gt;
&lt;br /&gt;
For files use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -exec chmod 644 {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and for directories use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type d -exec chmod 755 {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitoring for File Changes ===&lt;br /&gt;
To check for recent file changes on your system use these commands from putty (SSH - secure shell) or via a cron job.&lt;br /&gt;
If you run the command from a cron job you can schedule it to check for changed files several times each day.&lt;br /&gt;
Results will be sent to the domain account owner and show the time/date stamp for any changed files.&lt;br /&gt;
When using the command by putty or a cron job, the use of the full physical path to public_html is recommended&lt;br /&gt;
for best results.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -ctime -1 -exec ls -ls {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note your sites files may be located in public_html, httpdocs, www, or a similar place, and your physical path may also be different than in the examples. Adjust the physical path accordingly.&lt;br /&gt;
&lt;br /&gt;
== 777 Permissions ==&lt;br /&gt;
&#039;&#039;&#039;If&#039;&#039;&#039; the server your are on requires 777 permissions for Joomla to work correctly,&lt;br /&gt;
then&#039;&#039;&#039; request to be put on another server&#039;&#039;&#039; with php as cgi and suphp and up-to-date&lt;br /&gt;
serverside software (apache, php etc) on your existing host or find another server host if necessary.&lt;br /&gt;
 &lt;br /&gt;
To protect directories that seemed to need 777 permissions to run or as a default in your images/media folder try this code within a .htaccess file within the open folder.&lt;br /&gt;
&amp;lt;pre&amp;gt;# secure directory by disabling script execution&lt;br /&gt;
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi&lt;br /&gt;
Options -ExecCGI&amp;lt;/pre&amp;gt; especially in your images folder&lt;br /&gt;
* Make sure that is in a htaccess file in a directory that will not run any scripts or remove the extensions as required&lt;br /&gt;
&lt;br /&gt;
Do check with your hosting provider to see if they have purposely secured the server your site is on; and that they &#039;&#039;&#039;or you&#039;&#039;&#039; perform regular (weekly) security updates to keep the server up to date.&lt;br /&gt;
Check you have jail shell. &lt;br /&gt;
A rule of thumb is the less you pay, the less they care&lt;br /&gt;
&lt;br /&gt;
== A Safe route for disaster relief ==&lt;br /&gt;
* save the configuration.php file and your images and personal files one by one, (not the folder as it may contain unwanted files)&lt;br /&gt;
* wipe the entire folder where Joomla! is installed&lt;br /&gt;
* upload a new clean full package latest version of joomla 1.5.x or Joomla 2.5.x (minus the install folder)&amp;lt;ref&amp;gt;Incompatible Versions&amp;lt;/ref&amp;gt;&lt;br /&gt;
* reupload your configuration file &amp;amp; images.&lt;br /&gt;
* reupload or reinstall the latest versions of your extensions , templates (even better is to use original clean copies to ensure that the hacker/defacer did not leave any shell script files in your site)&lt;br /&gt;
&lt;br /&gt;
To do this will take your site off line for around 15 minutes. To track down your hacked/defaced html may take hours or even longer.&lt;br /&gt;
&lt;br /&gt;
=== Local Security ===&lt;br /&gt;
&lt;br /&gt;
* Don&#039;t store user name/password in ftp program&lt;br /&gt;
** Use a password manager such as the free [http://keepass.info/ keepass]&lt;br /&gt;
&lt;br /&gt;
* Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc.&lt;br /&gt;
&lt;br /&gt;
* Several packages available are&lt;br /&gt;
** [http://www.eset.com/ ENOD32] from eSet&lt;br /&gt;
** [http://www.safer-networking.org/ Spybot Search and Destroy]&lt;br /&gt;
** [http://www.malwarebytes.org/ Malwarebytes]&lt;br /&gt;
** [http://www.microsoft.com/security/ Microsoft Malicious Software Removal Tool]&lt;br /&gt;
** [http://www.free-av.com/de/tools/12/avira_antivir_rescue_system.html Linux AntiVirus boot cd]&lt;br /&gt;
** [http://www.javacoolsoftware.com/spywareblaster.html spyware blaster]&lt;br /&gt;
** [http://www.siteadvisor.com/ siteadvisor]&lt;br /&gt;
* Consider the [http://ubcd4win.com/ Ultimate Boot CD for Windows] used for repairing, restoring, or diagnosing almost any home computer problem&lt;br /&gt;
&lt;br /&gt;
=== Other Considerations ===&lt;br /&gt;
&lt;br /&gt;
* Do not use the standard jos_ table prefix and avoid one click installers where possible&lt;br /&gt;
&lt;br /&gt;
* Set the [http://feeds.joomla.org/JoomlaSecurityNews?format=xml joomla security newsfeed] as the main top module in your joomla admin control panel. [[Screen.modulesadministrator.edit.15#Feed_Display|Set up the Security Newsfeed]] &lt;br /&gt;
** [[Screen.modulesadministrator.edit.15#How_to_access|Add the Admin Feed Display Module]] if it is missing. Enable it to the first place on your sites back end control panel.&lt;br /&gt;
&lt;br /&gt;
* Consider adding a [http://forum.joomla.org/viewtopic.php?p=1568940#p1568940 bot block list] to your .htaccess file&lt;br /&gt;
&lt;br /&gt;
* Use [http://en.wikipedia.org/wiki/SSH_file_transfer_protocol sFTP] instead of FTP where possible&lt;br /&gt;
&lt;br /&gt;
* Do not enable or use [http://en.wikipedia.org/wiki/File_Transfer_Protocol#Anonymous_FTP anonymous ftp] accounts for any reason.&lt;br /&gt;
&lt;br /&gt;
* Use a server that has [http://www.modsecurity.org/ mod_security] installed properly&lt;br /&gt;
&lt;br /&gt;
* Check for any added sub domains and/or added directories&lt;br /&gt;
&lt;br /&gt;
* Check for any [http://en.wikipedia.org/wiki/Common_Gateway_Interface cgi scripts]&lt;br /&gt;
&lt;br /&gt;
* Check [http://en.wikipedia.org/wiki/Cron cron] for any cron jobs not set up by domain administrator&lt;br /&gt;
&lt;br /&gt;
* Download and &amp;lt;ref&amp;gt;Review raw access and error logs.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Deny any IP&#039;s that you got to the IP ban on your site but it may belong to a proxy site.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Was your site hacked in the past&#039;&#039;&#039; and proper site sanitation not used to remove actual&lt;br /&gt;
 (and hidden) hack thus leaving a backdoor for reinfection.&lt;br /&gt;
&lt;br /&gt;
* Consider removing &amp;quot;[http://docs.joomla.org/How_do_you_remove_or_change_the_%22Welcome_to_the_Frontpage%22_title%3F welcome to the front page]&amp;quot; to reduce [http://www.google.co.uk/search?q=intext%3A+welcome+to+the+front+page+joomla&amp;amp; search engine attacks]. &lt;br /&gt;
&lt;br /&gt;
* Completely remove/uninstall, don&#039;t unpublish unused or vulnerable extensions. [[Why_isn&#039;t_un-publishing_a_vulnerable_extension_enough_to_protect_your_site%3F|Un-publishing a vulnerable extension will not protect your site.]]&lt;br /&gt;
&lt;br /&gt;
=== Malicious Code or Odd Links appearing on your site ===&lt;br /&gt;
&lt;br /&gt;
Check that the original template file does or does not insert the [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=411735 unwanted code/Malicious Javascript ] or that you downloaded a paid for template from a non trusted source eg file sharing sites&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.iss.net/threats/gumblar.html Gumblar]&#039;&#039;&#039; doesn’t use any particular script vulnerability.&lt;br /&gt;
This script is injected into every web page ( I would imagine though not confirmed, if infected page is edited then saved it will also be in database) on a site.&lt;br /&gt;
Script changes every time it is accessed.&lt;br /&gt;
It has been seen on phpBB, SMF and vBulletin forums, on WordPress 2.7.1 blogs, on proprietary PHP sites.&lt;br /&gt;
The script starts with &#039;&#039;(function(&#039;&#039; and has no name and is obfusticated.&lt;br /&gt;
A common Gumblar version breaks sites due to a bug in script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;iFrames&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In recent iframe exploits the malicious code was only injected into files with most common filenames (e.g. index.html, index.php, etc.). [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=411735 Related Forum Sticky]&lt;br /&gt;
&lt;br /&gt;
=== Contributors &amp;amp; Editing === &lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=28000 mandville]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=67439 PhilD]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=3701 fw116]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=322239 JeffChannell]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=339316 dynamicnet]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
When your hosting provider runs PHP as an Apache Module it executes as the user/group of the webserver which is usually &amp;quot;nobody&amp;quot;, &amp;quot;httpd&amp;quot; or &amp;quot;apache&amp;quot;. Under this (ownership) mode, files or directories that you require your php scripts to be able to write do need 777 permissions (read/write/execute at user/group/world level) if the ownership of the files and directories are not Chown (Change Owner) to the User. Such a scenario is absolute unacceptable  from a security perspective since &#039;777&#039; not only allows the webserver to write to the file; it also allows anyone else to read or write to the file.&lt;br /&gt;
If your provider is not able to change this, one should strongly consider changing host!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Logs&#039;&#039;&#039;&lt;br /&gt;
Make sure that in your control panel your raw access logs have been activated for review!&lt;br /&gt;
&lt;br /&gt;
Raw Access Logs allow you to see who has accessed your site without the use of graphs, charts or other graphics. in cPanel for instance you can use the Raw Access Logs menu to download a zipped version of the server&#039;s access log for your site. This can be very useful when you need to see who is accessing your site quickly. Many people forget that this needs to be activated by the user of the account and is not automatically activated upon the creation of a hosting account in cPanel for instance!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Incompatible Versions&#039;&#039;&#039;&lt;br /&gt;
This document applies to all versions of Joomla. Use the latest version of Joomla that is compatible with your existing Joomla websites version to repair your site. Some version upgrades require a [[Migrating_from_Joomla_1.5_to_Joomla_2.5|site migration]] and will render your Joomla site inoperative if used to replace an earlier version of Joomla when repairing site hacking. For example: Do not replace a 1.5.xx based site with version 2.5.xx of Joomla. Doing so will leave the site in an inoperative state and may also result in a loss of data.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;diff=100138</id>
		<title>Security Checklist/You have been hacked or defaced</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;diff=100138"/>
		<updated>2013-06-10T17:02:06Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* References */ (incompatible versions) changed &amp;quot;overwrite&amp;quot; to &amp;quot;replace&amp;quot; added text for clarity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== You have been hacked/defaced ?==&lt;br /&gt;
We are sorry for any basic language used in this document.&lt;br /&gt;
Before you post in the Joomla! Security Forum [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=475313 please read this] checklist summary, then use it as a post template.&lt;br /&gt;
&lt;br /&gt;
=== On Line Action List===&lt;br /&gt;
* Take your [[Taking_the_website_temporarily_offline#Using the htaccess method (cpanel)|website offline]] (&#039;&#039;&#039;We recommend the htaccess method&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* Run the [https://github.com/ForumPostAssistant/FPA/zipball/en-GB forum post assistant and security tool] The simple Instructions are [http://forum.joomla.org/viewtopic.php?f=621&amp;amp;t=582860 available here]. More detailed instructions are included in the download package. You will need to unzip this package and upload the fpa-en.php file to your server Joomla root The FPA is also [https://github.com/ForumPostAssistant/FPA/tarball/en-GB available in a tar.gz package] for those who desire or need a unix style package. The fpa-en.php file from the package will need to be uploaded to your server Joomla root.&lt;br /&gt;
&lt;br /&gt;
* Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc. (see [[#Local_Security|Local Security]] below)&lt;br /&gt;
&lt;br /&gt;
* Ensure you have the &#039;&#039;&#039;latest version&#039;&#039;&#039; of [http://www.joomla.org/download.html Joomla] &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Notify your host&#039;&#039;&#039; and work with them to clean up the site, and to make sure there are no back doors to your site.&lt;br /&gt;
&lt;br /&gt;
* Review [http://vel.joomla.org/ Vulnerable Extensions List] to see if you have any vulnerable extensions and deal with them. A clue to any extensions being targeted is your logs file. Here is an example of what to look for,&lt;br /&gt;
&amp;lt;pre&amp;gt;//administrator/components/com_extension/admin.extension.php?mosConfig.absolute.path=http:&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;../../../../../../../../../../../../../../../../proc/self/environ&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Review and action [[Security Checklist]] to make sure you&#039;ve gone through all of the steps (please note some steps are optional, but please review them all).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Change all passwords&#039;&#039;&#039; and if possible user names for the domains control panel, mysql, FTP, [[Why_should_you_immediately_change_the_name_of_the_default_admin_user%3F|Joomla! Super Admin]], and Joomla! Admin password; do change them often. Passwords should be at least 12 mixed alphanumeric characters and contain no common word phrases. &lt;br /&gt;
* Do not use the standard Admin user, [[Why_should_you_immediately_change_the_name_of_the_default_admin_user%3F|disable it]]. If you need to reset your admin password, see [[How_do_you_recover_your_admin_password%3F|these instructions]]. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Replace&#039;&#039;&#039; all templates and files with clean copies,&lt;br /&gt;
* &#039;&#039;&#039;Check&#039;&#039;&#039; and/or replace all .pdf, image, photo files for exploits&lt;br /&gt;
* Check you server logs for IP&#039;s calling suspicious files or attempting POST commands to non-form&#039;s&lt;br /&gt;
* Use proper permissions on files and directories. They &#039;&#039;&#039;should never be 777&amp;lt;ref&amp;gt;Permissions should never be 777&amp;lt;/ref&amp;gt;, but ideal is 644 for files and 755 folders&#039;&#039;&#039;.&lt;br /&gt;
* Disable [http://docs.cpanel.net/twiki/bin/view/AllDocumentation/CpanelDocs/AnonymousFTP anonymous] FTP&lt;br /&gt;
&lt;br /&gt;
== chmod and cron ==&lt;br /&gt;
&lt;br /&gt;
IF you have permissions to access SSH (secure shell) via putty you can chmod the files and directories.&lt;br /&gt;
If you do not have shell access, you can run the commands from [http://en.wikipedia.org/wiki/Cron cron] by setting up a temporary cron job. Copy and paste the command into a cron job. Run the job about 2 minutes after saving the job.&lt;br /&gt;
When using the command by putty or a cron job, the use of the full physical path to public_html is recommended for best results.&lt;br /&gt;
&lt;br /&gt;
For files use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -exec chmod 644 {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and for directories use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type d -exec chmod 755 {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitoring for File Changes ===&lt;br /&gt;
To check for recent file changes on your system use these commands from putty (SSH - secure shell) or via a cron job.&lt;br /&gt;
If you run the command from a cron job you can schedule it to check for changed files several times each day.&lt;br /&gt;
Results will be sent to the domain account owner and show the time/date stamp for any changed files.&lt;br /&gt;
When using the command by putty or a cron job, the use of the full physical path to public_html is recommended&lt;br /&gt;
for best results.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -ctime -1 -exec ls -ls {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note your sites files may be located in public_html, httpdocs, www, or a similar place, and your physical path may also be different than in the examples. Adjust the physical path accordingly.&lt;br /&gt;
&lt;br /&gt;
== 777 Permissions ==&lt;br /&gt;
&#039;&#039;&#039;If&#039;&#039;&#039; the server your are on requires 777 permissions for Joomla to work correctly,&lt;br /&gt;
then&#039;&#039;&#039; request to be put on another server&#039;&#039;&#039; with php as cgi and suphp and up-to-date&lt;br /&gt;
serverside software (apache, php etc) on your existing host or find another server host if necessary.&lt;br /&gt;
 &lt;br /&gt;
To protect directories that seemed to need 777 permissions to run or as a default in your images/media folder try this code within a .htaccess file within the open folder.&lt;br /&gt;
&amp;lt;pre&amp;gt;# secure directory by disabling script execution&lt;br /&gt;
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi&lt;br /&gt;
Options -ExecCGI&amp;lt;/pre&amp;gt; especially in your images folder&lt;br /&gt;
* Make sure that is in a htaccess file in a directory that will not run any scripts or remove the extensions as required&lt;br /&gt;
&lt;br /&gt;
Do check with your hosting provider to see if they have purposely secured the server your site is on; and that they &#039;&#039;&#039;or you&#039;&#039;&#039; perform regular (weekly) security updates to keep the server up to date.&lt;br /&gt;
Check you have jail shell. &lt;br /&gt;
A rule of thumb is the less you pay, the less they care&lt;br /&gt;
&lt;br /&gt;
== A Safe route for disaster relief ==&lt;br /&gt;
* save the configuration.php file and your images and personal files one by one, (not the folder as it may contain unwanted files)&lt;br /&gt;
* wipe the entire folder where Joomla! is installed&lt;br /&gt;
* upload a new clean full package latest version of joomla 1.5.x or Joomla 2.5.x (minus the install folder)&amp;lt;ref&amp;gt;Incompatible Versions&amp;lt;/ref&amp;gt;&lt;br /&gt;
* reupload your configuration file &amp;amp; images.&lt;br /&gt;
* reupload or reinstall the latest versions of your extensions , templates (even better is to use original clean copies to ensure that the hacker/defacer did not leave any shell script files in your site)&lt;br /&gt;
&lt;br /&gt;
To do this will take your site off line for around 15 minutes. To track down your hacked/defaced html may take hours or even longer.&lt;br /&gt;
&lt;br /&gt;
=== Local Security ===&lt;br /&gt;
&lt;br /&gt;
* Don&#039;t store user name/password in ftp program&lt;br /&gt;
** Use a password manager such as the free [http://keepass.info/ keepass]&lt;br /&gt;
&lt;br /&gt;
* Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc.&lt;br /&gt;
&lt;br /&gt;
* Several packages available are&lt;br /&gt;
** [http://www.eset.com/ ENOD32] from eSet&lt;br /&gt;
** [http://www.safer-networking.org/ Spybot Search and Destroy]&lt;br /&gt;
** [http://www.malwarebytes.org/ Malwarebytes]&lt;br /&gt;
** [http://www.microsoft.com/security/ Microsoft Malicious Software Removal Tool]&lt;br /&gt;
** [http://www.free-av.com/de/tools/12/avira_antivir_rescue_system.html Linux AntiVirus boot cd]&lt;br /&gt;
** [http://www.javacoolsoftware.com/spywareblaster.html spyware blaster]&lt;br /&gt;
** [http://www.siteadvisor.com/ siteadvisor]&lt;br /&gt;
* Consider the [http://ubcd4win.com/ Ultimate Boot CD for Windows] used for repairing, restoring, or diagnosing almost any home computer problem&lt;br /&gt;
&lt;br /&gt;
=== Other Considerations ===&lt;br /&gt;
&lt;br /&gt;
* Do not use the standard jos_ table prefix and avoid one click installers where possible&lt;br /&gt;
&lt;br /&gt;
* Set the [http://feeds.joomla.org/JoomlaSecurityNews?format=xml joomla security newsfeed] as the main top module in your joomla admin control panel. [[Screen.modulesadministrator.edit.15#Feed_Display|Set up the Security Newsfeed]] &lt;br /&gt;
** [[Screen.modulesadministrator.edit.15#How_to_access|Add the Admin Feed Display Module]] if it is missing. Enable it to the first place on your sites back end control panel.&lt;br /&gt;
&lt;br /&gt;
* Consider adding a [http://forum.joomla.org/viewtopic.php?p=1568940#p1568940 bot block list] to your .htaccess file&lt;br /&gt;
&lt;br /&gt;
* Use [http://en.wikipedia.org/wiki/SSH_file_transfer_protocol sFTP] instead of FTP where possible&lt;br /&gt;
&lt;br /&gt;
* Do not enable or use [http://en.wikipedia.org/wiki/File_Transfer_Protocol#Anonymous_FTP anonymous ftp] accounts for any reason.&lt;br /&gt;
&lt;br /&gt;
* Use a server that has [http://www.modsecurity.org/ mod_security] installed properly&lt;br /&gt;
&lt;br /&gt;
* Check for any added sub domains and/or added directories&lt;br /&gt;
&lt;br /&gt;
* Check for any [http://en.wikipedia.org/wiki/Common_Gateway_Interface cgi scripts]&lt;br /&gt;
&lt;br /&gt;
* Check [http://en.wikipedia.org/wiki/Cron cron] for any cron jobs not set up by domain administrator&lt;br /&gt;
&lt;br /&gt;
* Download and &amp;lt;ref&amp;gt;Review raw access and error logs.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Deny any IP&#039;s that you got to the IP ban on your site but it may belong to a proxy site.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Was your site hacked in the past&#039;&#039;&#039; and proper site sanitation not used to remove actual&lt;br /&gt;
 (and hidden) hack thus leaving a backdoor for reinfection.&lt;br /&gt;
&lt;br /&gt;
* Consider removing &amp;quot;[http://docs.joomla.org/How_do_you_remove_or_change_the_%22Welcome_to_the_Frontpage%22_title%3F welcome to the front page]&amp;quot; to reduce [http://www.google.co.uk/search?q=intext%3A+welcome+to+the+front+page+joomla&amp;amp; search engine attacks]. &lt;br /&gt;
&lt;br /&gt;
* Completely remove/uninstall, don&#039;t unpublish unused or vulnerable extensions. [[Why_isn&#039;t_un-publishing_a_vulnerable_extension_enough_to_protect_your_site%3F|Un-publishing a vulnerable extension will not protect your site.]]&lt;br /&gt;
&lt;br /&gt;
=== Malicious Code or Odd Links appearing on your site ===&lt;br /&gt;
&lt;br /&gt;
Check that the original template file does or does not insert the [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=411735 unwanted code/Malicious Javascript ] or that you downloaded a paid for template from a non trusted source eg file sharing sites&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.iss.net/threats/gumblar.html Gumblar]&#039;&#039;&#039; doesn’t use any particular script vulnerability.&lt;br /&gt;
This script is injected into every web page ( I would imagine though not confirmed, if infected page is edited then saved it will also be in database) on a site.&lt;br /&gt;
Script changes every time it is accessed.&lt;br /&gt;
It has been seen on phpBB, SMF and vBulletin forums, on WordPress 2.7.1 blogs, on proprietary PHP sites.&lt;br /&gt;
The script starts with &#039;&#039;(function(&#039;&#039; and has no name and is obfusticated.&lt;br /&gt;
A common Gumblar version breaks sites due to a bug in script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;iFrames&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In recent iframe exploits the malicious code was only injected into files with most common filenames (e.g. index.html, index.php, etc.). [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=411735 Related Forum Sticky]&lt;br /&gt;
&lt;br /&gt;
=== Contributors &amp;amp; Editing === &lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=28000 mandville]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=67439 PhilD]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=3701 fw116]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=322239 JeffChannell]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=339316 dynamicnet]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
When your hosting provider runs PHP as an Apache Module it executes as the user/group of the webserver which is usually &amp;quot;nobody&amp;quot;, &amp;quot;httpd&amp;quot; or &amp;quot;apache&amp;quot;. Under this (ownership) mode, files or directories that you require your php scripts to be able to write do need 777 permissions (read/write/execute at user/group/world level) if the ownership of the files and directories are not Chown (Change Owner) to the User. Such a scenario is absolute unacceptable  from a security perspective since &#039;777&#039; not only allows the webserver to write to the file; it also allows anyone else to read or write to the file.&lt;br /&gt;
If your provider is not able to change this, one should strongly consider changing host!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Logs&#039;&#039;&#039;&lt;br /&gt;
Make sure that in your control panel your raw access logs have been activated for review!&lt;br /&gt;
&lt;br /&gt;
Raw Access Logs allow you to see who has accessed your site without the use of graphs, charts or other graphics. in cPanel for instance you can use the Raw Access Logs menu to download a zipped version of the server&#039;s access log for your site. This can be very useful when you need to see who is accessing your site quickly. Many people forget that this needs to be activated by the user of the account and is not automatically activated upon the creation of a hosting account in cPanel for instance!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Incompatible Versions&#039;&#039;&#039;&lt;br /&gt;
This document applies to all versions of Joomla. Use the latest version of Joomla that is compatible with your existing Joomla websites version to repair your site. Some version upgrades require a [[Migrating_from_Joomla_1.5_to_Joomla_2.5|site migration]] and will render your Joomla site inoperative if used to replace an earlier version of Joomla when repairing site hacking. For example: Do not replace a 1.5.xx based site with version 2.5.xx of Joomla. Doing so will leave the site in an inoperative state and may also result in a loss of data.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;diff=83646</id>
		<title>Security Checklist/You have been hacked or defaced</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;diff=83646"/>
		<updated>2013-03-26T16:39:56Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* chmod and cron */  added Monitoring for File Changes heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== You have been hacked/defaced ?==&lt;br /&gt;
We are sorry for any basic language used in this document.&lt;br /&gt;
Before you post in the Joomla! Security Forum [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=475313 please read this] checklist summary, then use it as a post template.&lt;br /&gt;
&lt;br /&gt;
=== On Line Action List===&lt;br /&gt;
* Take your [[Taking_the_website_temporarily_offline#Using the htaccess method (cpanel)|website offline]] (&#039;&#039;&#039;We recommend the htaccess method&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* Run the [https://github.com/ForumPostAssistant/FPA/zipball/en-GB forum post assistant and security tool] The simple Instructions are [http://forum.joomla.org/viewtopic.php?f=621&amp;amp;t=582860 available here]. More detailed instructions are included in the download package. You will need to unzip this package and upload the fpa-en.php file to your server Joomla root The FPA is also [https://github.com/ForumPostAssistant/FPA/tarball/en-GB available in a tar.gz package] for those who desire or need a unix style package. The fpa-en.php file from the package will need to be uploaded to your server Joomla root.&lt;br /&gt;
&lt;br /&gt;
* Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc. (see [[#Local_Security|Local Security]] below)&lt;br /&gt;
&lt;br /&gt;
* Ensure you have the &#039;&#039;&#039;latest version&#039;&#039;&#039; of [http://www.joomla.org/download.html Joomla] &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Notify your host&#039;&#039;&#039; and work with them to clean up the site, and to make sure there are no back doors to your site.&lt;br /&gt;
&lt;br /&gt;
* Review [http://docs.joomla.org/Vulnerable_Extensions_List Vulnerable Extensions List] to see if you have any vulnerable extensions and deal with them. A clue to any extensions being targeted is your logs file. Here is an example of what to look for,&lt;br /&gt;
&amp;lt;pre&amp;gt;//administrator/components/com_extension/admin.extension.php?mosConfig.absolute.path=http:&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;../../../../../../../../../../../../../../../../proc/self/environ&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Review and action [[Security Checklist]] to make sure you&#039;ve gone through all of the steps (please note some steps are optional, but please review them all).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Change all passwords&#039;&#039;&#039; and if possible user names for the domains control panel, mysql, FTP, [[Why_should_you_immediately_change_the_name_of_the_default_admin_user%3F|Joomla! Super Admin]], and Joomla! Admin password; do change them often. Passwords should be at least 12 mixed alphanumeric characters and contain no common word phrases. &lt;br /&gt;
* Do not use the standard Admin user, [[Why_should_you_immediately_change_the_name_of_the_default_admin_user%3F|disable it]]. If you need to reset your admin password, see [[How_do_you_recover_your_admin_password%3F|these instructions]]. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Replace&#039;&#039;&#039; all templates and files with clean copies,&lt;br /&gt;
* &#039;&#039;&#039;Check&#039;&#039;&#039; and/or replace all .pdf, image, photo files for exploits&lt;br /&gt;
* Check you server logs for IP&#039;s calling suspicious files or attempting POST commands to non-form&#039;s&lt;br /&gt;
* Use proper permissions on files and directories. They &#039;&#039;&#039;should never be 777&amp;lt;ref&amp;gt;Permissions should never be 777&amp;lt;/ref&amp;gt;, but ideal is 644 for files and 755 folders&#039;&#039;&#039;.&lt;br /&gt;
* Disable [http://docs.cpanel.net/twiki/bin/view/AllDocumentation/CpanelDocs/AnonymousFTP anonymous] FTP&lt;br /&gt;
&lt;br /&gt;
== chmod and cron ==&lt;br /&gt;
&lt;br /&gt;
IF you have permissions to access SSH (secure shell) via putty you can chmod the files and directories.&lt;br /&gt;
If you do not have shell access, you can run the commands from [http://en.wikipedia.org/wiki/Cron cron] by setting up a temporary cron job. Copy and paste the command into a cron job. Run the job about 2 minutes after saving the job.&lt;br /&gt;
When using the command by putty or a cron job, the use of the full physical path to public_html is recommended for best results.&lt;br /&gt;
&lt;br /&gt;
For files use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -exec chmod 644 {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and for directories use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type d -exec chmod 755 {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitoring for File Changes ===&lt;br /&gt;
To check for recent file changes on your system use these commands from putty (SSH - secure shell) or via a cron job.&lt;br /&gt;
If you run the command from a cron job you can schedule it to check for changed files several times each day.&lt;br /&gt;
Results will be sent to the domain account owner and show the time/date stamp for any changed files.&lt;br /&gt;
When using the command by putty or a cron job, the use of the full physical path to public_html is recommended&lt;br /&gt;
for best results.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -ctime -1 -exec ls -ls {} \;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note your sites files may be located in public_html, httpdocs, www, or a similar place, and your physical path may also be different than in the examples. Adjust the physical path accordingly.&lt;br /&gt;
&lt;br /&gt;
== 777 Permissions ==&lt;br /&gt;
&#039;&#039;&#039;If&#039;&#039;&#039; the server your are on requires 777 permissions for Joomla to work correctly,&lt;br /&gt;
then&#039;&#039;&#039; request to be put on another server&#039;&#039;&#039; with php as cgi and suphp and up-to-date&lt;br /&gt;
serverside software (apache, php etc) on your existing host or find another server host if necessary.&lt;br /&gt;
 &lt;br /&gt;
To protect directories that seemed to need 777 permissions to run or as a default in your images/media folder try this code within a .htaccess file within the open folder.&lt;br /&gt;
&amp;lt;pre&amp;gt;# secure directory by disabling script execution&lt;br /&gt;
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi&lt;br /&gt;
Options -ExecCGI&amp;lt;/pre&amp;gt; especially in your images folder&lt;br /&gt;
* Make sure that is in a htaccess file in a directory that will not run any scripts or remove the extensions as required&lt;br /&gt;
&lt;br /&gt;
Do check with your hosting provider to see if they have purposely secured the server your site is on; and that they &#039;&#039;&#039;or you&#039;&#039;&#039; perform regular (weekly) security updates to keep the server up to date.&lt;br /&gt;
Check you have jail shell. &lt;br /&gt;
A rule of thumb is the less you pay, the less they care&lt;br /&gt;
&lt;br /&gt;
== A Safe route for disaster relief ==&lt;br /&gt;
* save the configuration.php file and your images and personal files one by one, (not the folder as it may contain unwanted files)&lt;br /&gt;
* wipe the entire folder where Joomla! is installed&lt;br /&gt;
* upload a new clean full package latest version of joomla 1.5.x or Joomla 2.5.x (minus the install folder)&amp;lt;ref&amp;gt;Incompatible Versions&amp;lt;/ref&amp;gt;&lt;br /&gt;
* reupload your configuration file &amp;amp; images.&lt;br /&gt;
* reupload or reinstall the latest versions of your extensions , templates (even better is to use original clean copies to ensure that the hacker/defacer did not leave any shell script files in your site)&lt;br /&gt;
&lt;br /&gt;
To do this will take your site off line for around 15 minutes. To track down your hacked/defaced html may take hours or even longer.&lt;br /&gt;
&lt;br /&gt;
=== Local Security ===&lt;br /&gt;
&lt;br /&gt;
* Don&#039;t store user name/password in ftp program&lt;br /&gt;
** Use a password manager such as the free [http://keepass.info/ keepass]&lt;br /&gt;
&lt;br /&gt;
* Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc.&lt;br /&gt;
&lt;br /&gt;
* Several packages available are&lt;br /&gt;
** [http://www.eset.com/ ENOD32] from eSet&lt;br /&gt;
** [http://www.safer-networking.org/ Spybot Search and Destroy]&lt;br /&gt;
** [http://www.malwarebytes.org/ Malwarebytes]&lt;br /&gt;
** [http://www.microsoft.com/security/ Microsoft Malicious Software Removal Tool]&lt;br /&gt;
** [http://www.free-av.com/de/tools/12/avira_antivir_rescue_system.html Linux AntiVirus boot cd]&lt;br /&gt;
** [http://www.javacoolsoftware.com/spywareblaster.html spyware blaster]&lt;br /&gt;
** [http://www.siteadvisor.com/ siteadvisor]&lt;br /&gt;
* Consider the [http://ubcd4win.com/ Ultimate Boot CD for Windows] used for repairing, restoring, or diagnosing almost any home computer problem&lt;br /&gt;
&lt;br /&gt;
=== Other Considerations ===&lt;br /&gt;
&lt;br /&gt;
* Do not use the standard jos_ table prefix and avoid one click installers where possible&lt;br /&gt;
&lt;br /&gt;
* Set the [http://feeds.joomla.org/JoomlaSecurityNews?format=xml joomla security newsfeed] as the main top module in your joomla admin control panel. [[Screen.modulesadministrator.edit.15#Feed_Display|Set up the Security Newsfeed]] &lt;br /&gt;
** [[Screen.modulesadministrator.edit.15#How_to_access|Add the Admin Feed Display Module]] if it is missing. Enable it to the first place on your sites back end control panel.&lt;br /&gt;
&lt;br /&gt;
* Consider adding a [http://forum.joomla.org/viewtopic.php?p=1568940#p1568940 bot block list] to your .htaccess file&lt;br /&gt;
&lt;br /&gt;
* Use [http://en.wikipedia.org/wiki/SSH_file_transfer_protocol sFTP] instead of FTP where possible&lt;br /&gt;
&lt;br /&gt;
* Do not enable or use [http://en.wikipedia.org/wiki/File_Transfer_Protocol#Anonymous_FTP anonymous ftp] accounts for any reason.&lt;br /&gt;
&lt;br /&gt;
* Use a server that has [http://www.modsecurity.org/ mod_security] installed properly&lt;br /&gt;
&lt;br /&gt;
* Check for any added sub domains and/or added directories&lt;br /&gt;
&lt;br /&gt;
* Check for any [http://en.wikipedia.org/wiki/Common_Gateway_Interface cgi scripts]&lt;br /&gt;
&lt;br /&gt;
* Check [http://en.wikipedia.org/wiki/Cron cron] for any cron jobs not set up by domain administrator&lt;br /&gt;
&lt;br /&gt;
* Download and &amp;lt;ref&amp;gt;Review raw access and error logs.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Deny any IP&#039;s that you got to the IP ban on your site but it may belong to a proxy site.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Was your site hacked in the past&#039;&#039;&#039; and proper site sanitation not used to remove actual&lt;br /&gt;
 (and hidden) hack thus leaving a backdoor for reinfection.&lt;br /&gt;
&lt;br /&gt;
* Consider removing &amp;quot;[http://docs.joomla.org/How_do_you_remove_or_change_the_%22Welcome_to_the_Frontpage%22_title%3F welcome to the front page]&amp;quot; to reduce [http://www.google.co.uk/search?q=intext%3A+welcome+to+the+front+page+joomla&amp;amp; search engine attacks]. &lt;br /&gt;
&lt;br /&gt;
* Completely remove/uninstall, don&#039;t unpublish unused or vulnerable extensions. [[Why_isn&#039;t_un-publishing_a_vulnerable_extension_enough_to_protect_your_site%3F|Un-publishing a vulnerable extension will not protect your site.]]&lt;br /&gt;
&lt;br /&gt;
=== Malicious Code or Odd Links appearing on your site ===&lt;br /&gt;
&lt;br /&gt;
Check that the original template file does or does not insert the [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=411735 unwanted code/Malicious Javascript ] or that you downloaded a paid for template from a non trusted source eg file sharing sites&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.iss.net/threats/gumblar.html Gumblar]&#039;&#039;&#039; doesn’t use any particular script vulnerability.&lt;br /&gt;
This script is injected into every web page ( I would imagine though not confirmed, if infected page is edited then saved it will also be in database) on a site.&lt;br /&gt;
Script changes every time it is accessed.&lt;br /&gt;
It has been seen on phpBB, SMF and vBulletin forums, on WordPress 2.7.1 blogs, on proprietary PHP sites.&lt;br /&gt;
The script starts with &#039;&#039;(function(&#039;&#039; and has no name and is obfusticated.&lt;br /&gt;
A common Gumblar version breaks sites due to a bug in script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;iFrames&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In recent iframe exploits the malicious code was only injected into files with most common filenames (e.g. index.html, index.php, etc.). [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=411735 Related Forum Sticky]&lt;br /&gt;
&lt;br /&gt;
=== Contributors &amp;amp; Editing === &lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=28000 mandville]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=67439 PhilD]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=3701 fw116]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=322239 JeffChannell]&lt;br /&gt;
[http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=339316 dynamicnet]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
When your hosting provider runs PHP as an Apache Module it executes as the user/group of the webserver which is usually &amp;quot;nobody&amp;quot;, &amp;quot;httpd&amp;quot; or &amp;quot;apache&amp;quot;. Under this (ownership) mode, files or directories that you require your php scripts to be able to write do need 777 permissions (read/write/execute at user/group/world level) if the ownership of the files and directories are not Chown (Change Owner) to the User. Such a scenario is absolute unacceptable  from a security perspective since &#039;777&#039; not only allows the webserver to write to the file; it also allows anyone else to read or write to the file.&lt;br /&gt;
If your provider is not able to change this, one should strongly consider changing host!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Logs&#039;&#039;&#039;&lt;br /&gt;
Make sure that in your control panel your raw access logs have been activated for review!&lt;br /&gt;
&lt;br /&gt;
Raw Access Logs allow you to see who has accessed your site without the use of graphs, charts or other graphics. in cPanel for instance you can use the Raw Access Logs menu to download a zipped version of the server&#039;s access log for your site. This can be very useful when you need to see who is accessing your site quickly. Many people forget that this needs to be activated by the user of the account and is not automatically activated upon the creation of a hosting account in cPanel for instance!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Incompatible Versions&#039;&#039;&#039;&lt;br /&gt;
This document applies to all versions of Joomla. Use the latest version of Joomla that is compatible with your existing Joomla website site version to repair your site. Some version upgrades require a [[Migrating_from_Joomla_1.5_to_Joomla_2.5|site migration]] and will render your Joomla site inoperative if used to overwrite an earlier version of Joomla. For example: Do not overwrite a 1.5.xx site with version 2.5.xx of Joomla. Doing so will leave the site in an inoperative state.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81671</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81671"/>
		<updated>2013-02-20T01:22:56Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* File permissions */ fixed heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
: For more information, see either [[Magic quotes and security]] or [http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This was an attempt to solve shared security problems and provides a false sense of security.  Safe mode can also cause ownership problems with applications and any files created by the applications. See the official PHP site for more information. [http://php.net/manual/en/features.safe-mode.php PHP Manual: Safe Mode]&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server.&lt;br /&gt;
&lt;br /&gt;
: For more information, see [http://php.net/manual/en/security.globals.php PHP Manual: Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
=== Use allow_url_fopen ===&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
== File permissions ==&lt;br /&gt;
: If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
:: *DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
:: *Files: 644&lt;br /&gt;
:: *Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
: With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
&lt;br /&gt;
: Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
: If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
:: * DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
:: * PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
:: * HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
:: * Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
: More information on file permissions can be found here: [[Security Checklist/Where can you learn more about file permissions?]]&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
:: 1. Broken site due to a faulty upgrade.&lt;br /&gt;
:: 2. Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
:: 3. Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
:: 4. Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
: Backups are not recommended for restoring a compromised/hacked site as it is possible the backups will contain the altered and hack files. Using the backups to restore a hacked site would just restore the hack to the site.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81670</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81670"/>
		<updated>2013-02-20T01:17:55Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* The most important rule:&amp;#039; */ put old point 1 into and explanation / better formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
: For more information, see either [[Magic quotes and security]] or [http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This was an attempt to solve shared security problems and provides a false sense of security.  Safe mode can also cause ownership problems with applications and any files created by the applications. See the official PHP site for more information. [http://php.net/manual/en/features.safe-mode.php PHP Manual: Safe Mode]&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server.&lt;br /&gt;
&lt;br /&gt;
: For more information, see [http://php.net/manual/en/security.globals.php PHP Manual: Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
=== Use allow_url_fopen ===&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
: If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
:: *DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
:: *Files: 644&lt;br /&gt;
:: *Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
: With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
&lt;br /&gt;
: Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
: If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
:: * DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
:: * PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
:: * HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
:: * Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
: More information on file permissions can be found here: [[Security Checklist/Where can you learn more about file permissions?]]&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
:: 1. Broken site due to a faulty upgrade.&lt;br /&gt;
:: 2. Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
:: 3. Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
:: 4. Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
: Backups are not recommended for restoring a compromised/hacked site as it is possible the backups will contain the altered and hack files. Using the backups to restore a hacked site would just restore the hack to the site.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81669</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81669"/>
		<updated>2013-02-20T01:09:43Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* File permissions */ added link to local permissions page  better formatting of info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
: For more information, see either [[Magic quotes and security]] or [http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This was an attempt to solve shared security problems and provides a false sense of security.  Safe mode can also cause ownership problems with applications and any files created by the applications. See the official PHP site for more information. [http://php.net/manual/en/features.safe-mode.php PHP Manual: Safe Mode]&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server.&lt;br /&gt;
&lt;br /&gt;
: For more information, see [http://php.net/manual/en/security.globals.php PHP Manual: Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
=== Use allow_url_fopen ===&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
: If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
:: *DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
:: *Files: 644&lt;br /&gt;
:: *Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
: With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
&lt;br /&gt;
: Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
: If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
:: * DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
:: * PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
:: * HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
:: * Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
: More information on file permissions can be found here: [[Security Checklist/Where can you learn more about file permissions?]]&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81668</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81668"/>
		<updated>2013-02-20T01:01:49Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Adjust magic_quotes_gpc */ made local link to local magic_quotes page properly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
: For more information, see either [[Magic quotes and security]] or [http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This was an attempt to solve shared security problems and provides a false sense of security.  Safe mode can also cause ownership problems with applications and any files created by the applications. See the official PHP site for more information. [http://php.net/manual/en/features.safe-mode.php PHP Manual: Safe Mode]&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server.&lt;br /&gt;
&lt;br /&gt;
: For more information, see [http://php.net/manual/en/security.globals.php PHP Manual: Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
=== Use allow_url_fopen ===&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81667</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81667"/>
		<updated>2013-02-20T00:56:49Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Adjust magic_quotes_gpc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
: For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This was an attempt to solve shared security problems and provides a false sense of security.  Safe mode can also cause ownership problems with applications and any files created by the applications. See the official PHP site for more information. [http://php.net/manual/en/features.safe-mode.php PHP Manual: Safe Mode]&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server.&lt;br /&gt;
&lt;br /&gt;
: For more information, see [http://php.net/manual/en/security.globals.php PHP Manual: Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
=== Use allow_url_fopen ===&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81666</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81666"/>
		<updated>2013-02-20T00:56:07Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Don&amp;#039;t use PHP register_globals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This was an attempt to solve shared security problems and provides a false sense of security.  Safe mode can also cause ownership problems with applications and any files created by the applications. See the official PHP site for more information. [http://php.net/manual/en/features.safe-mode.php PHP Manual: Safe Mode]&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server.&lt;br /&gt;
&lt;br /&gt;
: For more information, see [http://php.net/manual/en/security.globals.php PHP Manual: Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
=== Use allow_url_fopen ===&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81665</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81665"/>
		<updated>2013-02-20T00:55:39Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Don&amp;#039;t use PHP register_globals */ fixed external broken/non existent link to register_globals&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This was an attempt to solve shared security problems and provides a false sense of security.  Safe mode can also cause ownership problems with applications and any files created by the applications. See the official PHP site for more information. [http://php.net/manual/en/features.safe-mode.php PHP Manual: Safe Mode]&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server. For more information, see [http://php.net/manual/en/security.globals.php PHP Manual: Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
=== Use allow_url_fopen ===&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81664</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81664"/>
		<updated>2013-02-20T00:51:48Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Don&amp;#039;t use PHP safe_mode */ external link was broken and updated general info on safe mode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This was an attempt to solve shared security problems and provides a false sense of security.  Safe mode can also cause ownership problems with applications and any files created by the applications. See the official PHP site for more information. [http://php.net/manual/en/features.safe-mode.php PHP Manual: Safe Mode]&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server. For more information, see [http://www.zend.com/manual/security.globals.php ZEND Chapter 29. Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
=== Use allow_url_fopen ===&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81663</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81663"/>
		<updated>2013-02-20T00:36:01Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Don&amp;#039;t use PHP safe_mode */ repaired link to PHP Safe mode page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This is a valid but incomplete solution to a deeper problem and provides a false sense of security. See the official PHP site for an explanation of this issue. [http://php.net/manual/en/features.safe-mode.php PHP Manual: Safe Mode]&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server. For more information, see [http://www.zend.com/manual/security.globals.php ZEND Chapter 29. Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
=== Use allow_url_fopen ===&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81662</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81662"/>
		<updated>2013-02-20T00:31:32Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Don&amp;#039;t use PHP allow_url_include but do USE allow_url_fopen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This is a valid but incomplete solution to a deeper problem and provides a false sense of security. See the official PHP site for an explanation of this issue. http://php.net/manual/en/features.safe-mode.php&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server. For more information, see [http://www.zend.com/manual/security.globals.php ZEND Chapter 29. Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
=== Use allow_url_fopen ===&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81661</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81661"/>
		<updated>2013-02-20T00:30:40Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Use allow_url_fopen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This is a valid but incomplete solution to a deeper problem and provides a false sense of security. See the official PHP site for an explanation of this issue. http://php.net/manual/en/features.safe-mode.php&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server. For more information, see [http://www.zend.com/manual/security.globals.php ZEND Chapter 29. Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include but do USE allow_url_fopen ===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
=== Use allow_url_fopen ===&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81660</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81660"/>
		<updated>2013-02-20T00:28:37Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Don&amp;#039;t use PHP allow_url_fopen */ rewrote to indicate use allow_url_open and not use allow_url_include&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This is a valid but incomplete solution to a deeper problem and provides a false sense of security. See the official PHP site for an explanation of this issue. http://php.net/manual/en/features.safe-mode.php&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server. For more information, see [http://www.zend.com/manual/security.globals.php ZEND Chapter 29. Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_include but do USE allow_url_fopen ===&lt;br /&gt;
&lt;br /&gt;
: Do not use PHP &#039;&#039;allow_url_include&#039;&#039;. This PHP option allows a programmer to include a remote file using an URL rather than a local file path. This is insecure. If an application (or extension) can be tricked into including content from a URL outside itself, an attacker could force the application (or extension) to start running code from their own web site. If an application or extension claims to require this feature to function, you should look into alternatives, as a requirement to use of this feature indicates serious design flaws within the application or extension.&lt;br /&gt;
&lt;br /&gt;
==== Use allow_url_fopen ====&lt;br /&gt;
: This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons. &#039;&#039;&#039;Enable and use allow_url_fopen to allow Joomla&#039;s One-Click-Update to work properly.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: For more information see: [http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen PHP Manual: allow_url_fopen and allow_url_include ]&lt;br /&gt;
&lt;br /&gt;
    Proper setup will have this:&lt;br /&gt;
                 allow_url_fopen = 1&lt;br /&gt;
               allow_url_include = 0&lt;br /&gt;
   &lt;br /&gt;
    PHP default: allow_url_fopen is enabled&lt;br /&gt;
    PHP default: allow_url_include is disabled&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Magic_quotes_and_security&amp;diff=81649</id>
		<title>Magic quotes and security</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Magic_quotes_and_security&amp;diff=81649"/>
		<updated>2013-02-19T19:56:45Z</updated>

		<summary type="html">&lt;p&gt;Phild: added information for J!3.0 and notice of MQ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{incomplete|needs updating|JInput requires magic quotes being turned off and there are issues with this in Joomla 2.5. Article needs to be updated to reflect this}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above requires magic_quotes_gpc to be set to off and will not install if magic_quotes_gpc is on.&lt;br /&gt;
&lt;br /&gt;
: Joomla! advises magic_quotes_gpc to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
JRequest automatically takes into account the setting of &#039;&#039;magic_quotes_gpc&#039;&#039; and adjusts accordingly.  If developers are using JRequest to request input then the actual value of the setting doesn&#039;t matter.  If developers aren&#039;t using it then they will have to take the setting of magic_quotes_gpc into account.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Magic Quotes Off&#039;&#039;&#039; there is an &amp;quot;increased&amp;quot; risk of SQL Injections due to poorly written&lt;br /&gt;
queries not being safely escaped in extensions hence the general PHP and JTS recommendation&lt;br /&gt;
that Magic Quotes be ON by default (although in the past PHP has left them&lt;br /&gt;
disabled in the default distribution) for a more secure environment.&lt;br /&gt;
&lt;br /&gt;
This setting is now basically irrelevant (can be On or Off) due to the way that Joomla! has been written to overcome the problem of poorly written queries.&lt;br /&gt;
&lt;br /&gt;
The setting is now deprecated and has actually been removed in later PHP releases anyway, hence developers of older PHP applications will need to complete a code review for compliance, and&lt;br /&gt;
safety, of which has already been completed by Joomla! quite some time ago and the issue was resolved with JRequest.&lt;br /&gt;
&lt;br /&gt;
In the past, there has been much discussion regarding the performance implications of this setting, in general from my testing and experience, it was negligible at worst and unnoticed at best, unless the queries were very very large,  but on the whole the trade-off of improved security against&lt;br /&gt;
SQL Injections far outweighs any discussions surrounding performance.&lt;br /&gt;
&lt;br /&gt;
For more on [http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited from a discussion on Joomla CMS development Mailing list between A Eddie, R Winter and C Mandville&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81648</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=81648"/>
		<updated>2013-02-19T19:40:20Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Adjust magic_quotes_gpc */  to reflect updated information for J&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Security Checklist/TOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured htaccess|preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been depreciated as of PHP 5.3.0 (30-06-2009) and has been removed from php as of PHP 5.4.0.&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 3.0 and above &#039;&#039;&#039;requires&#039;&#039;&#039; &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off and will not install if &#039;&#039;magic_quotes_gpc&#039;&#039; is on. &lt;br /&gt;
&lt;br /&gt;
: Joomla! advises &#039;&#039;magic_quotes_gpc&#039;&#039; to be set to off when using Joomla 2.5.xx.&lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores the magic_quotes setting and works fine either way. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions.&lt;br /&gt;
&lt;br /&gt;
: The recommended settings for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. &lt;br /&gt;
&lt;br /&gt;
For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
 to turn off    magic_quotes_gpc = 0&lt;br /&gt;
 to turn on     magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This is a valid but incomplete solution to a deeper problem and provides a false sense of security. See the official PHP site for an explanation of this issue. http://php.net/manual/en/features.safe-mode.php&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server. For more information, see [http://www.zend.com/manual/security.globals.php ZEND Chapter 29. Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_fopen===&lt;br /&gt;
&lt;br /&gt;
: Don&#039;t use PHP &#039;&#039;allow_url_fopen&#039;&#039;. This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons.&lt;br /&gt;
&lt;br /&gt;
      allow_url_fopen = 0&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;br /&gt;
[[Category:Server configurations]][[Category:Server setup hosted]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User:Phild/monobook.js&amp;diff=80144</id>
		<title>User:Phild/monobook.js</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User:Phild/monobook.js&amp;diff=80144"/>
		<updated>2013-01-29T22:01:01Z</updated>

		<summary type="html">&lt;p&gt;Phild: Created page with &amp;quot;importScript(&amp;quot;User:Csewiki/monobook.js&amp;quot;);&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;importScript(&amp;quot;User:Csewiki/monobook.js&amp;quot;);&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User:Phild/vector.js&amp;diff=80143</id>
		<title>User:Phild/vector.js</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User:Phild/vector.js&amp;diff=80143"/>
		<updated>2013-01-29T21:54:34Z</updated>

		<summary type="html">&lt;p&gt;Phild: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;importScript(&amp;quot;User:Csewiki/vector.js&amp;quot;);&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User:Phild/vector.js&amp;diff=80142</id>
		<title>User:Phild/vector.js</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User:Phild/vector.js&amp;diff=80142"/>
		<updated>2013-01-29T21:51:19Z</updated>

		<summary type="html">&lt;p&gt;Phild: add contextual search&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
importScript(&amp;quot;User:Csewiki/vector.js&amp;quot;);&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J2.5:Migrating_from_Joomla_1.5_to_Joomla_2.5&amp;diff=79878</id>
		<title>J2.5:Migrating from Joomla 1.5 to Joomla 2.5</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J2.5:Migrating_from_Joomla_1.5_to_Joomla_2.5&amp;diff=79878"/>
		<updated>2013-01-11T19:45:17Z</updated>

		<summary type="html">&lt;p&gt;Phild: added needs review tag - see talk page for reason&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{review}}{{RightTOC}}This guide will take you step-by-step through the general procedure of how to migrate from Joomla 1.5 to later versions such as Joomla 2.5. Please read through all the material as this is not a light undertaking.&lt;br /&gt;
=Before Upgrading=&lt;br /&gt;
Don&#039;t let the numerical closeness of 1.5 and 1.6, mislead you. Joomla 1.6 took three years to develop and has been a major undertaking. Countless hours have been spent by many volunteers from around the world to put it all together. Although much of the code is the same from Joomla 1.5, much of it has been written from the ground up, and the changes are comparable to the changes from Joomla 1.0 to 1.5.&lt;br /&gt;
Because the changes from Joomla 1.5 to 2.5 are so large and because of the massive effort put into getting Joomla 2.5 to where it is today, there is no core upgrade path. This is indeed a migration. In planned future releases of Joomla (which will be released every 6 months), such as Joomla 3.0, 3.5 and so on, the changes from version to version will be more incremental and a core upgrade path is planned.&lt;br /&gt;
Now that Joomla 2.5 is finally here and stable, a community initiative led by the developers of Joomla is turning towards [http://extensions.joomla.org/extensions/migration-a-conversion/joomla-migration/11658 jUpgrade] (a 3rd party Joomla extension on the JED originally developed by Matias Aguirre) for help and to help. Many of Joomla&#039;s developers (who are all volunteers that freely contribute their time) are volunteering to put the finishing touches on [http://extensions.joomla.org/extensions/migration-a-conversion/joomla-migration/11658 jUpgrade].&lt;br /&gt;
&lt;br /&gt;
[http://extensions.joomla.org/extensions/migration-a-conversion/joomla-migration/11658 jUpgrade] allows you to migrate from Joomla 1.5 to 2.5.&lt;br /&gt;
&lt;br /&gt;
Other migration solutions including commercial solutions are listed on the [http://extensions.joomla.org/extensions/migration-a-conversion/joomla-migration Joomla Extensions Directory] and should be considered as well. Other tools are not included in this tutorial but should be given consideration before you use jUpgrade if your time is highly valuable and limited.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s get started!&lt;br /&gt;
==Review the Requirements==&lt;br /&gt;
Please, please save yourself (and possibly your clients) a lot of headaches and make sure that your server (and in the case of jUpgrade, your browser too) is up for the task. Please review the [http://docs.joomla.org/Joomla_1.6_technical_requirements technical requirements for Joomla! 1.6]. Please review the [http://redcomponent.com/redcomponent/jupgrade requirements for jUpgrade] as well.&lt;br /&gt;
&lt;br /&gt;
==Before You Get Started==&lt;br /&gt;
Before you get started, there are a few things that you are going to have to check and/or think about:&lt;br /&gt;
# Is your Joomla 1.5 version up to date? The most up-to-date version of Joomla 1.5 is 1.5.26. If your version is not up-to-date, upgrade to 1.5.26 before migrating, especially if you are running Joomla 1.5.19 or lower, as JUpgrade does not support older versions. Read [http://docs.joomla.org/Downloading_older_releases how to download older releases of Joomla!]. You will need the Joomla! 1.5.0 to Joomla! 1.5.25 package with file name: [http://joomlacode.org/gf/download/frsrelease/16025/69668/Joomla_1.5.0_to_1.5.25-Stable-Patch_Package.zip Joomla_1.5.0_to_1.5.25-Stable-Patch_Package.zip] &amp;lt; direct download link. Read how to update from Joomla! 1.5.x to the latest version [http://docs.joomla.org/Upgrading_1.5_from_an_existing_1.5x_version how to update from Joomla! 1.5.x to the latest version].&lt;br /&gt;
# Do all your extensions have Joomla 2.5 native versions? You can use Advanced Search on the [http://extensions.joomla.org Joomla! Extensions Directory] to see what extensions support 2.5. Please note that jUpgrade is not currently able to upgrade all Joomla 3rd party extensions, so those will have to be done via their respective upgrade procedures. Supported by jUpgrade on January 2012 are AdminPraise, Kunena, K2, JoomComment, Virtuemart, redSHOP, CommunityBuilder, JCE, Contact Enhanced, JomSocial, redForm, JEvents, Akeeba Backup, Jumi and redMEMBER.&lt;br /&gt;
# Have you modified any core files? Any changes that you have made to core files in Joomla will be lost so please be forewarned.&lt;br /&gt;
# Is there a Joomla 2.5 compatible template available from your template provider? If not, do you feel comfortable making the changes yourself? There are a couple good resources:&lt;br /&gt;
## [http://community.joomla.org/blogs/community/1257-16-templates.html Chad Windnagle&#039;s Joomla Community blog]&lt;br /&gt;
## [http://www.slideshare.net/chrisdavenport/template-changes-for-joomla-16 Chris Davenport&#039;s &amp;quot;Template Changes for Joomla 1.6&amp;quot; presentation]&lt;br /&gt;
## [[Upgrading a Joomla 1.5 template to Joomla 1.6|Joomla&#039;s Docs Template Tutorial]] Please note that although jUpgrade is not able to currently upgrade templates, the developers are working hard at implementing the feature.&lt;br /&gt;
# Is your language pack available in Joomla 1.6?  [http://community.joomla.org/translations/joomla-16-translations.html Find your Joomla1 1.6 Translation].&lt;br /&gt;
# Do you have folder or file permissions issues in your Joomla 1.5 installation?&lt;br /&gt;
# Do you NEED to migrate to Joomla 2.5 Joomla 1.5 is powerful and very mature. For many people there is not a need to rush into Joomla 2.5. Joomla will continue to support Joomla 1.5 at least till April 2012, releasing security updates and bug squashing updates when needed.&lt;br /&gt;
#: The two main features of Joomla 2.5 that makes it superior to Joomla 1.5 are: Access Control List (ACL) and nested categories. Gone are the days of simply having guests, registered users, authors, and editors, without being able to specify what they can and can&#039;t do in the frontend. Also, with 2.5 you can have more flexibility of organizing (and therefore displaying) your content with nicely organized categories within categories. No more being restricted to the section &amp;gt;&amp;gt; category structure. Those are all great things to have (especially the ACL), however, for many 1.5 users, it isn&#039;t needed. The main point is to decide for yourself.&lt;br /&gt;
#: For a massive list of changes from Joomla 1.5 to Joomla 1.6, please see [[What&#039;s new in Joomla 1.6]].&lt;br /&gt;
&lt;br /&gt;
==Backup, Backup, Backup==&lt;br /&gt;
Skipping this part is perhaps the biggest mistake you can make. If you have a proper backup (or several) you can always revert if needed. However, if you don&#039;t properly backup your site and something goes wrong, you are going to waste a lot of valuable time and sometimes money, getting things back to the way they were. So please backup!&lt;br /&gt;
&lt;br /&gt;
=== Using XCloner to Backup ===&lt;br /&gt;
* With XCloner you can backup your site fully, both files and database&lt;br /&gt;
&lt;br /&gt;
* XCloner will produce TAR archives which can be opened with most archive clients&lt;br /&gt;
&lt;br /&gt;
* After creating the backup, they can easily be restored by using its dedicated restore script&lt;br /&gt;
&lt;br /&gt;
* XCloner can be downloaded for free from http://www.xcloner.com; a full documentation usage wiki is here: http://www.xcloner.com/wiki/index.php/Main_Page&lt;br /&gt;
&lt;br /&gt;
=== Using Akeeba to Backup ===&lt;br /&gt;
* Akeeba Backup produces a .jpa file&lt;br /&gt;
&lt;br /&gt;
* The .jpa file contains all the folders and files and the MySQL database of your site.&lt;br /&gt;
&lt;br /&gt;
* The .jpa file also contains an installer&lt;br /&gt;
&lt;br /&gt;
* Kickstart.php (also from Akeeba) unpacks the .jpa file and then runs the installer&lt;br /&gt;
&lt;br /&gt;
Akeeba and Kickstart can be downloaded from [http://extensions.joomla.org/extensions/access-a-security/site-security/backup/1606 Joomla extension directory].  There is a link to full instructions as well.&lt;br /&gt;
&lt;br /&gt;
=Upgrading with jUpgrade=&lt;br /&gt;
==Download jUpgrade==&lt;br /&gt;
Download the [http://extensions.joomla.org/search?q=jupgrade latest version of jUpgrade]. It is highly advisible, especially when development still is progressing, to always use the latest available version!&lt;br /&gt;
&lt;br /&gt;
==Optional Testing Environment==&lt;br /&gt;
If you are really nervous by this point and your heart is beating fast, then you should probably set up a testing environment.&lt;br /&gt;
&lt;br /&gt;
=== Install XAMPP ===&lt;br /&gt;
XAMPP is an easy-to-install package that bundles the Apache web server, PHP, XDEBUG, and the MySql database. This allows you to create the environment you need to run Joomla! on your local machine. The latest version of XAMPP is available at [http://www.apachefriends.org/en/xampp.html the XAMPP web site]. Downloads are available for Linux, Windows, Mac OS X and Solaris. Download the package for your platform. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Important Note Regarding XAMPP and Skype:&#039;&#039; Apache and Skype both use port 80 as an alternative for incoming connections. If you use Skype, go into the Tools-Options-Advanced-Connection panel and deselect the &amp;quot;Use 80 and 443 as alternatives for incoming connections&amp;quot; option. If Apache starts as a service, it will take 80 before Skype starts and you will not see a problem. But, to be safe, disable the option in Skype.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Update&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;As of August 5, 2010, XDebug has been updated (to version 2.1) which fixes some important bugs (for example, watching local variables for nesting functions). The latest XAMPP package (1.7.3) now includes this new version of XDebug. If you just want to update XDebug, you can download the latest module from [http://www.xdebug.org]. There is a handy website that tells you which XDebug binary you need, depending on your phpinfo() information [http://xdebug.org/find-binary.php here]. To use it, you just copy the output of your phpinfo() display and paste it into the form on the site.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Installation on Windows ====&lt;br /&gt;
Installation for Windows is very simple. You can use the XAMPP installer executable (for example, &amp;quot;xampp-win32-1.7.3-installer.exe&amp;quot;). Detailed installation instructions for Windows are available [http://www.apachefriends.org/en/xampp-windows.html here]. &lt;br /&gt;
&lt;br /&gt;
For Windows, it is recommended to install XAMPP in &amp;quot;c:\xampp&amp;quot; (not in &amp;quot;c:\program files&amp;quot;). If you do this, your Joomla! (and any other local web site folders) will go into the folder &amp;quot;c:\xampp\htdocs&amp;quot;. (By convention, all web content goes under the &amp;quot;htdocs&amp;quot; folder.)&lt;br /&gt;
&lt;br /&gt;
If you have multiple http servers (like IIS) you can change the xampp listening port. In &amp;lt;xamppDir&amp;gt;\apache\conf\httpd.conf, modify the line Listen 80 to Listen [portnumber] (ex: &amp;quot;Listen 8080&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==== Installation on Linux ====&lt;br /&gt;
This guides you through the installation of Xampp on &#039;&#039;&#039;Debian GNU Linux&#039;&#039;&#039; or one of its derivatives such as &#039;&#039;&#039;Ubuntu&#039;&#039;&#039;, &#039;&#039;&#039;Knoppix&#039;&#039;&#039; or &#039;&#039;&#039;GRML&#039;&#039;&#039;. Note that this guide applies to Joomla! {{JVer|1.5}} {{JVer|1.6}} {{JVer|1.7}} {{JVer|2.5}}. It has been successfully tested on Debian 4.0 [Etch], Debian 5.0 [Lenny], Ubuntu 8.04 LTS [Hardy Heron], Ubuntu 10.10 [maverick] and Ubuntu 11.10 (Oneiric Ocelot). It will work for all &#039;&#039;&#039;Debian&#039;&#039;&#039; based Linux distribution as well.&lt;br /&gt;
&lt;br /&gt;
Download [http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/ XAMPP] for Linux to your your Home folder. &lt;br /&gt;
&lt;br /&gt;
Open Terminal and enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo tar xvfz xampp-linux-1.7.7.tar.gz -C /opt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(replace &#039;&#039;xampp-linux-1.7.7.tar.gz&#039;&#039; with the version of XAMPP you downloaded).&lt;br /&gt;
&lt;br /&gt;
This installs ... Apache2, mysql and php5 as well as an ftp server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo /opt/lampp/lampp start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo /opt/lampp/lampp stop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
starts/stops all the services&lt;br /&gt;
&lt;br /&gt;
===== Configure Xampp Error Reporting on Linux =====&lt;br /&gt;
By default error reporting in Xampp is set Development level. This causes several error messages on the screen that need not concern the average user. To prevent that from happening:&lt;br /&gt;
&lt;br /&gt;
In your Terminal type&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo gedit /opt/lampp/etc/php.ini&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;tt&amp;gt;php.ini&amp;lt;/tt&amp;gt; file, locate&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
error_reporting =&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
And change the value to&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
error_reporting = E_ALL &amp;amp; ~E_NOTICE &amp;amp; ~E_DEPRECATED&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also locate&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
display_errors = On&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
And change the value to&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
display_errors = Off&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop then restart XAMPP for the new settings to take effect&lt;br /&gt;
&lt;br /&gt;
===== To Create a GUI for XAMPP Connected to Your Ubuntu Menu =====&lt;br /&gt;
Open up the Terminal and type&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo gedit /usr/share/applications/xampp-control-panel.desktop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then copy the following into the gedit and save.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=XAMPP Control Panel&lt;br /&gt;
Comment=Start and Stop XAMPP&lt;br /&gt;
Exec=gksudo &amp;quot;python /opt/lampp/share/xampp-control-panel/xampp-control-panel.py&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/Tango/scalable/devices/network-wired.svg&lt;br /&gt;
Terminal=false&lt;br /&gt;
Type=Application&lt;br /&gt;
Categories=GNOME;Application;Network;&lt;br /&gt;
StartupNotify=true&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;N.B.&#039;&#039;&#039; Ubuntu 11.10 needs &#039;&#039;python-glade2&#039;&#039; installed in order to run the GUI.  &#039;&#039;python-glade2&#039;&#039; can be found in the Ubuntu Software Center.&lt;br /&gt;
&lt;br /&gt;
===== Avoiding File Ownership Issues on Linux =====&lt;br /&gt;
Connect to localhost with an FTP client &lt;br /&gt;
Default&lt;br /&gt;
 nobody&lt;br /&gt;
 lampp&lt;br /&gt;
&lt;br /&gt;
Use your ftp client to create folders in your localhost and to copy files to/from your localhost.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; &lt;br /&gt;
* The XAMPP installation sets the correct Ownership of the files and permissions.&lt;br /&gt;
* Using the &#039;&#039;&#039;CHOWN command&#039;&#039;&#039; will &#039;&#039;&#039;cause Ownership problems with xampp&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Using nautilus&#039;&#039;&#039; to manipulate folders/files on localhost will &#039;&#039;&#039;cause Ownership problems with xampp&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Test Your XAMPP localhost Server ====&lt;br /&gt;
Open your Browser and point it to&lt;br /&gt;
 http://localhost&lt;br /&gt;
The index.php will redirect to&lt;br /&gt;
 http://localhost/xampp&lt;br /&gt;
&lt;br /&gt;
There you will find instructions on how to change default usernames/passwords.  On a PC that does not serve files to the Internet or LAN then changing the defaults is personal choice.&lt;br /&gt;
&lt;br /&gt;
== EasyPHP ==&lt;br /&gt;
&lt;br /&gt;
Another way that will have the same result is to install EasyPHP, is an easy to install package, Nothing to configure. It&#039;s already done! You just need to download, intall ... it installs a complete WAMP environment for PHP developers on Windows, including PHP, Apache, MySQL, phpMyAdmin, xdebug ... The complete and ready-to-use environment for PHP developer. For download EasyPHP[http://www.easyphp.org/]&lt;br /&gt;
&lt;br /&gt;
== Install jUpgrade ==&lt;br /&gt;
Go to your Joomla backend. e.g. www.yoursite.com/administrator&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Extensions&#039;&#039;&#039; &amp;gt;&amp;gt; &#039;&#039;&#039;Install/Uninstall&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Installjupgrade.png|alt=Installing jUpgrade]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Browse&#039;&#039;&#039; &amp;gt;&amp;gt; &#039;&#039;&#039;Select com_jupgrade&#039;&#039;&#039; &amp;gt;&amp;gt; &#039;&#039;&#039;Upload File &amp;amp; Install&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:browse.png|Browse and Upload Component]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Installjupgrade2.png|alt=Installing jUpgrade]]&lt;br /&gt;
&lt;br /&gt;
== Enable Mootools Upgrade Plugin ==&lt;br /&gt;
# Go to Extensions | Plugin Manager&lt;br /&gt;
# Search for &amp;quot;System - Mootools Upgrade&amp;quot;&lt;br /&gt;
# Enable the plugin&lt;br /&gt;
It is important that this plugin is installed and that it has been set to enabled, as the proper functioning of jUpgrade depends on it.&lt;br /&gt;
&lt;br /&gt;
== Configure the Options ==&lt;br /&gt;
As of jUpgrade version 2.5, support is present to migrate to Joomla! 1.7 and Joomla! 2.5. Configure the options by navigating to Administrator &amp;gt; Components &amp;gt; jUpgrade &amp;gt; Parameters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Global&#039;&#039;&#039;&lt;br /&gt;
* Distribution - Select whether to migrate to Joomla! 1.6 or 2.5&lt;br /&gt;
* Prefix for old database - Your current table prefix&lt;br /&gt;
* Prefix for new database - Your selected table prefix for your migrated site&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skips&#039;&#039;&#039;&lt;br /&gt;
* Skip checks - Skip pre-migration checks&lt;br /&gt;
* Skip download - Skip downloading the package (Note: Must have a package already downloaded to your temp folder or set this and Skip Decompress if set to yes)&lt;br /&gt;
* Skip decompress - Skip decompressing the downloaded package (Note: Must have a package already downloaded and decompressed to site_root/jupgrade if set to Yes)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Templates&#039;&#039;&#039;&lt;br /&gt;
* Keep original positions - Keep the currently defined positions for modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Debug&#039;&#039;&#039;&lt;br /&gt;
* Enable Debug - Enable this to have messages displayed below the migration process concerning the progress, helpful if having issues&lt;br /&gt;
&lt;br /&gt;
[[Image:Jupgrade_options.png|alt=jUpgrade 1.1.1 Options]]&lt;br /&gt;
&lt;br /&gt;
When finished, Save the options.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&#039;&#039;&#039;Components&#039;&#039;&#039; &amp;gt;&amp;gt; &#039;&#039;&#039;jUpgrade&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Accessjupgrade.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Start Upgrade&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Startjupgrade.png|alt=Start jUpgrade]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Runjupgrade.png|alt=Run jUpgrade]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not exit the screen&#039;&#039;&#039; until everything has finished loading. Scroll down to check if finished.&lt;br /&gt;
&lt;br /&gt;
[[Image:Jupgradefinished.png|alt=jUpgrade Finished]]&lt;br /&gt;
&lt;br /&gt;
Note that jUpgrade currently does not migrate custom and add-on templates. Only the default templates are initially installed. You must manually migrate the other templates.&lt;br /&gt;
&lt;br /&gt;
==Behind the Scenes==&lt;br /&gt;
Even if the migration process was not 100% successful, your Joomla 1.5 is still intact and none of your users are affected. You have an opportunity to check out your site both in the frontend and the backend to make sure everything is working.&lt;br /&gt;
&lt;br /&gt;
So what actually happens? jUpgrade downloads the version of Joomla that you selected to the &#039;&#039;jupgrade&#039;&#039; directory (which it creates) in the root folder of your Joomla 1.5 installation. It then extracts all the files from the download. Once extraction has completed, jUpgrade installs the new Joomla version and then migrates your old database to the new database which it has created. Your new site will be installed in www.mysites.com/jupgrade assuming that your Joomla 1.5 installation is in your html root.&lt;br /&gt;
&lt;br /&gt;
==Check Your New Joomla! Installation==&lt;br /&gt;
Please do a full site review of your new Joomla installation and make sure everything is set up properly.&lt;br /&gt;
Your new Joomla site will be installed in www.mysites.com/jupgrade assuming that your Joomla 1.5 installation is in your html root.&lt;br /&gt;
Here is a general checklist:&lt;br /&gt;
* Banners&lt;br /&gt;
* Categories&lt;br /&gt;
* Contacts&lt;br /&gt;
* Content&lt;br /&gt;
* Menus&lt;br /&gt;
* Modules&lt;br /&gt;
* Newsfeeds&lt;br /&gt;
* Users&lt;br /&gt;
&lt;br /&gt;
Links to external sites probably didn&#039;t change during the migration but the internal links might have been affected. Verify that all external and internal links are correct with a program such as [http://home.snafu.de/tilman/xenulink.html Xenu&#039;s Link Sleuth].&lt;br /&gt;
===Templates===&lt;br /&gt;
Work is currently being done on the template upgrade feature of jUpdate and it is not yet fully functional. Your module positions may have to be adjusted in the module manager.&lt;br /&gt;
&lt;br /&gt;
If you had custom templates or templates other than those installed as defaults, they may have been copied from your version 1.5 files. If so, they now must be upgraded or modified and then Discovered. See [[Upgrading a Joomla 1.5 template to Joomla 2.5]].&lt;br /&gt;
&lt;br /&gt;
==Backup Joomla!==&lt;br /&gt;
If everything looks good to go, backup the new Joomla installation.&lt;br /&gt;
==Overview of the Rest of the Process==&lt;br /&gt;
Quick overview of what we are going to try to do now:&lt;br /&gt;
# Relocate our Joomla 1.5 installation to a subfolder as a &amp;quot;just in case&amp;quot;.&lt;br /&gt;
# Relocate our new Joomla installation to the html folder.&lt;br /&gt;
&#039;It should happen in this order&#039; If you do it in reverse order, the new Joomla files will get mixed with the Joomla 1.5 files (many of 1.5 files will be overwritten) and you will have a big mess! Your site will likely still work, but it&#039;s a security ticking time bomb waiting to go off.&lt;br /&gt;
&lt;br /&gt;
==Going Live==&lt;br /&gt;
Next log onto your host&#039;s file manager (e.g. cPanel, Plesk, etc) or an FTP Client, however, preferably a file manager.&lt;br /&gt;
The general procedure is (it should take about 30 seconds if you review the steps before you start):&lt;br /&gt;
# Create a subfolder (e.g. myoldsite) for the Joomla 1.5 installation in your html root, e.g. public_html/myoldsite&lt;br /&gt;
# Select all the folders (***except the jupgrade folder***) and files in the html root and move them into the Joomla 1.5 subfolder (e.g. myoldsite)&lt;br /&gt;
# Select all the folders and files in the jupgrade folder and move them to the html root&lt;br /&gt;
# Double check the frontend and backend&lt;br /&gt;
&lt;br /&gt;
== Clean the Database ==&lt;br /&gt;
This procedure is optional. In the process of migration using jUpgrade, the MySQL database has grown. At the end of the migration, the old tables and some newly-acquired tables are no longer needed.&lt;br /&gt;
&lt;br /&gt;
=== Verify the Database Prefix ===&lt;br /&gt;
In your new site&#039;s Administrator, open the Global Configuration page. Then select the Server tab and look in the Database Settings area for the Database Tables Prefix field. Any tables with that prefix must not be removed during the following cleaning operations.&lt;br /&gt;
&lt;br /&gt;
=== Use PHPMyAdmin to Remove Excess MySQL Tables ===&lt;br /&gt;
# Backup the database by Exporting it. If you Drop essential tables, your site will break. Be prepared to Import the database backup and start over.&lt;br /&gt;
# In the database Structure display, check and then Drop the tables with the &amp;quot;jupgrade_&amp;quot; prefix.&lt;br /&gt;
# Test your site. If it still functions, continue. If not, restore the database by Importing it.&lt;br /&gt;
# Check and drop tables associated with your old Joomla 1.5 site. Those usually have the &amp;quot;jos_&amp;quot; prefix.&lt;br /&gt;
# Test your site again. If all is well, continue.&lt;br /&gt;
# Verify that the remaining tables have the prefix noted earlier on your site&#039;s Global Configuration page. Remove any additional tables without that prefix.&lt;br /&gt;
# Site still working? If so, you&#039;re done with this procedure.&lt;br /&gt;
&lt;br /&gt;
=How to Manually Migrate Joomla=&lt;br /&gt;
If Jupgrade did not work out for you like many of us, you might want to consider manual upgrade. &#039;&#039;&#039;Be warned, however, that this process is very tedious (especially see step 6 below), and the procedure is not well tested as of yet (if at all)&#039;&#039;&#039;. So just like the Jupgrade method, you will want to backup your database just in case. Before upgrading you should check to make sure every extension you want is Joomla 2.5 compatible. Also back up your directory files just in case and keep a list of the extensions you used.&lt;br /&gt;
&lt;br /&gt;
Now onto the upgrade; please note that the following procedure should only be chosen if all else fails, and requires a good working knowledge of MySQL! See the last paragraph of this section for a possibly less tedious alternative to doing steps 1, 2, 6 and 7) :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 0:&#039;&#039;&#039; First of all, as always before big changes, backup all your data; that includes all files as well as exporting all database tables.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1:&#039;&#039;&#039; If you want, you can convert the prefixes of all the tables in your database. This is especially useful if you would like to keep your 1.5 database in parallel to your new installation, at least for the transition period. It is best done using a script; the &amp;quot;MySQL Table Prefix Changer Tool&amp;quot; available at [http://www.nilpo.com/2009/01/web-development/mysql-table-prefix-changer-tool/ Nilop] is one that worked well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Executing this script will stop your old site from working because after the prefix conversion, your old installation can&#039;t access the database anymore (it will still try to access the tables by their old prefix)! If you wish to re-enable your old Joomla installation, wait until the script has finished and import the database you exported in step 0.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, first upload it via FTP to the root of your site. Now you can launch it by pointing your browser at &#039;&#039;&#039;Mysite.com&#039;&#039;&#039;/prefix.php (assuming you named the script &amp;quot;prefix.php&amp;quot;). The script will ask you for several pieces of information before it can do its job. Among them is of course the new prefix you wish to use for the new version of Joomla. Joomla 1.5 defaults to a prefix of &amp;quot;jos&amp;quot; -- whatever prefix you choose make sure it is different from that; we recommend &amp;quot;jml&amp;quot; or &amp;quot;j16&amp;quot;, for example. Once you have filled in all the information, the script is ready to perform the prefix conversion.&lt;br /&gt;
&lt;br /&gt;
[[File:Changer.JPG|center]]&lt;br /&gt;
&lt;br /&gt;
Notice in the following screen shot that the table prefix of our Joomla 1.5 installation is &amp;quot;jos&amp;quot;:&lt;br /&gt;
[[File:Tables.JPG|thumb|center|500px]]&lt;br /&gt;
&lt;br /&gt;
For Joomla 2.5 you want it converted to &amp;quot;jml&amp;quot; as seen here:&lt;br /&gt;
[[File:Prefix.JPG|thumb|center|500px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Export all the database tables you would like to use on your Joomla 1.6+ site. Usually this corresponds to content and components.&lt;br /&gt;
&lt;br /&gt;
[[File:Export.JPG|thumb|center|500px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Uninstall your old site including the database, files, and directories that are associated with Joomla. Or if you would rather just test the upgrade, skip this step and create a new directory for your joomla 2.5 installation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Install the new version of Joomla via FTP or cPanel. If you have no database associated with it, install a new database and user.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Install upgraded components and other extensions you used before onto your new Joomla 2.5 site. This should be done now to prevent your old database tables from getting overwritten later. &#039;&#039;&#039;Note:&#039;&#039;&#039; It is possible that some developers made changes to the SQL schema of individual tables when they upgraded their extension to joomla 2.5. We recommend that you check the documentation for each extension you had installed on your old Joomla site and for which you install an upgrade into your new Joomla site concerning special database upgrade considerations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: &#039;&#039;&#039; Convert the table schemas in the .sql file you exported in step 2 (containing your Joomla 1.5 tables) such that they are compatible with the version of Joomla! you are upgrading to. This is a very tedious process - you&#039;ll have to check the database schemas for changes between the version of Joomla you&#039;re upgrading from and the 2.5 version you&#039;re upgrading to, and modify the SQL file accordingly. &#039;&#039;&#039;Note:&#039;&#039;&#039; This step could use a more detailed description, if you have ever done a manual Joomla migration, please help and share your experiences and knowledge here!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Import the upgraded .sql file into your Joomla 2.5 database.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Keep the following in mind:&#039;&#039;&#039; It is possible for settings to get lost depending on how each component stored them. From personal experience it worked just fine, but you may want to review the settings of each component.&lt;br /&gt;
&lt;br /&gt;
For an easier way to migrate articles, categories/sections, contacts, images, and users, be sure to use [http://extensions.joomla.org/extensions/migration-a-conversion/data-import-a-export/12816 J2XML] for exporting and [http://extensions.joomla.org/extensions/migration-a-conversion/joomla-migration/15807 J2XML Importer] for importing the data.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
* Verify that you have PHP version 5 or later. (use &#039;&#039;phpinfo()&#039;&#039; or &#039;&#039;/usr/bin/php --version&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;jUpgrade cannot download Joomla x.y package?&#039;&#039;&#039; - When the download fails (timeouts, JavaScript issues, etc.) you can download it manually here: [http://joomlacode.org/gf/project/joomla/frs/ Browse Releases at Joomlacode.org]. Put the downloaded file into your ROOT/tmp directory. Then, in the preferences of jUpgrade, you must set &#039;Skip Download&#039; to &#039;Yes&#039;. After that, run the jUpgrade again.&lt;br /&gt;
* &#039;&#039;&#039;Are you getting errors with the progress bar in Internet Explorer (Windows XP)?&#039;&#039;&#039; - Use the Firefox browser: http://www.mozilla.com/en-US/firefox/&lt;br /&gt;
* Go through the Requirements and Before You Get Started sections above and double check everything!&lt;br /&gt;
* &#039;&#039;&#039;Report Bugs:&#039;&#039;&#039; http://matware.com.ar/foros/jupgrade.html&lt;br /&gt;
* &#039;&#039;&#039;Support:&#039;&#039;&#039; http://matware.com.ar/foros/jupgrade.html&lt;br /&gt;
==Check for Override Errors==&lt;br /&gt;
Turn on debug feature: Administrator &amp;gt; Site &amp;gt; Global Configuration &amp;gt; System &amp;gt; Debug Settings &amp;gt; Debug System &amp;gt; Yes.&lt;br /&gt;
&lt;br /&gt;
Load a page of the Website. Any errors? If you see any errors reported or if the content does not appear, remember that overrides must also be edited when moving from version 1.5 to later versions.&lt;br /&gt;
&lt;br /&gt;
Does your (custom) template have an &#039;&#039;html&#039;&#039; directory? If yes, that indicates the presence of overrides. You can quickly check whether overrides are causing problems. Temporarily rename the &#039;&#039;templates/&amp;lt;template_name&amp;gt;/html&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
Another method to locate template problems is to switch to one of the templates provided in the core distribution of Joomla such as Beez.&lt;br /&gt;
&lt;br /&gt;
=How You Can Contribute and Help=&lt;br /&gt;
Creating an extension as significant as jUpgrade requires an enormous amount of time and effort considering the major structural changes between Joomla 1.5 and the later versions. Add to this the fact that during each release of Joomla 1.6 betas, the extension would have to be modified to work with the new changes between releases, and all of a sudden it&#039;s too hard for any one person to complete in a short period of time (especially when you are not being paid).&lt;br /&gt;
&lt;br /&gt;
With this being said, it&#039;s time to step up and make a difference, whether big or small. Have you profited from Joomla in the last year? Are you excited about the future of Joomla? Would you like to contribute back and show your gratitude? Now you can in this project!&lt;br /&gt;
We, as part of the Joomla community, are calling on the entire Joomla community to help out in whatever way you can. You don&#039;t have to be a master developer, just go through this tutorial on a test site and if you come across any bugs, report it. If you know how to fix it, create a patch for it. If you are a master developer, step up to the challenge.&lt;br /&gt;
* You can volunteer and ask questions about volunteering here: http://redcomponent.com/forum/92-jupgrade&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Migration]]&lt;br /&gt;
[[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Help!_Your_site%27s_been_compromised._Now_what%3F&amp;diff=78119</id>
		<title>Talk:Help! Your site&#039;s been compromised. Now what?</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Help!_Your_site%27s_been_compromised._Now_what%3F&amp;diff=78119"/>
		<updated>2012-12-04T16:24:22Z</updated>

		<summary type="html">&lt;p&gt;Phild: suggested page deletion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&amp;lt;big&amp;gt;This document is out of date and irrelevant and should be deleted.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Relevant up to date documentation can be found at the [[Security Checklist/You have been hacked or defaced]] doc page and includes links to other relevant articles in the Security series.&lt;br /&gt;
Additional information on repairing a compromised website is also available in the sticky forum topic [http://forum.joomla.org/viewtopic.php?f=621&amp;amp;t=582854 Before you post : read and action this] and by making a post in the appropriate [http://forum.joomla.org/index.php Security Forums ] for the version of Joomla used.&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User_talk:Tom_Hutchison&amp;diff=77795</id>
		<title>User talk:Tom Hutchison</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User_talk:Tom_Hutchison&amp;diff=77795"/>
		<updated>2012-11-26T16:40:11Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Moving sensitive files outside the web root archive */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== vel list ==&lt;br /&gt;
&lt;br /&gt;
I have reverted your changes. &lt;br /&gt;
With all due respect enzsure that before you alter anything protected you should read and observe the comments on the talk pages&lt;br /&gt;
namely&lt;br /&gt;
&lt;br /&gt;
 Talk:Vulnerable Extensions List&lt;br /&gt;
Jump to: navigation, search&lt;br /&gt;
&lt;br /&gt;
All questions should be addressed to the vel @ joomla.org email address (without the spaces)&lt;br /&gt;
&lt;br /&gt;
Only known users to edit anything previously agreed items on this page.&lt;br /&gt;
&lt;br /&gt;
== cont ==&lt;br /&gt;
&lt;br /&gt;
In response to youre previous message - not sure why you added on my talk page but still &lt;br /&gt;
Beyond the cut and paste of previous editors comments.&lt;br /&gt;
Please ask Chris Davenport for the history on this document, and if you have any concerns or questions contact the vel team as detailed to do on the vel talk page.&lt;br /&gt;
:I posted on your talk page, because I have no way of knowing if you are watching my talk page for replies without certain installed Mediawiki extensions. Will PM you and Phil on the forum. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 16:04, 22 October 2012 (CDT)&lt;br /&gt;
&lt;br /&gt;
Received no PM or email to the vel list from you. Your rechanges reversed.&lt;br /&gt;
--[[User:Mandville|Mandville]] ([[User talk:Mandville|talk]]) 12:50, 27 October 2012 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Phil already reverted the mis-spelling, the categorisation of the page stands as is and will. Since it was for enhancement suggestions, I didn&#039;t realise the clock was ticking. I have been trying to research everything, because I wanted to address all concerns with solutions. At this point, I am probably just wasting my time and effort. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 14:27, 27 October 2012 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Security checklist 7 ==&lt;br /&gt;
&lt;br /&gt;
in reference to history entry for the checklist 7,  16:44, 13 October 2012‎ - (Removed protection from &amp;quot;Security Checklist/You have been hacked or defaced&amp;quot;: hmm, don&#039;t know why this was protected, error - reset to all edit)&lt;br /&gt;
&lt;br /&gt;
http://docs.joomla.org/Security_Checklist/You_have_been_hacked_or_defaced&lt;br /&gt;
and history&lt;br /&gt;
http://docs.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;amp;action=history&lt;br /&gt;
&lt;br /&gt;
The checklist was protected as incorrect and sometimes potentially damaging edits were being made mainly to the Chmod and Cron section shell scripts of the page. &lt;br /&gt;
&lt;br /&gt;
This goes back to a few pages are protected for a reason. The reason in this case for the safety of the end users site. While I would suggest this page remain protected from regular editing for reasons outlined above, Though I would feel better if the page was again protected, I will let it stay as unprotected for now unless another incident of changing or modifying the shell scripts occurs which would potentially damage or delete someones site if the modified script(s) are used before the changes can be rolled back.&lt;br /&gt;
:Protected again to keep the content of the page from being changed. I also added the Permissions page into the series. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 07:11, 29 October 2012 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
 Please revert the title of the page as was. It is universally known as checklist 7.&lt;br /&gt;
It was and is part of the security checklists 1-6 &lt;br /&gt;
Please also reneable full protection of the document to those previously listed - namely PhilD, myself and Lafrance.&lt;br /&gt;
This is another previously agreed protected, nominated document.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mandville|Mandville]] ([[User talk:Mandville|talk]]) 17:13, 3 November 2012 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Protection was enabled days ago, Security Checklist 7 can still be referenced, it now redirects to the page. You need to understand, documentation is changing, improving, becoming more organized for Joomla! users. Nothing is ever set in stone. Even Joomla! improves and new releases are now being done at a set pace. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 17:24, 3 November 2012 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Moving sensitive files outside the web root archive ==&lt;br /&gt;
&lt;br /&gt;
Tom the page looks good Thanks&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Moving_sensitive_files_outside_the_web_root&amp;diff=77794</id>
		<title>Talk:Moving sensitive files outside the web root</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Moving_sensitive_files_outside_the_web_root&amp;diff=77794"/>
		<updated>2012-11-26T16:35:38Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Looks Good */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using symlinks?&lt;br /&gt;
&lt;br /&gt;
Can the same kind of security not be reached using a symlink on *nix systems? So you place the configuration.php above the webroot and place a symlink from the original position to the new place of the configuration.php?&lt;br /&gt;
&lt;br /&gt;
== Symlinks defeat this. ==&lt;br /&gt;
&lt;br /&gt;
Normally, web servers will follow symlinks. (although this is configurable on most web servers.)&lt;br /&gt;
&lt;br /&gt;
If you move files out of the web root and make a symlink to them the files are still readable by the world.&lt;br /&gt;
&lt;br /&gt;
The advantage of moving read only files out of the web root and making a symbolic link to them is that it allows you to segment your auditing of your server, and allows things as simple as find -type f to locate all files to be audited after a suspected intrusion.&lt;br /&gt;
&lt;br /&gt;
Further more, symlinks can cause certain attacks to fail as they are based on assumptions that are not true.&lt;br /&gt;
&lt;br /&gt;
I am a big fan of symlinks, but they are no substitute for not allowing access to the files in question.&lt;br /&gt;
&lt;br /&gt;
== Discussion on the forum ==&lt;br /&gt;
&lt;br /&gt;
Moving the reference to the discussion on the forum over to this page. Thread on the forum: [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=490901 forum topic]&lt;br /&gt;
&lt;br /&gt;
== This page should probably be moved. ==&lt;br /&gt;
&lt;br /&gt;
As the page notice indicates, the security information on this page is generally accepted by the security moderators as no longer relevant and provides no additional or very minimal additional security to a website. This page currently remains for historical purposes and should either be deleted, removed from the multiple categories it currently resides in and moved into the new security area.&lt;br /&gt;
&lt;br /&gt;
[[User:Phild|phild]] ([[User talk:Phild|talk]]) 17:48, 13 November 2012 (CST)&lt;br /&gt;
&lt;br /&gt;
:Hi Phil, If I&#039;m understanding you right, strip all categories and use a new one called [[:Category:Security Archives]]. Then update the [[Security]] page to show archived security articles in a new box or DPL&#039;d from the category. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 07:43, 15 November 2012 (CST)&lt;br /&gt;
&lt;br /&gt;
== Looks Good ==&lt;br /&gt;
&lt;br /&gt;
The page archive looks good.&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Archived:Cleared_vulnerable_extensions&amp;diff=77721</id>
		<title>Archived:Cleared vulnerable extensions</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Archived:Cleared_vulnerable_extensions&amp;diff=77721"/>
		<updated>2012-11-23T23:00:20Z</updated>

		<summary type="html">&lt;p&gt;Phild: Protected &amp;quot;Cleared vulnerable extensions&amp;quot; (‎[edit=sysop] (indefinite) ‎[move=sysop] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{underconstruction}}&lt;br /&gt;
&lt;br /&gt;
Previously Vulnerable extensions that are now patched are shown in blue&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This list is compiled from found information and may not be an up to date accurate list&#039;&#039;&#039; &#039;&#039;We do &#039;&#039;&#039;NOT&#039;&#039;&#039; promise to test or validate these reports. We do &#039;&#039;&#039;NOT&#039;&#039;&#039; guarantee the quality or effectiveness of any updates reported to us or listed here.&#039;&#039;&lt;br /&gt;
To sign up for the feed please [http://feeds.joomla.org/JoomlaSecurityVulnerableExtensions follow this link]&lt;br /&gt;
&lt;br /&gt;
== November 2009 Compiled Vulnerability Reports. ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Items are not in any particular order.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  &#039;&#039;&#039;Extension&#039;&#039;&#039;&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot;| &#039;&#039;&#039;Details&#039;&#039;&#039;&lt;br /&gt;
!  &#039;&#039;&#039;Reference Link&#039;&#039;&#039;&lt;br /&gt;
!  &#039;&#039;&#039;Extension Update Link&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;com_ajaxchat&#039;&#039;&#039;&lt;br /&gt;
|  Summary: PHP remote file inclusion vulnerability in Fiji Web Design Ajax Chat (&#039;&#039;&#039;com_ajaxchat&#039;&#039;&#039;) component 1.0 for Joomla! allows remote attackers to execute arbitrary PHP code via a URL in the GLOBALS[mosConfig_absolute_path] parameter to tests/ajcuser.php.New version release December 22,2009&lt;br /&gt;
Published: october 28 2009&lt;br /&gt;
|  [[NIST:CVE-2009-3822|CVE-2009-3822]]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot;  | [http://extensions.joomla.org/extensions/communication/chat/10767 update v 1.1]&lt;br /&gt;
|-&lt;br /&gt;
|   style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;com_foobla_suggestions&#039;&#039;&#039;&lt;br /&gt;
|  Summary: SQL injection vulnerability in the foobla Suggestions (&#039;&#039;&#039;com_foobla_suggestions&#039;&#039;&#039;) component 1.5.11 for Joomla! allows remote attackers to execute arbitrary SQL commands via the idea_id parameter to index.php.&lt;br /&gt;
Published: 10/11/2009&lt;br /&gt;
CVSS Severity: 7.5 (HIGH)&lt;br /&gt;
|  [[NIST:CVE-2009-3669|CVE-2009-3669]]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot;  | [http://foobla.com/news/latest/fixed-foobla-suggestions-for-joomla-idea_id-sql-injection-vulnerability.html developer reported upgrade]&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;com_cbresumebuilder&#039;&#039;&#039;&lt;br /&gt;
|  Summary: SQL injection vulnerability in the JoomlaCache CB Resume Builder (&#039;&#039;&#039;&#039;&#039;&#039;com_cbresumebuilder&#039;&#039;&#039;) component for Joomla! allows remote attackers to execute arbitrary SQL commands via the group_id parameter in a group_members action to index.php.&lt;br /&gt;
Published: 10/09/2009&lt;br /&gt;
CVSS Severity: 7.5 (&#039;&#039;&#039;HIGH&#039;&#039;&#039;)&lt;br /&gt;
|  [[NIST:CVE-2009-3645|CVE-2009-3645]] &lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |&#039;&#039;&#039;[http://www.joomlacache.com/commercial-extensions/security-update.html Developer Update]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |&#039;&#039;&#039;com_idoblog&#039;&#039;&#039;&lt;br /&gt;
|  Summary: SQL injection vulnerability in the IDoBlog (&#039;&#039;&#039;com_idoblog&#039;&#039;&#039;) component 1.1 build 30 for Joomla! allows remote attackers to execute arbitrary SQL commands via the userid parameter in a profile action to index.php, a different vector than [[NIST:CVE-2008-2627|CVE-2008-2627]].&lt;br /&gt;
Published: 09/25/2009&lt;br /&gt;
CVSS Severity: 7.5 (&#039;&#039;&#039;HIGH&#039;&#039;&#039;)&lt;br /&gt;
|  [[NIST:CVE-2009-3417|CVE-2009-3417]]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot; |&#039;&#039;&#039;[http://idojoomla.com/download.html/ &#039;&#039;&#039;New Version v 1.1&#039;&#039;&#039; (build 32)]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |&#039;&#039;&#039;com_alphauserpoints&#039;&#039;&#039;&lt;br /&gt;
|  Summary: SQL injection vulnerability in frontend/assets/ajax/checkusername.php in the AlphaUserPoints (&#039;&#039;&#039;com_alphauserpoints&#039;&#039;&#039;) component 1.5.2 for Joomla! allows remote attackers to execute arbitrary SQL commands via the username2points parameter.&lt;br /&gt;
Published: 09/24/2009&lt;br /&gt;
CVSS Severity: 7.5 (&#039;&#039;&#039;HIGH&#039;&#039;&#039;)&lt;br /&gt;
|  [[NIST:CVE-2009-3342|CVE-2009-3342]]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |&#039;&#039;&#039;[http://www.alphaplug.com/index.php/news/142-alphauserpoints-153-released.html 1.5.3]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot;   | &#039;&#039;&#039;com_jreservation&#039;&#039;&#039;&lt;br /&gt;
|  Summary: SQL injection vulnerability in the [http://extensions.joomla.org/extensions/vertical-markets/booking-a-reservation/9798 JReservation] (&#039;&#039;&#039;com_jreservation&#039;&#039;&#039;) component 1.0 and 1.5 for Joomla! allows remote attackers to execute arbitrary SQL commands via the pid parameter in a propertycpanel action to index.php.&lt;br /&gt;
Published: 09/23/2009&lt;br /&gt;
CVSS Severity: 7.5 (&#039;&#039;&#039;HIGH&#039;&#039;&#039;)&lt;br /&gt;
|  [[NIST:CVE-2009-3316|CVE-2009-3316]]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot; |  [http://www.jforjoomla.com Updated 28th] Jan fixed 13th Nov&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;com_aclassf&#039;&#039;&#039;&lt;br /&gt;
|  Summary: SQL injection vulnerability in the Almond Classifieds (&#039;&#039;&#039;com_aclassf&#039;&#039;&#039;) component 7.5 for Joomla! allows remote attackers to execute arbitrary SQL commands via the replid parameter in a manw_repl add_form action to index.php, a different vector than [[NIST:CVE-2009-2567|CVE-2009-2567]].&lt;br /&gt;
Published: 09/10/2009&lt;br /&gt;
CVSS Severity: 7.5 (&#039;&#039;&#039;HIGH&#039;&#039;&#039;)&lt;br /&gt;
|  [[NIST:CVE-2009-3154|CVE-2009-3154]]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot;  | [http://www.almondsoft.com/alcl.html Developer latest component]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; color:black&amp;quot; | &#039;&#039;&#039;com_agora&#039;&#039;&#039;&lt;br /&gt;
|  Summary: Directory traversal vulnerability in the Agora (&#039;&#039;&#039;com_agora&#039;&#039;&#039;) component 3.0.0b for Joomla! allows remote attackers to include and execute arbitrary local files via directory traversal sequences in the action parameter to the avatars page, reachable through index.php.&lt;br /&gt;
Published: 09/03/2009&lt;br /&gt;
CVSS Severity: 6.8 (&#039;&#039;&#039;MEDIUM&#039;&#039;&#039;)&lt;br /&gt;
|  [[NIST:CVE-2009-3053|CVE-2009-3053]]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot; |&#039;&#039;&#039;[http://jvitals.com/index.php?option=com_rokdownloads&amp;amp;view=file&amp;amp;Itemid=108&amp;amp;id=282:agora-3-0 3.0.7]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; color:black&amp;quot; | &#039;&#039;&#039;com_content&#039;&#039;&#039;&lt;br /&gt;
|  Summary: SQL injection vulnerability in the content component (&#039;&#039;&#039;com_content&#039;&#039;&#039;) 1.0.0 for Joomla! allows remote attackers to execute arbitrary SQL commands via the Itemid parameter in a blogcategory action to index.php.&lt;br /&gt;
Published: 08/10/2009&lt;br /&gt;
CVSS Severity: 7.5 (&#039;&#039;&#039;HIGH&#039;&#039;&#039;)&lt;br /&gt;
|  [[NIST:CVE-2008-6923|CVE-2008-6923]]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |&#039;&#039;&#039;[http://developer.joomla.org/security/news/305-20091103-core-front-end-editor-issue-.html Resolution]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |&#039;&#039;&#039;JUMI&#039;&#039;&#039;&lt;br /&gt;
|  There is a backdoor in JUMI that installs itself when JUMI is installed on your web site. It sends your credentials to a website, and sets up a back door for remote code execution.&lt;br /&gt;
Please remove JUMI2.0.5 immediately. &lt;br /&gt;
It will be simple enough to remove the compromised code from this download, but you need to do &lt;br /&gt;
a full security audit on your site as well as you have been compromised. Added November 2009&lt;br /&gt;
|  [http://code.google.com/p/jumi/updates/list Report]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |[http://code.google.com/p/jumi/updates/list Jumi Update]&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |&#039;&#039;&#039;com_photoblog&#039;&#039;&#039;&lt;br /&gt;
|  Input Validation Error Added November 2009&lt;br /&gt;
|  [http://www.securityfocus.com/bid/36809/ 36809]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |[http://webguerilla.net/downloads/3-components-for-joomla-1 webguerilla Photoblog alpha 3b]&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&#039;&#039;&#039;BF Survey Pro&#039;&#039;&#039;&lt;br /&gt;
|  Summary: SQL injection vulnerability in the &#039;&#039;&#039;BF Survey Pro&#039;&#039;&#039; v1.2.5 or lower  (fixed in version 1.2.6). &#039;&#039;&#039;BF Survey Basic v1.0&#039;&#039;&#039; (fixed in version 1.1). &#039;&#039;&#039;BF Quiz v1.1.1&#039;&#039;&#039; (fixed in version 1.2 or greater) Added November 2009&lt;br /&gt;
|  [http://www.tamlyncreative.com.au/software/forum/index.php?topic=357.0 tamlyncreative.com.au]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |[http://www.tamlyncreative.com.au/software/forum/index.php?topic=357.0 update]&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&#039;&#039;&#039;Joo!BB 0.9.1 &#039;&#039;&#039;&lt;br /&gt;
|  Summary: Persistent XSS/MySQL Injection vulnerabilities in Joo!BB 0.9.1 Added November 2009&lt;br /&gt;
|  [http://www.joobb.org/community/board/topic/700-MultipleXSSSQLInjectionVulnerabilities.html joob.org]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot; |[http://www.joobb.org/downloads/components.html update]&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |&#039;&#039;&#039;sh404sef &#039;&#039;&#039;&lt;br /&gt;
|  Summary: sh404sef URI XSS Vulnerability  Added November 2009&lt;br /&gt;
|  [http://jeffchannell.com/Joomla/sh404sef-uri-xss-vulnerability.html jeffchannell.com]&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |[http://extensions.siliana.com/en/2009060876/sh404SEF-and-url-rewriting/Interim-release-of-sh404sef-for-Joomla-1.5.x.html update]&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;AWD Wall 1.5&#039;&#039;&#039; &lt;br /&gt;
|  Summary &#039;&#039;&#039;AWD Wall 1.5&#039;&#039;&#039; Blind SQL Injection Vulnerability.The Joomla component AWD Wall 1.5 suffers from an SQL Injection vulnerability in its handling of the &#039;cbuser&#039; parameter.Added November 2009&lt;br /&gt;
|  [http://jeffchannell.com/Joomla/awd-wall-15-blind-sql-injection-vulnerability.html Notice]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;  | &#039;&#039;&#039;[http://www.awdsolution.com/template_demo/testsite/index.php?option=com_content&amp;amp;view=article&amp;amp;id=48&amp;amp;Itemid=72 developer update]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |  &#039;&#039;&#039;!JoomlaComment 4.0 beta1&#039;&#039;&#039;&lt;br /&gt;
|  Summary: &#039;&#039;&#039;!JoomlaComment 4.0 beta1&#039;&#039;&#039;, a commenting plugin, suffers from multiple XSS vulnerabilities. Added November 2009&lt;br /&gt;
|  [http://jeffchannell.com/Joomla/joomlacomment-40-beta1-multiple-xss-vulnerabilities.html Alert]&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; color:white&amp;quot;  | &#039;&#039;&#039;  [http://compojoom.com/blog/8-news/121-joomlacomment-40-rc1-released Developer Notice 4.0 rc1]&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&#039;&#039;&#039;Kunena 1.5.x&#039;&#039;&#039; &lt;br /&gt;
|Summary: This is an important security release and users are urged to update immediately. Five security issues and an Internet Explorer 8 table bug have been resolved in this release. This release also contains many other important bug fixes. Added 18 November 2009&lt;br /&gt;
|[http://www.kunena.com/blog/19-developer-blog/51-kunena-157-security-release-now-available Advisory]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |[http://www.kunena.com/blog/19-developer-blog/52-kunena-158-service-release-now-available Latest 1.5.8 Version]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |&#039;&#039;&#039;NinjaMonials&#039;&#039;&#039;&lt;br /&gt;
| Summary: SQL injection vulnerability in the &#039;&#039;&#039;NinjaMonials (com_ninjacentral)&#039;&#039;&#039; component 1.1.0 for &#039;&#039;&#039;Joomla 1.0.x&#039;&#039;&#039; ! allows remote attackers to execute arbitrary SQL commands via the testimID parameter in a display action to index.php. Added 18 November 2009&lt;br /&gt;
|  [[NIST:CVE-2009-3964 | CVE-2009-3964]]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |&#039;&#039;&#039;  [http://ninjaforge.com/index.php?option=com_ninjacentral&amp;amp;page=show_package&amp;amp;id=14&amp;amp;Itemid=235 developer patch Ver 1.2]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;   | &#039;&#039;&#039;webee 1.1.1 &amp;amp;1.2&#039;&#039;&#039;&lt;br /&gt;
|Summary: &#039;&#039;&#039;webee 1.1.1,&#039;&#039;&#039; a Joomla commenting plugin, suffers from multiple vulnerabilities. &#039;&#039;&#039;webee has been updated to 1.2&#039;&#039;&#039; as of 12 November 2009 and&#039;&#039;&#039; still suffers&#039;&#039;&#039; from SQL Injection. XSS was not tested in 1.2. Added 19 November 2009&lt;br /&gt;
| [http://jeffchannell.com/Joomla/webee-111-multiple-vulnerabilities.html jeffchannell.com]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot; | &#039;&#039;&#039; [http://extensions.joomla.org/extensions/contacts-and-feedback/articles-comments/10155 developer update ver2.0]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |&#039;&#039;&#039;iF Portfolio Nexus&#039;&#039;&#039;&lt;br /&gt;
|Summary: The &#039;&#039;&#039;iF Portfolio Nexus component for Joomla!&#039;&#039;&#039; is vulnerable to SQL injection. A remote attacker could send specially-crafted SQL statements using the id parameter, which could allow the attacker to view, add, modify or delete information in the back-end database. Nov 18, 2009&lt;br /&gt;
|[http://secunia.com/advisories/37408/ secunia.com 37408/]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot; |[http://www.inertialfate.za.net/help/forums/topic?id=10&amp;amp;p=3#p172 iF Portfolio Nexus v1.1.1 released]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |&#039;&#039;&#039;Joomla XML&#039;&#039;&#039;&lt;br /&gt;
|Summary: Joomla! before 1.5.15 allows remote attackers to read an extension&#039;s XML file, and thereby obtain the extension&#039;s version number, via a direct request.&lt;br /&gt;
Published: 11/16/2009&lt;br /&gt;
|[[NIST:CVE-2009-3946 | CVE-2009-3946]] &lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |&#039;&#039;&#039;[http://developer.joomla.org/security/news/306-20091103-core-xml-file-read-issue.html Resolution]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |&#039;&#039;&#039;Sermon speaker&#039;&#039;&#039;&lt;br /&gt;
|Summary: [http://joomlacode.org/gf/project/sermon_speaker sermon speaker] sql vulnerability and password reset vulnerability version 3.2 and below&lt;br /&gt;
|&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |[http://joomlacode.org/gf/project/sermon_speaker/forum/?action=ForumBrowse&amp;amp;forum_id=7897&amp;amp;_forum_action=ForumMessageBrowse&amp;amp;thread_id=15219 Developer fix] 30 Nov 2009&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;  | [http://joomlacode.org/gf/project/musicgallery/ MusicGallery]&lt;br /&gt;
|Summary: [http://joomlacode.org/gf/project/musicgallery/ Component MusicGallery] SQL Injection Vulnerability 30 November {{JVer|1.5}}&lt;br /&gt;
|[[NIST:CVE-2009-4217 | CVE-2009-4217]]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; | [http://joomlacode.org/gf/project/musicgallery/ developer]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== December 2009 Compiled Reports ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  &#039;&#039;&#039;Extension&#039;&#039;&#039;&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot;| &#039;&#039;&#039;Details&#039;&#039;&#039;&lt;br /&gt;
!  &#039;&#039;&#039;Reference Link&#039;&#039;&#039;&lt;br /&gt;
!  &#039;&#039;&#039;Extension Update Link&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;Omilen Photo Gallery&#039;&#039;&#039;&lt;br /&gt;
|Summary: Directory traversal vulnerability in the [http://extensions.joomla.org/extensions/photos-&amp;amp;-images/photo-flash-gallery/6373/details Omilen Photo Gallery] (com_omphotogallery) component Beta 0.5 for Joomla! allows remote attackers to include and execute arbitrary local files via directory traversal sequences in the controller parameter to index.php.&lt;br /&gt;
Published: 12/04/2009&lt;br /&gt;
|[[NIST:CVE-2009-4202 | CVE-2009-4202]]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;Seminar&#039;&#039;&#039;&lt;br /&gt;
|Summary: SQL injection vulnerability in the [http://seminar.vollmar.ws/ Seminar] (com_seminar) component 1.28 for Joomla! allows remote attackers to execute arbitrary SQL commands via the id parameter in a View_seminar action to index.php.&lt;br /&gt;
Published: 12/04/2009&lt;br /&gt;
|[[NIST:CVE-2009-4200 | CVE-2009-4200]]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;Mambo Resident&#039;&#039;&#039;&lt;br /&gt;
|Summary: Multiple SQL injection vulnerabilities in the Mambo Resident (aka Mos Res or com_mosres) component 1.0f for Mambo and Joomla!, when magic_quotes_gpc is disabled, allow remote attackers to execute arbitrary SQL commands via the (1) property_uid parameter in a viewproperty action to index.php and the (2) regID parameter in a showregion action to index.php. Mambo Resident component for v4.5.2 &#039;&#039;&#039;may only be for 1.0.xx versions of J!&#039;&#039;&#039;&lt;br /&gt;
Published: 12/04/2009&lt;br /&gt;
|[[NIST:CVE-2009-4199 | CVE-2009-4199]]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot; |[http://www.jomres.net/ Replacement Extension 08 dec 09]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;ProofReader&#039;&#039;&#039; &lt;br /&gt;
|Summary: Multiple cross-site scripting (XSS) vulnerabilities in index.php in the ProofReader (com_proofreader) component 1.0 RC9 and earlier for Joomla! allow remote attackers to inject arbitrary web script or HTML via the URI, which is not properly handled in (1) 404 or (2) error pages. Published: 12/02/2009 CVSS Severity: 4.3 (MEDIUM)&lt;br /&gt;
| [[NIST:CVE-2009-4157 | CVE-2009-4157]]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;Laoneo Google Calendar GCalendar&#039;&#039;&#039;&lt;br /&gt;
|Summary: SQL injection vulnerability in the [http://g4j.laoneo.net/content/extensions/download/cat_view/20-joomla-15x/21-gcalendar.html Google Calendar GCalendar] (com_gcalendar) component 1.1.2, 2.1.4, and possibly earlier versions for Joomla! allows remote attackers to execute arbitrary SQL commands via the gcid parameter. NOTE: some of these details are obtained from third party information. Published: 11/29/2009 CVSS Severity: 7.5 (HIGH) Note: There is already a listing for GCalendar 1.1.2&lt;br /&gt;
|[[NIST:CVE-2009-4099 | CVE-2009-4099]]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;   | [http://g4j.laoneo.net/content/extensions/download/doc_details/28-gcalendar-suite-215.html Latest version GCalendar Suite 2.1.5]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;D4J eZine&#039;&#039;&#039;&lt;br /&gt;
|Summary: PHP remote file inclusion vulnerability in class/php/d4m_ajax_pagenav.php in the D4J eZine (com_ezine) component 2.1 for Joomla! allows remote attackers to execute arbitrary PHP code via a URL in the GLOBALS mosConfig_absolute_path parameter. Published: 11/29/2009 CVSS Severity: 7.5 (HIGH)&lt;br /&gt;
|[[NIST:CVE-2009-4094 | CVE-2009-4094]]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;Quick News&#039;&#039;&#039;&lt;br /&gt;
| Summary: The Joomla [http://joomlacode.org/gf/project/quicknews/ Quick News component] suffers from a remote SQL injection vulnerability. added 1st Dec 09&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;Joaktree component&#039;&#039;&#039;&lt;br /&gt;
|Summary: [http://extensions.joomla.org/extensions/miscellaneous/genealogy/9842 Joaktree] Vulnerability : SQL injection/ added 1st Dec 09&lt;br /&gt;
|[http://securityreason.com/exploitalert/7508 7508]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot; | &#039;&#039;&#039;  [http://naastniels.nl/index.php/en/joaktree/downloads version 1.1 update]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;mojoblog&#039;&#039;&#039;&lt;br /&gt;
|Summary [http://www.joomlify.com/files/mojoblog/ MojoBlog] Multiple Remote File Include Vulnerability added 1st Dec 09 {{JVer|1.5}}&lt;br /&gt;
|[http://securityreason.com/exploitalert/7509 7509]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;YJ Whois&#039;&#039;&#039; &lt;br /&gt;
|Summary: [http://extensions.joomla.org/extensions/external-contents/domain-search/5774 YJ Whois] &#039;&#039;&#039;Low security risk&#039;&#039;&#039;,and fixesMalicious users may inject JavaScript, VBScript, ActiveX, HTML or Flash into a vulnerable application to fool a user in order to gather data from them. An attacker can steal the session cookie and take over the account. Files affected is , modules/mod_yj_whois.php added 3 December 09&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot; |[http://www.youjoomla.com/xss-security-patch-for-yj-whois.html Developer Notice and fix 03 dec 09]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; | &#039;&#039;&#039;yt_color YOOOtheme&#039;&#039;&#039;&lt;br /&gt;
|Summary: [http://www.yootheme.com/ YT_color yootheme] Malicious users may inject JavaScript, VBScript, ActiveX, HTML or Flash into a vulnerable application to fool a user in order to gather data from them. An attacker can steal the session cookie and take over the account. added 5 dec 09&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot; | &#039;&#039;&#039;  [http://www.yootheme.com/member-area/downloads/item/templates-15/xss-and-php-53-patches All members without an active membership can download the template patches here].&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |  &#039;&#039;&#039;TP Whois&#039;&#039;&#039; &lt;br /&gt;
|summary: [http://www.templateplazza.com/view-details/tpwhois/183-component-tp-whois-for-joomla-1.5.x.html TP Whois ] Malicious users may inject JavaScript, VBScript, ActiveX, HTML or Flash into a vulnerable application to fool a user in order to gather data from them. An attacker can steal the session cookie and take over the account. Added 3 december {{JVer|1.5}}&lt;br /&gt;
|[http://www.exploit-db.com Refrence]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;com_job&#039;&#039;&#039;&lt;br /&gt;
|Summary: Component com_job ( showMoreUse) SQL injection vulnerability  Added 9th Dec&lt;br /&gt;
|[http://xforce.iss.net/xforce/xfdb/54626 Reference]&lt;br /&gt;
| style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |  &#039;&#039;&#039;JQuarks&#039;&#039;&#039; &lt;br /&gt;
|Summary: [http://extensions.joomla.org/extensions/contacts-and-feedback/quiz-a-surveys/10590 JQuarks] SQL injection vulnerability {{JVer|1.5}} added 8th dec 09&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot; | [http://www.iptechinside.com/labs/projects/list_files/jquarks Developer Update ]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |  &#039;&#039;&#039;Mamboleto Component 2.0 RC3&#039;&#039;&#039;&lt;br /&gt;
|Summary: [http://www.fernandosoares.com.br/index.php?option=com_docman&amp;amp;task=cat_view&amp;amp;gid=28&amp;amp;Itemid=28 Mamboleto Component 2.0 RC3]SQL injection vulnerability {{JVer|1.5}} added 12 December&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |  &#039;&#039;&#039; JS JOBS&#039;&#039;&#039;&lt;br /&gt;
|Summary [http://www.joomshark.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=4&amp;amp;Itemid=8 JS JOBS] Joomla Component com_jsjobs 1.0.5.6 SQL Injection Vulnerabilities {{JVer|1.5}} added 12 December&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;  | &#039;&#039;&#039;  [http://www.joomsky.com/index.php?option=com_rokdownloads&amp;amp;view=folder&amp;amp;Itemid=3&amp;amp;id=2:components Developer update 1.0.5.7]&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |  &#039;&#039;&#039;corePHP JPhoto&#039;&#039;&#039;&lt;br /&gt;
|Summary: [http://extensions.joomla.org/extensions/photos-a-images/photo-gallery/10365 &#039;corePHP&#039; JPhoto]SQL injection vulnerability {{JVer|1.5}} added 12 December&lt;br /&gt;
|[http://secunia.com/advisories/37676/ Reference]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;  | &#039;&#039;&#039;  [http://www.corephp.com/blog/uber-fast-jphoto-security-release/ Developer Upgrade]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;    | &#039;&#039;&#039;com_virtuemart&#039;&#039;&#039;&lt;br /&gt;
|Summary: &amp;quot;com_virtuemart&amp;quot; http://virtuemart.net/  &#039;&#039;&#039;Version : 1.0&#039;&#039;&#039; Vulnerability : SQL injection added Date : 07- dec -09 {{JVer|1.5}}&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;  |[http://virtuemart.net/ latest version]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | &#039;&#039;&#039; Kide Shoutbox&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|Summary: The Kide Shoutbox (com_kide) component 0.4.6 for Joomla! does not properly perform authentication, which allows remote attackers to post messages with an arbitrary account name via an insertar action to index.php. NOTE: the provenance of this information is unknown; the details are obtained solely from third party information. Added: December 08&lt;br /&gt;
|[[NIST:CVE-2009-4232 | CVE-2009-4232]]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | &#039;&#039;&#039; JoomPortfolio Component&#039;&#039;&#039;&lt;br /&gt;
|Summary: [http://www.joomplace.com/joomportfolio/joomportfolio.html JoomPortfolio] Input passed via the &amp;quot;secid&amp;quot; parameter to index.php (when &amp;quot;option&amp;quot; is set to &amp;quot;com_joomportfolio&amp;quot; and &amp;quot;task&amp;quot; is set to &amp;quot;showcat&amp;quot;) is not properly sanitised before being used in a SQL query. This can be exploited to manipulate SQL queries by injecting arbitrary SQL code.The vulnerability is reported in version 1.0.0. Other versions may also be affected. Added: December 18 {{JVer|1.5}}&lt;br /&gt;
|[http://secunia.com/advisories/37838/ Reporting Site]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;City Portal (templates?)&#039;&#039;&#039;&lt;br /&gt;
|Summary:   City Portal Blind SQL Injection Vulnerability added: 2009-12-18&lt;br /&gt;
|[http://www.exploit-db.com Reference] Possibly this [http://www.youjoomla.com/jclick-city-portal-joomla-template.html tempate]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | &#039;&#039;&#039;Event Manager&#039;&#039;&#039;&lt;br /&gt;
|Summary:  [http://www.jforjoomla.com/Joomla-Components/event-manager-15-component.html Event Manager] Blind SQL Injection Vulnerability EDB-ID: 10549&lt;br /&gt;
added: 2009-12-18&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | com_zcalendar&lt;br /&gt;
|Summary:  com_zcalendar Blind SQL-injection Vulnerability&lt;br /&gt;
EDB-ID: 10548 added: 2009-12-18&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | &#039;&#039;&#039;com_acmisc&#039;&#039;&#039;&lt;br /&gt;
|Summary:  com_acmisc SQL injection added: 2009-12-18&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;com_digistore&#039;&#039;&#039;&lt;br /&gt;
|Summary:  com_digistore SQL injection EDB-ID: 10546 added: 2009-12-18  {{JVer|1.5}}&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot; | &#039;&#039;&#039;  [http://www.ijoomla.com/ijoomla-digistore/ijoomla-digistore/ijoomla-digistore-change-log/ Update change log] &#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | &#039;&#039;&#039;com_jbook&#039;&#039;&#039;&lt;br /&gt;
|Summary:   com_jbook Blind SQL-injection EDB-ID: 10545 added: 2009-12-18 {{JVer|1.0}}&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |  &#039;&#039;&#039;com_personel&#039;&#039;&#039;&lt;br /&gt;
|Summary: com_personel component for Joomla! is vulnerable to SQL injection.&lt;br /&gt;
|[http://xforce.iss.net/xforce/xfdb/54903 iss.net reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |  &#039;&#039;&#039;JEEMA Article Collection&#039;&#039;&#039;&lt;br /&gt;
|Summary: [http://www.forum.jeema.net/component/content/article/4-jeema-article-collection-component/13-about-jeema-article-collection.html JEEMA Article Collection] Input passed via the &amp;quot;catid&amp;quot; parameter to index.php (when &amp;quot;option&amp;quot; is set to &amp;quot;com_jeemaarticlecollection&amp;quot; and &amp;quot;view&amp;quot; is set to &amp;quot;longlook&amp;quot;) is not properly sanitised before being used in a SQL query. This can be exploited to manipulate SQL queries by injecting arbitrary SQL code. version 1.0.0.1 {{JVer|1.5}} added 22 dec 09&lt;br /&gt;
| [http://secunia.com/advisories/37865/ secunia]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;    | [http://www.jeema.net/downloads/free-joomla-extensions/joomla-components/12-jeema-joomla-article-collection.htm fixed the same in the version v102.]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |  &#039;&#039;&#039;HotBrackets Tournament Brackets &#039;&#039;&#039;&lt;br /&gt;
|Summary: The [http://extensions.joomla.org/extensions/sports-a-games/sports/10746 HotBrackets Tournament Brackets] component for Joomla! is prone to an SQL-injection vulnerability because it fails to sufficiently sanitize user-supplied data before using it in an SQL query. {{JVer|1.5}} added 22 dec &lt;br /&gt;
|[http://www.securityfocus.com/bid/37439/ Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | &#039;&#039;&#039;Car Manager&#039;&#039;&#039;&lt;br /&gt;
|Summary: http://webformatique.com/ com_carman Cross Site Scripting Vulnerability added 24 december 09{{JVer|1.5}}&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:red; color:white&amp;quot; |&#039;&#039;&#039;Schools component&#039;&#039;&#039;&lt;br /&gt;
|Summary: The &#039;com_schools&#039; component for Joomla! is prone to an SQL-injection vulnerability because it fails to sufficiently sanitize user-supplied data before using it in an SQL query.&lt;br /&gt;
|[http://www.securityfocus.com/bid/37469 Reference] added 24 dec 09&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | &#039;&#039;&#039;webcamxp&#039;&#039;&#039;&lt;br /&gt;
|[http://extensions.joomla.org/extensions/communication/video-conference/4490 com_webcamxp] Cross Site Scripting Vulnerabilities  Last version 2008 {{JVer|1.5}} Dec 27&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;beeheard&#039;&#039;&#039;&lt;br /&gt;
|[http://extensions.joomla.org/extensions/contacts-and-feedback/testimonials-a-suggestions/10283 beeheard]  Blind SQL injection Vulnerability {{JVer|1.5}} Dec 27&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot; | &#039;&#039;&#039;  [http://beeheard.cmstactics.com/change-log Version 1.4.2] 04 Jan&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | &#039;&#039;&#039;jm-recommend&#039;&#039;&#039;&lt;br /&gt;
|jm-recommendCross Site Scripting Vulnerabilities. unable to locate on jed. {{JVer|1.5}} Dec 27&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | facileforms&lt;br /&gt;
| com_facileforms Cross Site Scripting Vulnerabilities. unable to locate on jed. Product considered retired.  {{JVer|1.5}} Dec 27&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&#039;&#039;&#039;adagency&#039;&#039;&#039;&lt;br /&gt;
| [http://www.ijoomla.com/ijoomla-ad-agency/ijoomla-ad-agency/index/ adagency ]Vulnerabilities {{JVer|1.5}} Dec 27&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |  &#039;&#039;&#039;com_intuit&#039;&#039;&#039;&lt;br /&gt;
|[http://www.san-diego-web-designer.com/new-file-download/item/root/aboutimage-igateway-for-joomla.html com_intuit]Local File Inclusion Vulnerability {{JVer|1.5}} Dec. 27&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot; | &#039;&#039;&#039;  [http://www.securityfocus.com/bid/37494/discuss Retired]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | &#039;&#039;&#039;MemoryBook&#039;&#039;&#039;&lt;br /&gt;
|[http://extensions.joomla.org/extensions/calendars-a-events/birthdays-a-historic-events/10868 MemoryBook 1.2]  Multiple Vulnerabilities. requires: magic quotes OFF, user account {{JVer|1.5}} Dec. 27&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&#039;&#039;&#039;qpersonel&#039;&#039;&#039;&lt;br /&gt;
|[http://extensions.joomla.org/extensions/directory-a-documentation/thematic-directory/7049 qpersonel ] Cross Site Scripting Vulnerabilities {{JVer|1.0}}[[Image:http://extensions.joomla.org/images/jed/compat_15_legacy.png]] Dec. 27&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&#039;&#039;&#039;opryknings point&#039;&#039;&#039; &lt;br /&gt;
|com_oprykningspoint_mc Cross Site Scripting Vulnerabilities {{JVer|1.5}} Dec. 27&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&#039;&#039;&#039;trabalhe conosco&#039;&#039;&#039;&lt;br /&gt;
|com_trabalhe_conosco Cross Site Scripting Vulnerabilities {{JVer|1.5}} Dec. 27&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&#039;&#039;&#039;DhForum&#039;&#039;&#039;&lt;br /&gt;
|com_dhforum SQL Injection Vulnerability. considered retired/EOL Dec. 27 {{JVer|1.0}}1.5 legacy&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&#039;&#039;&#039;com_morfeoshow&#039;&#039;&#039;&lt;br /&gt;
|[http://extensions.joomla.org/extensions/photos-a-images/photo-gallery-add-ons/9810 morfeoshow] this was a false report &lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  | &#039;&#039;&#039;  false report&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot;  |&#039;&#039;&#039;Run Digital Download rd-download&#039;&#039;&#039; &lt;br /&gt;
|[http://extensions.joomla.org/extensions/directory-a-documentation/downloads/7838 RD Download] Local File Disclosure Vulnerability  {{JVer|1.5}} Dec. 30 Version affected not disclosed.&lt;br /&gt;
|[http://www.exploit-db.com Reference]&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:white&amp;quot;  | [http://extensions.joomla.org/extensions/directory-a-documentation/downloads/7838 Version 0.9 relased] &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;math&amp;gt;Insert formula here&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Category:Security]][[Category:References]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Moving_sensitive_files_outside_the_web_root&amp;diff=77542</id>
		<title>Talk:Moving sensitive files outside the web root</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Moving_sensitive_files_outside_the_web_root&amp;diff=77542"/>
		<updated>2012-11-13T23:48:38Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* This page should probably be moved. */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using symlinks?&lt;br /&gt;
&lt;br /&gt;
Can the same kind of security not be reached using a symlink on *nix systems? So you place the configuration.php above the webroot and place a symlink from the original position to the new place of the configuration.php?&lt;br /&gt;
&lt;br /&gt;
== Symlinks defeat this. ==&lt;br /&gt;
&lt;br /&gt;
Normally, web servers will follow symlinks. (although this is configurable on most web servers.)&lt;br /&gt;
&lt;br /&gt;
If you move files out of the web root and make a symlink to them the files are still readable by the world.&lt;br /&gt;
&lt;br /&gt;
The advantage of moving read only files out of the web root and making a symbolic link to them is that it allows you to segment your auditing of your server, and allows things as simple as find -type f to locate all files to be audited after a suspected intrusion.&lt;br /&gt;
&lt;br /&gt;
Further more, symlinks can cause certain attacks to fail as they are based on assumptions that are not true.&lt;br /&gt;
&lt;br /&gt;
I am a big fan of symlinks, but they are no substitute for not allowing access to the files in question.&lt;br /&gt;
&lt;br /&gt;
== Discussion on the forum ==&lt;br /&gt;
&lt;br /&gt;
Moving the reference to the discussion on the forum over to this page. Thread on the forum: [http://forum.joomla.org/viewtopic.php?f=432&amp;amp;t=490901 forum topic]&lt;br /&gt;
&lt;br /&gt;
== This page should probably be moved. ==&lt;br /&gt;
&lt;br /&gt;
As the page notice indicates, the security information on this page is generally accepted by the security moderators as no longer relevant and provides no additional or very minimal additional security to a website. This page currently remains for historical purposes and should either be deleted, removed from the multiple categories it currently resides in and moved into the new security area.&lt;br /&gt;
&lt;br /&gt;
[[User:Phild|phild]] ([[User talk:Phild|talk]]) 17:48, 13 November 2012 (CST)&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Archived:Vulnerable_Extensions_List&amp;diff=77358</id>
		<title>Archived:Vulnerable Extensions List</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Archived:Vulnerable_Extensions_List&amp;diff=77358"/>
		<updated>2012-11-04T11:27:06Z</updated>

		<summary type="html">&lt;p&gt;Phild: added PhilD back to VEL editor listing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ***all wiki editors*** - do NOT touch without notice   --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;List prior to Jnuary 2011 ([[Archived vel|now archived]])&#039;&#039;&#039; Please check here also. &lt;br /&gt;
&amp;lt;!-- if you have altered the above line then revert your changes and contact me   --&amp;gt;&lt;br /&gt;
Please also check the [[Investigation of exploits|Extension Investigation List]].&lt;br /&gt;
 &lt;br /&gt;
== Check and Report.  ==&lt;br /&gt;
&#039;&#039;&#039;Please check with the extension publisher in case of any questions over the security of their product.&#039;&#039;&#039;&lt;br /&gt;
Report Vulnerable extensions in the [[jforum:432|security forum]]  clearly marked with the first word in the title being &#039;&#039;Vulnerable&#039;&#039; where the security moderators or JSST team will respond. &lt;br /&gt;
This list is change protected,&#039;&#039;&#039; for additions or updates email&#039;&#039;&#039; &#039;&#039;vel @ joomla.org&#039;&#039; &lt;br /&gt;
*If you are seeing this page on any site other than [http://docs.joomla.org/Vulnerable_Extensions_List the Offical Joomla Documentation] you may be seeing an out of date version or experiencing [http://en.wikipedia.org/wiki/Plagiarism plagiary] and the links may not work properly&lt;br /&gt;
&lt;br /&gt;
== How to use this list ==&lt;br /&gt;
&#039;&#039;&#039;Items will be removed after a suitable period and not on resolution.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All known vulnerable extensions are the listed in the first column &amp;quot;Extension&amp;quot;. Any in a &amp;lt;span style=&amp;quot;background:red; color:white&amp;quot;&amp;gt;red box &amp;lt;/span&amp;gt;are where we have not been given a fix. Any in a &amp;lt;span style=&amp;quot;background:#cef2e0; color:black&amp;quot;&amp;gt;turquoise box&amp;lt;/span&amp;gt; contain a link to the notice about an &amp;lt;span style=&amp;quot;background:#cef2e0; color:black&amp;quot;&amp;gt;update with link.&amp;lt;/span&amp;gt; Any that are in an uncolored box are a &amp;quot;Contact the Developer About This Extension&amp;quot;.&lt;br /&gt;
Alert Advisory details are in the center column.&lt;br /&gt;
If the &amp;quot;Extension Update Link &amp;amp; Date Column has &amp;lt;span style=&amp;quot;background:red; color:white&amp;quot;&amp;gt;&#039;&#039;&#039;Not Known&#039;&#039;&#039; &amp;lt;/span&amp;gt; then it is where no update is known.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This list is compiled from found information and may not be an up to date accurate list&#039;&#039;&#039; &#039;&#039;We do &#039;&#039;&#039;NOT&#039;&#039;&#039; promise to test or validate these reports. We do &#039;&#039;&#039;NOT&#039;&#039;&#039; guarantee the quality or effectiveness of any updates reported to us or listed here.&#039;&#039;&lt;br /&gt;
To sign up for the feed please [http://feeds.joomla.org/JoomlaSecurityVulnerableExtensions follow this link]&lt;br /&gt;
* We do not list BETA products, or extensions for J1.0.x&lt;br /&gt;
&lt;br /&gt;
== Developers - How to get yourself removed from the VEL ==&lt;br /&gt;
&lt;br /&gt;
Resolved items will be removed after a suitable period and not on resolution&lt;br /&gt;
&lt;br /&gt;
Please solve the issues and:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If JED listed&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
To have your extension republished, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
1- Solve the issues.&lt;br /&gt;
&lt;br /&gt;
2- Attach the new zip file at your actual JED listing.&lt;br /&gt;
&lt;br /&gt;
3- Change the extension version at JED listing.&lt;br /&gt;
&lt;br /&gt;
4- Make sure to include a notice in the JED description to the fact that the new release is a &amp;quot;Security Release&amp;quot; and those who use the extension should upgrade immediately.&lt;br /&gt;
&lt;br /&gt;
5- Create a [http://bit.ly/velunlist JED listing owner ticket] to the JED with a notice and ask that your listing be republished. Include the full details of yournew version number and security notice page&lt;br /&gt;
&lt;br /&gt;
6- Email the VEL team with a notice of resolution, the latest version number &#039;&#039;&#039;and&#039;&#039;&#039; a link to the security release statement on your website&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VEL email can be found above and the JED support link is in your notice of &amp;quot;unpublication&amp;quot; [http://extensions.joomla.org/component/maqmahelpdesk/ and here] &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If not JED listed.&#039;&#039;&#039; &lt;br /&gt;
Inform us by &#039;&#039;&#039;email&#039;&#039;&#039; with a notice of resolution, the latest version number &#039;&#039;&#039;and&#039;&#039;&#039; a link to the security release statement on your website.&lt;br /&gt;
&lt;br /&gt;
== January 2012 and onwards Reported Vulnerable Extensions ==&lt;br /&gt;
&amp;lt;startFeed /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  &#039;&#039;&#039;Extension&#039;&#039;&#039;&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot;| &#039;&#039;&#039;Details&#039;&#039;&#039;&lt;br /&gt;
!  &#039;&#039;&#039;Date Added&#039;&#039;&#039;&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; |&#039;&#039;&#039;Extension Update Link &amp;amp; Date&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== commedia    ==&lt;br /&gt;
|RFI&lt;br /&gt;
|231012&lt;br /&gt;
|developer update [http://www.ecolora.com/index.php/15-commedia-a-mp3browser-new/77-commedia-3-2-is-not-vulnerable#english statement to version 3.2] 271012&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Kunena ==&lt;br /&gt;
|SQLi + ID&lt;br /&gt;
|221012&lt;br /&gt;
|Developer states [http://www.kunena.org/forum/announcement/id-52 current version not exploitable] by reported methods&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Icagenda   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|&lt;br /&gt;
|Developer  [http://www.joomlic.com/en/extensions/icagenda   statement for 1.2.9] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  JTag [joomlatag]   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
==   Freestyle Support  ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|&lt;br /&gt;
|developer update [http://freestyle-joomla.com/help/announcements?announceid=60 statement 251012]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  ACEFTP   ==&lt;br /&gt;
|DT &lt;br /&gt;
|011012&lt;br /&gt;
|AceFTP 2.0.0 released. Developer [http://www.joomace.net/blog/aceftp/aceftp-200-has-been-released statement] 101012&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  MijoFTP   ==&lt;br /&gt;
|DT &lt;br /&gt;
|011012&lt;br /&gt;
|*&#039;&#039;reported fixed prior to notification&#039;&#039;*&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  spider calendar lite   ==&lt;br /&gt;
|RFI &lt;br /&gt;
|180912&lt;br /&gt;
|developer release version 1.5 [http://web-dorado.com/products/joomla-calendar-module.html  version]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==   RokModule   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|Rereported 180912&lt;br /&gt;
|Developer states: no known exploits for our current versions [http://www.rockettheme.com/extensions-downloads/free/1012-rokmodule of RokModule Joomla 2.5 - v1.3 Joomla 1.5 - v1.4]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  ICagenda   ==&lt;br /&gt;
| SQLi&lt;br /&gt;
|developer [http://www.joomlic.com/en/extensions/icagenda security release] - v1.2.1&lt;br /&gt;
|080912&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  En Masse cart   ==&lt;br /&gt;
|RFI&lt;br /&gt;
|060812&lt;br /&gt;
|Developer upgrade statement [http://www.matamko.com/news-update/14-en-masse-releases/142-announcement-for-security-release-enmasse-313.html   to 3.1.3]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==   JCE (joomla content editor)  ==&lt;br /&gt;
|Upload Restriction &amp;lt;2.2.4 &lt;br /&gt;
|050812&lt;br /&gt;
|Developer states current version not exploitable &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==   RSGallery2  ==&lt;br /&gt;
|SQLi XSS&lt;br /&gt;
| 31 07 12&lt;br /&gt;
|Devleoper statement versions 3.2.0 for Joomla 2.5 and version 2.3.0 for Joomla 1.5  [http://www.rsgallery2.nl/topicseen./announcements/rsgallery2_3.2.0_and_2.3.0_released_16845.msg44046.html released] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  osproperty   ==&lt;br /&gt;
|Unrestricted uploads&lt;br /&gt;
|160712&lt;br /&gt;
|Developer release [http://joomservices.com/components/ossolution-property.html version  2.0.3] 180712&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== KSAdvertiser     ==&lt;br /&gt;
| RFI &lt;br /&gt;
|160712&lt;br /&gt;
|The security update version 1.5.72 advise can be found here:&lt;br /&gt;
[http://www.kiss-software.de/index.php?option=com_content&amp;amp;view=article&amp;amp;id=251:kiss-advertiser-sicherheitsupdate&amp;amp;catid=69&amp;amp;Itemid=361&amp;amp;lang=de German] [http://www.kiss-software.de/index.php?option=com_content&amp;amp;view=article&amp;amp;id=252:kiss-advertiser-security-update&amp;amp;catid=21&amp;amp;Itemid=362&amp;amp;lang=en English]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Shipping by State for Virtuemart   ==&lt;br /&gt;
|elevated permissions (http://web-expert.gr/en)&lt;br /&gt;
|160612&lt;br /&gt;
| [http://web-expert.gr/en/commersial/virtuemart-shipping-by-state-component Upgrade to v2.5 download] commercial product 300612&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  ownbiblio 1.5.3   ==&lt;br /&gt;
|SQLi + &lt;br /&gt;
|250512&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  Ninjaxplorer &amp;lt;=1.0.6   ==&lt;br /&gt;
|developer notification&lt;br /&gt;
|250412&lt;br /&gt;
|developer statement [http://ninjaforge.com/blog/318-security-vulnerability-discovered-in-ninjaxplorer-upgrade-immediately upgrade to 1.0.7]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Phoca Fav Icon    ==&lt;br /&gt;
|Permissions Rewrite&lt;br /&gt;
|150412&lt;br /&gt;
| [http://www.phoca.cz/news/30-phoca-news/633-phoca-favicon-203-released developer update 2.0.3 statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  estateagent improved   ==&lt;br /&gt;
|sqli (eaimproved.eu)&lt;br /&gt;
|110412&lt;br /&gt;
|developer states previous version, not current version&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  bearleague   ==&lt;br /&gt;
|110412&lt;br /&gt;
|sql &lt;br /&gt;
|(no longer maintained)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  JLive! Chat v4.3.1   ==&lt;br /&gt;
|DT &lt;br /&gt;
|060412&lt;br /&gt;
|Developer reports [http://www.cmsfruit.com/security-measures.html  as unproven]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   virtuemart 2.0.2  ==&lt;br /&gt;
|SQLi &lt;br /&gt;
|050412&lt;br /&gt;
|developers [http://virtuemart.net/news/list-all-news/417-happy-easter-new-virtuemart-204-released-security-update-sqli release statement]Current version 2.0.6 released&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  JE testimonial    ==&lt;br /&gt;
|SQLi &lt;br /&gt;
|230312&lt;br /&gt;
|Developer states &#039;&#039;&#039;malicious report.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  JaggyBlog   ==&lt;br /&gt;
|excessive file permission &lt;br /&gt;
|090212&lt;br /&gt;
|version 1.3.1 [http://www.jaggysnake.co.uk/products/jaggyblog released] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Quickl Form   ==&lt;br /&gt;
|xss&lt;br /&gt;
|260112&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  com_advert   ==&lt;br /&gt;
|sqli - unknown developer&lt;br /&gt;
|240112&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Joomla Discussions Component    ==&lt;br /&gt;
|sqli &lt;br /&gt;
|180112&lt;br /&gt;
|Discussions 1.4.1 released  [http://www.codingfish.com/news/38-joomla/101-discussions-141-released developer statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== HD Video Share (contushdvideoshare)  ==&lt;br /&gt;
|sqli &lt;br /&gt;
|180112&lt;br /&gt;
|updated [http://www.hdvideoshare.net version 2.2]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Simple File Upload 1.3  ==&lt;br /&gt;
|RFI&lt;br /&gt;
|010112&lt;br /&gt;
| Developer update [http://wasen.net/index.php?option=com_content&amp;amp;view=article&amp;amp;id=64:simple-file-upload-download&amp;amp;catid=40:project-simple-file-upload&amp;amp;Itemid=59   statement] to 1.3.5&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&amp;lt;endFeed /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== January 2011 - Jan 2012  Reported Vulnerable Extensions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please check with the extension publisher in case of any questions over the security of their product.&#039;&#039;&#039;&lt;br /&gt;
Report Vulnerable extensions either in the [[jforum:432]] security topic clearly marked with the first word in the title being &#039;&#039;Vulnerable Report&#039;&#039; where the security moderators or JSST team will respond or via email to the VEL team. For a guide to the [http://docs.joomla.org/Vulnerable_Extensions_List#Codes_used codes]&lt;br /&gt;
*If you are seeing this page on any site other than [http://docs.joomla.org/Vulnerable_Extensions_List the Offical Joomla Documentation] you may be seeing an out of date version or experiencing [http://en.wikipedia.org/wiki/Plagiarism plagiary] and the links may not work properly&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  &#039;&#039;&#039;Extension&#039;&#039;&#039;&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot;| &#039;&#039;&#039;Details&#039;&#039;&#039;&lt;br /&gt;
!  &#039;&#039;&#039;Date Added&#039;&#039;&#039;&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; |&#039;&#039;&#039;Extension Update Link &amp;amp; Date&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
== Simple File Upload 1.3  ==&lt;br /&gt;
|RFI&lt;br /&gt;
|010112&lt;br /&gt;
| Developer update [http://wasen.net/index.php?option=com_content&amp;amp;view=article&amp;amp;id=64:simple-file-upload-download&amp;amp;catid=40:project-simple-file-upload&amp;amp;Itemid=59   statement] to 1.3.5&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Dshop    ==&lt;br /&gt;
|sqli (possibly dhrusya.com)&lt;br /&gt;
|201111&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  QContacts 1.0.6   ==&lt;br /&gt;
|sqli &lt;br /&gt;
|131211&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Jobprofile  1.0 ==&lt;br /&gt;
|  SQL Injection Vulnerability&lt;br /&gt;
|051211&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  JX Finder 2.0.1   ==&lt;br /&gt;
| XSS Vulnerabilities&lt;br /&gt;
|011211&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  wdbanners   ==&lt;br /&gt;
|Unknown Exploit&lt;br /&gt;
|301111&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==  JB Captify Content  J1.5 and J1.7     ==&lt;br /&gt;
|Security checks missing -Versions prior to JB_mod_captifyContent_J1.5_J1.7_1.0.1.zip&lt;br /&gt;
|141111&lt;br /&gt;
|All extensions available on the [http://joomlabamboo.com site have been updated] and this potential security issue has been resolved.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  JB Microblog   ==&lt;br /&gt;
|Security checks missing - J1.7 only. Versions prior to 1.10.3 &lt;br /&gt;
|14111&lt;br /&gt;
|All extensions available on the [joomlabamboo.com site have been updated] and this potential security issue has been resolved.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
== JB Slideshow &amp;lt;3.5.1,   ==&lt;br /&gt;
|Security checks missing&lt;br /&gt;
|141111&lt;br /&gt;
|All extensions available on the [joomlabamboo.com site have been updated] and this potential security issue has been resolved.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
== JB Bamboobox   ==&lt;br /&gt;
|Security checks missing - J1.5 all versions prior to 1.2.2 &lt;br /&gt;
|141111&lt;br /&gt;
|All extensions available on the [joomlabamboo.com site have been updated] and this potential security issue has been resolved.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==  RokModule    ==&lt;br /&gt;
|SQLI - exploits     RokStock RokWeather RokNewspager&lt;br /&gt;
|121111&lt;br /&gt;
|developer release statement [http://www.rockettheme.com/blog/extensions/1300-important-security-vulnerability-fixed    RokModule v1.3 for Joomla 1.7   RokModule v1.4 for Joomla 1.5]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  hm community   ==&lt;br /&gt;
|Multiple Vulnerabilities&lt;br /&gt;
|011111&lt;br /&gt;
|developer release [http://joomlaextensions.co.in/product/HM-Community 1.01]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Alameda   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|01111&lt;br /&gt;
|developer statement [http://www.blueflyingfish.com/alameda/index.php?option=com_content&amp;amp;view=category&amp;amp;id=5&amp;amp;Itemid=28 and Latest version number v1.0.1.]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Techfolio 1.0    ==&lt;br /&gt;
|Techfolio 1.0 SQLI&lt;br /&gt;
|291011&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   Barter Sites 1.3  ==&lt;br /&gt;
|Barter Sites 1.3 SQL Injection &amp;amp; Persistent XSS vulnerabilities&lt;br /&gt;
|291011&lt;br /&gt;
|developer [http://my.barter-sites.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=6&amp;amp;Itemid=25 release 1.3.1] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Jeema SMS 3.2  ==&lt;br /&gt;
|Jeema SMS 3.2 Multiple Vulnerabilities&lt;br /&gt;
|291011&lt;br /&gt;
|developer resolution notice [http://jeema.net/about-us/securty-releases.html for 3.5.2]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Vik Real Estate 1.0   ==&lt;br /&gt;
|Vik Real Estate 1.0  Multiple Blind SqlI&lt;br /&gt;
|291011&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== yj contact    ==&lt;br /&gt;
|LFI (youjoomla contact)&lt;br /&gt;
|241011&lt;br /&gt;
|developer update statement [http://www.youjoomla.com/yj-contact-us-1.0.1-released.html 261011]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   NoNumber Framework  ==&lt;br /&gt;
| Advanced Module Manager * AdminBar Docker * Add to Menu * Articles Anywhere * What? Nothing!* Tooltips* Tabber* Sourcerer* Slider* Timed Styles* Modules Anywhere* Modalizer* ReReplacer* Snippets* DB Replacer* CustoMenu* Content Templater* CDN for Joomla!* Cache Cleaner* Better Preview&lt;br /&gt;
|181011&lt;br /&gt;
|see http://feeds.feedburner.com/nonumber/news for updates of various extensions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Time Returns    ==&lt;br /&gt;
|SQLi takeaweb.it&lt;br /&gt;
|151011&lt;br /&gt;
|No longer developed. New version 2.0.1 for Joomla 1.6/1.7 (old version are no longer supported) http://www.takeaweb.it&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Simple File Upload   ==&lt;br /&gt;
|LFI &lt;br /&gt;
|300811&lt;br /&gt;
|developer advice [http://wasen.net/index.php?option=com_content&amp;amp;view=article&amp;amp;id=64&amp;amp;Itemid=59 page] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Jumi    ==&lt;br /&gt;
|LFI&lt;br /&gt;
|300811&lt;br /&gt;
|Developer states proper use of joomla administration/extension documentation reading&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Joomla content editor    ==&lt;br /&gt;
|JCE lfi/rfi vulnerability&lt;br /&gt;
|&lt;br /&gt;
|JCE 2.0.11 and JCE 1.5.7.14 [http://www.joomlacontenteditor.net/news/item/jce-2011-released have been released]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   Google Website Optimizer  ==&lt;br /&gt;
|Numerous vulnerabilities. Website Optimizer, Pearl Group&lt;br /&gt;
|290811&lt;br /&gt;
|developer update [http://www.pearl-group.com/optimizer-changelog statement to ver. 1.4.0] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Almond Classifieds   ==&lt;br /&gt;
|777 Folder settings (all folders it uses are set to 777 including previously 755 locked folders) &lt;br /&gt;
|260811&lt;br /&gt;
|developer resolution [http://www.almondsoft.com/acj/ notice] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== joomtouch    ==&lt;br /&gt;
|LFI/RFI&lt;br /&gt;
|180811&lt;br /&gt;
|developers [http://www.joomtouch.com/ultime/4-risolta-la-vulnerabilita-di-joomtouch.html resolution notice  1.0.3]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  RAXO All-mode PRO   ==&lt;br /&gt;
|Timthumb  RFI &lt;br /&gt;
|110811&lt;br /&gt;
|[http://raxo.org/forum/viewtopic.php?f=2&amp;amp;t=60#p2056 developer upgrade 1.5.0 statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  V-portfolio   ==&lt;br /&gt;
|DT - open folders&lt;br /&gt;
|110811&lt;br /&gt;
| [http://vsmart-extensions.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=61 developer resolution statement] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== obSuggest    ==&lt;br /&gt;
|LFI&lt;br /&gt;
|310711&lt;br /&gt;
|developer [http://foobla.com/news/latest/obsuggest-1.8-security-release.html release statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Simple Page    ==&lt;br /&gt;
|LFI &lt;br /&gt;
|230711&lt;br /&gt;
|developer update [http://omar84.com/latest-news/65-simple-page-options-1517-security-release statement] v1.5.17 has been released&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  JE Story   ==&lt;br /&gt;
|LFI &lt;br /&gt;
|230711&lt;br /&gt;
|[http://joomlaextensions.co.in/extensions/components/je-story-submit.html devloper security update] notice to ver 1.9&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   appointment booking pro  ==&lt;br /&gt;
|LFI 22071&lt;br /&gt;
|&lt;br /&gt;
|[http://appointmentbookingpro.com/index.php?option=com_kunena&amp;amp;Itemid=66&amp;amp;func=view&amp;amp;catid=25&amp;amp;id=8129#8129 developer update security announcement] Current 2.0.1 and 1.4.x versions, are &#039;&#039;&#039;not&#039;&#039;&#039; vulnerable,&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  acajoom   ==&lt;br /&gt;
|xss (admin permission required)&lt;br /&gt;
|220711&lt;br /&gt;
|updated to 5.20&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  gTranslate   ==&lt;br /&gt;
|ID - &lt;br /&gt;
|220711&lt;br /&gt;
|[http://edo.webmaster.am/gtranslate-changelog developer security release] 1.5 x.25 and 1.6 x.26.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  alpharegistration    ==&lt;br /&gt;
|http://www.alphaplug.com/ Please contact the developer for any questions on this extension&lt;br /&gt;
|170711 220711&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Jforce    ==&lt;br /&gt;
|DT - &lt;br /&gt;
|170711&lt;br /&gt;
| [http://www.jforce.com/blog/270-jforce-security-release.html developer states The new version number v1.5r1362 resolves the problem] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Flash Magazine Deluxe Joomla   ==&lt;br /&gt;
|ID [http://www.joomplace.com/joomla-components/flash-magazine-deluxe-component.html multiple vulnerabilities]&lt;br /&gt;
|170711&lt;br /&gt;
|[http://www.joomplace.com/news-blog/flashmagazine-deluxe-2-1-4-security-release.html developer release] 2.1.4&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== AVreloaded    ==&lt;br /&gt;
|SQLi - version 1.2.6&lt;br /&gt;
|150711&lt;br /&gt;
|[http://allvideos.fritz-elfert.de/ 1.2.7 released developer release statement 160711] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
==  Sobi   ==&lt;br /&gt;
|SQLI - &lt;br /&gt;
|130711&lt;br /&gt;
|[http://www.sigsiu.net/changelog developer fix and update statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  fabrik   ==&lt;br /&gt;
|sqli &lt;br /&gt;
|120711&lt;br /&gt;
|[http://fabrikar.com/downloads/details/36/89 Developers Update statement 2.1]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  xmap   ==&lt;br /&gt;
|sqli 1.2.11 &lt;br /&gt;
|120711&lt;br /&gt;
|upgrade to 1.2.12&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Atomic Gallery     ==&lt;br /&gt;
|Creates 777 folders [http://www.atomicon.nl/atomicongallery Atomic gallery] &lt;br /&gt;
|110711&lt;br /&gt;
|developer [http://www.atomicon.nl/atomicongallery#changelog release statement/changelog]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  myApi   ==&lt;br /&gt;
|ID [http://extensions.joomla.org/component/mtree/social-web/facebook-integration/11624 Contains &amp;quot;Call-Home&amp;quot; function. Sends private user information to developer.] &lt;br /&gt;
|020711&lt;br /&gt;
|[http://www.myapi.co.uk/ Developer states Use version 1.3.4.1]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  mdigg   ==&lt;br /&gt;
|SQL I (not listed in JED)&lt;br /&gt;
|020711&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Calc Builder   ==&lt;br /&gt;
|sqli + ID&lt;br /&gt;
|180611&lt;br /&gt;
| [http://components.moonsoft.es/downloadcalcbuilder  dev security release 0.0.2]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Cool Debate    ==&lt;br /&gt;
|Cool Debate 1.03 LFI&lt;br /&gt;
|&lt;br /&gt;
| version [http://www.acoolsip.com/development/a-cool-debate.html 1.0.8 released.] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Scriptegrator Plugin 1.5.5==&lt;br /&gt;
|LFI&lt;br /&gt;
|140611&lt;br /&gt;
| [http://www.greatjoomla.com/news/index.html  Update - Core Design Scriptegrator plugin 2.0.9 &amp;amp;] 1.5.6&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Joomnik Gallery   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|&lt;br /&gt;
|[http://joomlacode.org/gf/project/joomnik/ developer update to 0.9.1]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  JMS fileseller   ==&lt;br /&gt;
|LFI &lt;br /&gt;
|0611&lt;br /&gt;
|[http://joommasters.com/commercial-extensions/components/jms-fileseller.html developer upgrade announcement to v1.1]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  sh404SEF   ==&lt;br /&gt;
|low-level XSS security issue&lt;br /&gt;
|300511&lt;br /&gt;
|[http://dev.anything-digital.com/Forum/Announcements/11147-sh404SEF-2.2.6-now-available-for-Joomla-1.5/ Dev upgrade statement to 2.2.6]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  JE Story submit    ==&lt;br /&gt;
|LFI/RFI &lt;br /&gt;
|&lt;br /&gt;
|[http://joomlaextensions.co.in/extensions/modules/je-content-menu.html?page=shop.product_details&amp;amp;flypage=flypage.tpl&amp;amp;product_id=77&amp;amp;category_id=13&amp;amp;vmcchk=1 developer states Version 1.8]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   FCKeditor   ==&lt;br /&gt;
|File Upload Vulnerability&lt;br /&gt;
|230511&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== KeyCaptcha    ==&lt;br /&gt;
|ID &lt;br /&gt;
|190511&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Ask A Question AddOn v1.1   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|160511&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Global Flash Gallery     ==&lt;br /&gt;
|flash-gallery.com xss &lt;br /&gt;
|130511&lt;br /&gt;
|[http://flash-gallery.com/help/joomla-extension/faq/security-update-0.5.0/ dev release 0.5.0 statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== com_google     ==&lt;br /&gt;
|LFI [http://freejoomlacomponent.appspot.com/ com_google]&lt;br /&gt;
|080511&lt;br /&gt;
|[http://freejoomlacomponent.appspot.com/securityrelease.html devs update to 1.5.1]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  docman   ==&lt;br /&gt;
|com-docman Input Validation Error &lt;br /&gt;
|160511&lt;br /&gt;
|[http://forum.joomla.org/viewtopic.php?p=2502904#p2502904 devs resolution statement, report for old version]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Newsletter Subscriber    ==&lt;br /&gt;
|XSS &lt;br /&gt;
|120511&lt;br /&gt;
|[http://mavrosxristoforos.com/joomla-extensions/free/newsletter-subscriber Deveopler update]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Akeeba   ==&lt;br /&gt;
|akkeba backup and joomlapack&lt;br /&gt;
|170411&lt;br /&gt;
|[https://www.akeebabackup.com/home/item/1091-akeeba-backup-3-2-7.html dev update to 3.2.7]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Facebook Graph Connect   ==&lt;br /&gt;
|SID. call home device with user credentials&lt;br /&gt;
|120411&lt;br /&gt;
|[http://www.sikkimonline.info/security-notice dev update notice]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== booklibrary    ==&lt;br /&gt;
|SQLi ordasoft booklibrary&lt;br /&gt;
|180311&lt;br /&gt;
|[http://ordasoft.com/Book-Library/security-upgrade-instructions-for-book-library.html developer upgrade instructions]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== semantic    ==&lt;br /&gt;
|com semantic http://www.scms.es/joomla creates hidden admin users &lt;br /&gt;
|150311&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  JOMSOCIAL 2.0.x 2.1.x   ==&lt;br /&gt;
|SID, open folders&lt;br /&gt;
|120311&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  flexicontent   ==&lt;br /&gt;
|forced 777, malicious files &lt;br /&gt;
|250311&lt;br /&gt;
|[http://www.flexicontent.org/home/item/192-flexicontent-154-is-finally-out.html devs resolve statement], [http://www.flexicontent.org/downloads/latest-version.html Changelog]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== jLabs Google Analytics Counter     ==&lt;br /&gt;
|jLabs Google Analytics Counter  SID&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==  xcloner   ==&lt;br /&gt;
|Unspecified&lt;br /&gt;
|260211&lt;br /&gt;
|[http://www.xcloner.com/xcloner-news/important-security-upgrade/ dev announcement of security release]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== smartformer    ==&lt;br /&gt;
|RFI&lt;br /&gt;
|230211 (repeat of 041110)&lt;br /&gt;
|[http://www.itoris.com/joomla-form-builder-smartformer.html v2.4.1 security fix for Joomla 1.5.x]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== xmap 1.2.10    ==&lt;br /&gt;
|Malicious payload in zip&lt;br /&gt;
|230211&lt;br /&gt;
|[http://joomla.vargas.co.cr/en/news/4-xmap/95-security-notice developer resolution notic]e Clean version available from [http://joomlacode.org/gf/project/xmap/frs/ joomlacode] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   Frontend-User-Access 3.4.1  ==&lt;br /&gt;
|Frontend-User-Access 3.4.1 from http://www.pages-and-items.com LFI&lt;br /&gt;
|030211&lt;br /&gt;
|update to [http://extensions.joomla.org/extensions/access-a-security/frontend-access-control/6874 Frontend-User-Access 3.4.2]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  com properties 7134   ==&lt;br /&gt;
| http://com-property.com/ malicious files in script&lt;br /&gt;
|&lt;br /&gt;
|[http://joomlacode.org/gf/project/property/frs/?action=FrsReleaseBrowse&amp;amp;frs_package_id=5815 Dev update statement]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  B2 Portfolio ==&lt;br /&gt;
|B2 portfolio 1.0 SQLi pulseextensions.com&lt;br /&gt;
|250111&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  allcinevid   ==&lt;br /&gt;
|SQLI http://extensions.joomla.org/extensions/multimedia/multimedia-players/video-players-a-gallery/15367&lt;br /&gt;
|220111&lt;br /&gt;
|[http://www.joomtraders.com/our-blog/allcinevid-1.0-sql-injection.html Developers resolution notice]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== People Component    ==&lt;br /&gt;
|People component http://www.ptt-solution.com/vmchk/people-component.html sqli&lt;br /&gt;
|150111&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Jimtawl    ==&lt;br /&gt;
|Jimtawl LFI &lt;br /&gt;
|251110&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   Maian Media SILVER  ==&lt;br /&gt;
|Maian Media SQLi&lt;br /&gt;
|151110&lt;br /&gt;
|Developer states unproven in free edition, paid/SILVER version is being upgraded. [http://www.aretimes.com/index.php?option=com_content&amp;amp;view=category&amp;amp;layout=blog&amp;amp;id=40&amp;amp;Itemid=113 dev article]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  alfurqan  ==&lt;br /&gt;
|alfurqan 1.5 sqli&lt;br /&gt;
|151110&lt;br /&gt;
|developer update [http://forums.islamis4u.com/index.php/topic%2c83.0.html statement] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  ccboard   ==&lt;br /&gt;
|[http://extensions.joomla.org/extensions/communication/forum/6823 ccboard XSS and SQLi]&lt;br /&gt;
|131110&lt;br /&gt;
| on my site at [http://codeclassic.org/component/content/article/1-latest-news/83-ccboard-13-released.html] Please find the respective update information&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   ProDesk v 1.5  ==&lt;br /&gt;
|LFI &lt;br /&gt;
|091110&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  sponsorwall   ==&lt;br /&gt;
|SQL injection pulseextensions.com&lt;br /&gt;
|011110&lt;br /&gt;
|developer  [http://demo.pulseextensions.com/sponsor-wall.html resolution notice]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Flip wall   ==&lt;br /&gt;
|SQL injection pulseextensions.com&lt;br /&gt;
|011110&lt;br /&gt;
| developer http://demo.pulseextensions.com/flip-wall.html update notice  [http://www.example.com link title]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Freestyle FAQ 1.5.6     ==&lt;br /&gt;
|http://freestyle-joomla.com/fssdownloads/viewcategory/2 Freestyle FAQ 1.5.6 ‎SQL Injection&lt;br /&gt;
|&lt;br /&gt;
|[http://freestyle-joomla.com/index.php?announceid=43 new version (1.9.0) is available which fixes] the security issues.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   iJoomla Magazine 3.0.1  ==&lt;br /&gt;
|iJoomla Magazine 3.0.1 RFI&lt;br /&gt;
|090910&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Clantools   ==&lt;br /&gt;
| &lt;br /&gt;
|http://www.joomla-clantools.de/downloads/doc_download/7-clantools-123.html clantool sqli&lt;br /&gt;
|090910&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  jphone   ==&lt;br /&gt;
|jphone LFI&lt;br /&gt;
|090910&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
==  PicSell    ==&lt;br /&gt;
|[http://vm.xmlswf.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=104&amp;amp;Itemid=131Picsell LFD, 777]&lt;br /&gt;
|020910&lt;br /&gt;
|new version [http://vm.xmlswf.com/picsell released 150312]  version number 11&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   Zoom Portfolio   ==&lt;br /&gt;
|SID&lt;br /&gt;
|020910&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   zina   ==&lt;br /&gt;
|[http://www.pancake.org/zina/ SQL Injection]&lt;br /&gt;
|020910&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Team&#039;s   ==&lt;br /&gt;
|[http://www.joomlamo.com Teams extension] SQL Injection &lt;br /&gt;
|120810&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Amblog    ==&lt;br /&gt;
|[http://robitbt.hu/jm/index.php?option=com_amdownloader&amp;amp;task=showfiles&amp;amp;pathid=8 Amblog] SQLi&lt;br /&gt;
|120810&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   wmtpic  ==&lt;br /&gt;
|www.webmaster-tips.net various&lt;br /&gt;
|010710&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Jomtube    ==&lt;br /&gt;
|http://www.jomtube.com/ SID&lt;br /&gt;
|220710&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Rapid Recipe    ==&lt;br /&gt;
|http://www.rapid-source.com Persistent XSS Vulnerability last known fix version 1.7.2 &lt;br /&gt;
|july 10,2010&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   Health &amp;amp; Fitness Stats   ==&lt;br /&gt;
|http://joomla-extensions.instantiate.co.uk/jcomponents/healthstats Persistent XSS Vulnerability july 10,2010 &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  staticxt   ==&lt;br /&gt;
|http://extensions.joomla.org/extensions/edition/custom-code-in-content/2184  no version number provided&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   quickfaq  ==&lt;br /&gt;
|http://www.schlu.net sqli&lt;br /&gt;
|090710&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==    Minify4Joomla  ==&lt;br /&gt;
|http://waltercedric.com/ LFI and xss&lt;br /&gt;
|090710&lt;br /&gt;
|No longer available to download&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   IXXO Cart   ==&lt;br /&gt;
|http://www.php-shop-system.com/ SQLi LFI XSS Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|developer resolution [http://support.ixxoglobal.com/index.php?/News/NewsItem/View/22/ixxo-cart-new-release-v41190 notice] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  PaymentsPlus   ==&lt;br /&gt;
|http://paymentsplus.com.au/ 2.1.5 Blind SQL Injection Vulnerability&lt;br /&gt;
|090710 &lt;br /&gt;
|current version 2.20, 2.1.5 not listed on dev site&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  ArtForms   ==&lt;br /&gt;
|http://joomlacode.org/gf/project/jartforms/ ArtForms 2.1b7.2 RC2 Multiple Remote Vulnerabilities&lt;br /&gt;
|090710&lt;br /&gt;
| Old beta extension &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  autartimonial   ==&lt;br /&gt;
|autartica.be Sqli Vulnerability&lt;br /&gt;
|060710&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== eventcal 1.6.4    ==&lt;br /&gt;
|http://joomlacode.org/gf/project/eventcal/frs/ SQL I  last update 2006-12-31 on joomlacode&lt;br /&gt;
|040710&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== date converter    ==&lt;br /&gt;
|http://sourceforge.net/projects/date-converter/ sqli&lt;br /&gt;
|010710&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== real estate    ==&lt;br /&gt;
|http://www.opensourcetechnologies.com/demos/real-estate.html RFI&lt;br /&gt;
|210610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  cinema   ==&lt;br /&gt;
|SQL injection&lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   Jreservation  ==&lt;br /&gt;
|http://jforjoomla.com/ SQLi Vulnerability&lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   joomdocs  ==&lt;br /&gt;
|http://joomclan.com/index.php/JoomDocs/ xss vulnerability&lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   Live Chat    ==&lt;br /&gt;
|http://www.joompolitan.com/livechat.html Multiple Remote Vulnerabilities &lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Turtushout 0.11    ==&lt;br /&gt;
| http://www.turtus.org.ua/files?func=fileinfo&amp;amp;id=13 SQL Injection (again)&lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  BF Survey Pro Free   ==&lt;br /&gt;
|BF Survey Pro Free SQL Injection Exploit &lt;br /&gt;
|190610&lt;br /&gt;
|Product marker as retired by the developer&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  MisterEstate   ==&lt;br /&gt;
|http://www.misterestate.com/ Blind SQL Injection Exploit &lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  RSMonials    ==&lt;br /&gt;
|http://www.rswebsols.com/downloads/category/14-download-rsmonials-all?download=23%3Adownload-rsmonials-component XSS Exploit&lt;br /&gt;
|190610&lt;br /&gt;
|Believed to be 1.5.1 version&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Answers v2.3beta   ==&lt;br /&gt;
|Multiple Vulnerabilities http://extensions.joomla.org/extensions/communication/forum/12652&lt;br /&gt;
|180610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Gallery XML 1.1   ==&lt;br /&gt;
|Multiple Vulnerabilities&lt;br /&gt;
http://extensions.joomla.org/extensions/photos-a-images/photo-gallery/12504&lt;br /&gt;
|180610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  JFaq 1.2   ==&lt;br /&gt;
|JFaq 1.2 Multiple Vulnerabilities&lt;br /&gt;
|180610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Listbingo 1.3   ==&lt;br /&gt;
|Multiple Vulnerabilities&lt;br /&gt;
http://extensions.joomla.org/extensions/ads-a-affiliates/classified-ads/12062&lt;br /&gt;
|180610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Alpha User Points    ==&lt;br /&gt;
|www.alphaplug.com LFI&lt;br /&gt;
|180610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   recruitmentmanager  ==&lt;br /&gt;
|http://recruitment.focusdev.co.uk Upload Vulnerability&lt;br /&gt;
|130610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Info Line (MT_ILine)    ==&lt;br /&gt;
|http://extensions.joomla.org/extensions/news-display/news-tickers-a-scrollers/8425 reports of shell scripts in download file&lt;br /&gt;
|120610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Ads manager  Annonce   ==&lt;br /&gt;
|http://joomla.clubnautiquemarine.fr/ &lt;br /&gt;
Upload Vulnerability&lt;br /&gt;
| 05/06/10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  lead article    ==&lt;br /&gt;
|http://www.leadya.co.il/ SQLi&lt;br /&gt;
|050610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  djartgallery   ==&lt;br /&gt;
|http://www.design-joomla.eu Multiple Vul&lt;br /&gt;
|05/06/10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Gallery 2 Bridge    ==&lt;br /&gt;
|[http://trac.4theweb.nl/g2bridge g2bridge] LFI vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  jsjobs   ==&lt;br /&gt;
|[http://www.joomsky.com jsjobs] SQL Injection Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   JE Poll  ==&lt;br /&gt;
|http://slideshow.joomlaextensions.co.in/ SQL Injection Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  MediQnA   ==&lt;br /&gt;
|MediQnA LFI vulnerability version : v1.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   JE Job  ==&lt;br /&gt;
|http://joomlaextensions.co.in/ LFI SQLi&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  SectionEx   ==&lt;br /&gt;
|Stack Ideas section Ex LFI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  ActiveHelper LiveHelp    ==&lt;br /&gt;
|XSS in [http://extensions.joomla.org/extensions/communication/chat/12492 LiveHelp] &lt;br /&gt;
|200510&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
==  JE Quotation Form   ==&lt;br /&gt;
|http://joomlaextensions.co.in/free-download/doc_download/11-je-quotation-form.html  LFI&lt;br /&gt;
|&lt;br /&gt;
|developers statement of [http://joomlaextensions.co.in/extensions/joomla-components/product/JE-Quote-Form resolution]  &#039;&#039;&#039;note&#039;&#039;&#039;, now known as [http://joomlaextensions.co.in/extensions/joomla-components/product/JE-Quote-Form JE Quote Form] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  konsultasi   ==&lt;br /&gt;
|SQL Injection Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Seber Cart    ==&lt;br /&gt;
|Local File Disclosure Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|[http://www.sebercart.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=158 Developer Update 140510]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  Camp26 Visitor    ==&lt;br /&gt;
|RFI www.camp26.biz&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==   JE Property  ==&lt;br /&gt;
|JE Property Finder Upload Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==   Noticeboard  ==&lt;br /&gt;
|Noticeboard for Joomla &amp;quot;controller&amp;quot; Local File Inclusion Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==SmartSite     ==&lt;br /&gt;
|SmartSite com_smartsite Local File Inclusion Vulnerability &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  htmlcoderhelper graphics   ==&lt;br /&gt;
|htmlcoderhelper graphics v1.0.6 LFI Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
== Ultimate Portfolio    ==&lt;br /&gt;
|Ultimate Portfolio  Local File Inclusion Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  Archery Scores   ==&lt;br /&gt;
| [http://lispeltuut.org/ Archery Scores (com_archeryscores) v1.0.6 LFI Vulnerability]&lt;br /&gt;
&lt;br /&gt;
|210410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  ZiMB Manager   ==&lt;br /&gt;
|Joomla Component ZiMB Manager Local File Inclusion Vulnerability&lt;br /&gt;
|210410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  Matamko   ==&lt;br /&gt;
|Matamko Local File Inclusion Vulnerability&lt;br /&gt;
|210410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  Multiple Root   ==&lt;br /&gt;
|Multiple Root Local File Inclusion Vulnerability http://joomlacomponent.inetlanka.com/&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  Multiple Map   ==&lt;br /&gt;
|Multiple Map Local File Inclusion Vulnerability joomlacomponent.inetlanka.com&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==   Contact Us Draw Root Map  ==&lt;br /&gt;
|Draw Root Map Local File Inclusion Vulnerability joomlacomponent.inetlanka.com&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  iF surfALERT   ==&lt;br /&gt;
|[http://www.inertialfate.za.net/ iF surfALERT] Local File Inclusion Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==   GBU FACEBOOK  ==&lt;br /&gt;
|GBU FACEBOOK SQL injection vulnerability http://www.gbugrafici.nl/gbufacebook/&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==   jnewspaper  ==&lt;br /&gt;
|jnewspaper (cid) SQL Injection Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
== MT Fire Eagle ==&lt;br /&gt;
&lt;br /&gt;
|LFI http://joomlacode.org/gf/project/jfireeagle/frs/ http://www.moto-treks.com&lt;br /&gt;
| 190410&lt;br /&gt;
| product considered retired and to be replaced by dev&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  Sweetykeeper   ==&lt;br /&gt;
|Sweetykeeper Local File Inclusion Vulnerability  http://www.joomlacorner.com/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  jvehicles   ==&lt;br /&gt;
|SQL Injection http://jvehicles.com&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  worldrates   ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  cvmaker   ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  advertising   ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==   horoscope  ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==   webtv  ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  diary   ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  Memory Book   ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  JprojectMan   ==&lt;br /&gt;
|LFI http://extensions.joomla.org/extensions/communities-a-groupware/project-a-task-management/5676&lt;br /&gt;
|110410&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==   econtentsite  ==&lt;br /&gt;
|LFI&lt;br /&gt;
|040410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==    Jvehicles ==&lt;br /&gt;
|ID&lt;br /&gt;
|040410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==    gigcalender   ==&lt;br /&gt;
&lt;br /&gt;
|SQLi [http://extensions.joomla.org/extensions/calendars-a-events/events/97)http://extensions.joomla.org/extensions/calendars-a-events/events/97 gigcalender]&lt;br /&gt;
|13 march 2010&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==    heza content   ==&lt;br /&gt;
|SQLi [http://extensions.joomla.org/extensions/structure-a-navigation/sections-a-categories/10427)http://extensions.joomla.org/extensions/structure-a-navigation/sections-a-categories/10427  heza content]&lt;br /&gt;
|13 march 2010&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  SqlReport   ==&lt;br /&gt;
|Sqlreport has a sql/RFI exploit. awaiting confirmation on exact developer.&lt;br /&gt;
|Feb 20&lt;br /&gt;
|&#039;&#039;&#039;Not Known&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Yelp ==&lt;br /&gt;
| SQLi - Unable to locate developer. Possibly a custom extension.&lt;br /&gt;
|Feb 01 &lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&amp;lt;endFeed /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This list is change protected, for updates or additions [http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=28000 Mandville] or [http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=87230 lafrance] or [http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=67439 PhilD]&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Codes used ==&lt;br /&gt;
SQLi - SQL injection [http://en.wikipedia.org/wiki/Code_injection#SQL_injection wikipedia]&lt;br /&gt;
&lt;br /&gt;
LFI - Local File Inclusion [http://www.scribd.com/doc/6498408/Remote-and-Local-File-Inclusion-Explained scribd]&lt;br /&gt;
&lt;br /&gt;
RFI - Remote file inclusion [http://en.wikipedia.org/wiki/Remote_File_Inclusion wikipedia]&lt;br /&gt;
&lt;br /&gt;
DT - Directory Traversal [http://en.wikipedia.org/wiki/Directory_traversal wikipedia] (incl 777 folders)&lt;br /&gt;
&lt;br /&gt;
ID = Information Disclosure: account information or sensitive information publicly viewable, or passed to 3rd party without knowledge&lt;br /&gt;
&lt;br /&gt;
== Future Actions &amp;amp; WIP ==&lt;br /&gt;
&lt;br /&gt;
[http://feeds.joomla.org/JoomlaSecurityVulnerableExtensions RSS feed] completed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
to feed VEL direct to twitter&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
The RSS feed is currently fed by item entry order and not by date fixed. &lt;br /&gt;
List as discussed in  [[jtopic:455746]] by [http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=67439 PhilD] editing by [http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=28000 Mandville]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
[[Category:Component Management]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User_talk:Tom_Hutchison&amp;diff=77193</id>
		<title>User talk:Tom Hutchison</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User_talk:Tom_Hutchison&amp;diff=77193"/>
		<updated>2012-10-29T05:47:40Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Security checklist 7 */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== vel list ==&lt;br /&gt;
&lt;br /&gt;
I have reverted your changes. &lt;br /&gt;
With all due respect enzsure that before you alter anything protected you should read and observe the comments on the talk pages&lt;br /&gt;
namely&lt;br /&gt;
&lt;br /&gt;
 Talk:Vulnerable Extensions List&lt;br /&gt;
Jump to: navigation, search&lt;br /&gt;
&lt;br /&gt;
All questions should be addressed to the vel @ joomla.org email address (without the spaces)&lt;br /&gt;
&lt;br /&gt;
Only known users to edit anything previously agreed items on this page.&lt;br /&gt;
&lt;br /&gt;
== cont ==&lt;br /&gt;
&lt;br /&gt;
In response to youre previous message - not sure why you added on my talk page but still &lt;br /&gt;
Beyond the cut and paste of previous editors comments.&lt;br /&gt;
Please ask Chris Davenport for the history on this document, and if you have any concerns or questions contact the vel team as detailed to do on the vel talk page.&lt;br /&gt;
:I posted on your talk page, because I have no way of knowing if you are watching my talk page for replies without certain installed Mediawiki extensions. Will PM you and Phil on the forum. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 16:04, 22 October 2012 (CDT)&lt;br /&gt;
&lt;br /&gt;
Received no PM or email to the vel list from you. Your rechanges reversed.&lt;br /&gt;
--[[User:Mandville|Mandville]] ([[User talk:Mandville|talk]]) 12:50, 27 October 2012 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Phil already reverted the mis-spelling, the categorisation of the page stands as is and will. Since it was for enhancement suggestions, I didn&#039;t realise the clock was ticking. I have been trying to research everything, because I wanted to address all concerns with solutions. At this point, I am probably just wasting my time and effort. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 14:27, 27 October 2012 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Security checklist 7 ==&lt;br /&gt;
&lt;br /&gt;
in reference to history entry for the checklist 7,  16:44, 13 October 2012‎ - (Removed protection from &amp;quot;Security Checklist/You have been hacked or defaced&amp;quot;: hmm, don&#039;t know why this was protected, error - reset to all edit)&lt;br /&gt;
&lt;br /&gt;
http://docs.joomla.org/Security_Checklist/You_have_been_hacked_or_defaced&lt;br /&gt;
and history&lt;br /&gt;
http://docs.joomla.org/index.php?title=Security_Checklist/You_have_been_hacked_or_defaced&amp;amp;action=history&lt;br /&gt;
&lt;br /&gt;
The checklist was protected as incorrect and sometimes potentially damaging edits were being made mainly to the Chmod and Cron section shell scripts of the page. &lt;br /&gt;
&lt;br /&gt;
This goes back to a few pages are protected for a reason. The reason in this case for the safety of the end users site. While I would suggest this page remain protected from regular editing for reasons outlined above, Though I would feel better if the page was again protected, I will let it stay as unprotected for now unless another incident of changing or modifying the shell scripts occurs which would potentially damage or delete someones site if the modified script(s) are used before the changes can be rolled back.&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Archived:Vulnerable_Extensions_List&amp;diff=76878</id>
		<title>Archived:Vulnerable Extensions List</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Archived:Vulnerable_Extensions_List&amp;diff=76878"/>
		<updated>2012-10-22T17:52:35Z</updated>

		<summary type="html">&lt;p&gt;Phild: Undo revision 76874 by Hutchy68 (talk) misspelling of January is intentional&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ***all wiki editors*** - do NOT touch without notice   --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;List prior to Jnuary 2011 ([[Archived vel|now archived]])&#039;&#039;&#039; Please check here also. &lt;br /&gt;
&amp;lt;!-- if you have altered the above line then revert your changes and contact me   --&amp;gt;&lt;br /&gt;
Please also check the [[Investigation of exploits|Extension Investigation List]].&lt;br /&gt;
 &lt;br /&gt;
== Check and Report.  ==&lt;br /&gt;
&#039;&#039;&#039;Please check with the extension publisher in case of any questions over the security of their product.&#039;&#039;&#039;&lt;br /&gt;
Report Vulnerable extensions in the [[jforum:432|security forum]]  clearly marked with the first word in the title being &#039;&#039;Vulnerable&#039;&#039; where the security moderators or JSST team will respond. &lt;br /&gt;
This list is change protected,&#039;&#039;&#039; for additions or updates email&#039;&#039;&#039; &#039;&#039;vel @ joomla.org&#039;&#039; &lt;br /&gt;
*If you are seeing this page on any site other than [http://docs.joomla.org/Vulnerable_Extensions_List the Offical Joomla Documentation] you may be seeing an out of date version or experiencing [http://en.wikipedia.org/wiki/Plagiarism plagiary] and the links may not work properly&lt;br /&gt;
&lt;br /&gt;
== How to use this list ==&lt;br /&gt;
&#039;&#039;&#039;Items will be removed after a suitable period and not on resolution.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All known vulnerable extensions are the listed in the first column &amp;quot;Extension&amp;quot;. Any in a &amp;lt;span style=&amp;quot;background:red; color:white&amp;quot;&amp;gt;red box &amp;lt;/span&amp;gt;are where we have not been given a fix. Any in a &amp;lt;span style=&amp;quot;background:#cef2e0; color:black&amp;quot;&amp;gt;turquoise box&amp;lt;/span&amp;gt; contain a link to the notice about an &amp;lt;span style=&amp;quot;background:#cef2e0; color:black&amp;quot;&amp;gt;update with link.&amp;lt;/span&amp;gt; Any that are in an uncolored box are a &amp;quot;Contact the Developer About This Extension&amp;quot;.&lt;br /&gt;
Alert Advisory details are in the center column.&lt;br /&gt;
If the &amp;quot;Extension Update Link &amp;amp; Date Column has &amp;lt;span style=&amp;quot;background:red; color:white&amp;quot;&amp;gt;&#039;&#039;&#039;Not Known&#039;&#039;&#039; &amp;lt;/span&amp;gt; then it is where no update is known.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This list is compiled from found information and may not be an up to date accurate list&#039;&#039;&#039; &#039;&#039;We do &#039;&#039;&#039;NOT&#039;&#039;&#039; promise to test or validate these reports. We do &#039;&#039;&#039;NOT&#039;&#039;&#039; guarantee the quality or effectiveness of any updates reported to us or listed here.&#039;&#039;&lt;br /&gt;
To sign up for the feed please [http://feeds.joomla.org/JoomlaSecurityVulnerableExtensions follow this link]&lt;br /&gt;
* We do not list BETA products, or extensions for J1.0.x&lt;br /&gt;
&lt;br /&gt;
== Developers - How to get yourself removed from the VEL ==&lt;br /&gt;
&lt;br /&gt;
Resolved items will be removed after a suitable period and not on resolution&lt;br /&gt;
&lt;br /&gt;
Please solve the issues and:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If JED listed&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
To have your extension republished, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
1- Solve the issues.&lt;br /&gt;
&lt;br /&gt;
2- Attach the new zip file at your actual JED listing.&lt;br /&gt;
&lt;br /&gt;
3- Change the extension version at JED listing.&lt;br /&gt;
&lt;br /&gt;
4- Make sure to include a notice in the JED description to the fact that the new release is a &amp;quot;Security Release&amp;quot; and those who use the extension should upgrade immediately.&lt;br /&gt;
&lt;br /&gt;
5- Create a [http://bit.ly/velunlist JED listing owner ticket] to the JED with a notice and ask that your listing be republished. Include the full details of yournew version number and security notice page&lt;br /&gt;
&lt;br /&gt;
6- Email the VEL team with a notice of resolution, the latest version number &#039;&#039;&#039;and&#039;&#039;&#039; a link to the security release statement on your website&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VEL email can be found above and the JED support link is in your notice of &amp;quot;unpublication&amp;quot; [http://extensions.joomla.org/component/maqmahelpdesk/ and here] &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;If not JED listed.&#039;&#039;&#039; &lt;br /&gt;
Inform us by &#039;&#039;&#039;email&#039;&#039;&#039; with a notice of resolution, the latest version number &#039;&#039;&#039;and&#039;&#039;&#039; a link to the security release statement on your website.&lt;br /&gt;
&lt;br /&gt;
== January 2012 and onwards Reported Vulnerable Extensions ==&lt;br /&gt;
&amp;lt;startFeed /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  &#039;&#039;&#039;Extension&#039;&#039;&#039;&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot;| &#039;&#039;&#039;Details&#039;&#039;&#039;&lt;br /&gt;
!  &#039;&#039;&#039;Date Added&#039;&#039;&#039;&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; |&#039;&#039;&#039;Extension Update Link &amp;amp; Date&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Icagenda   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  JTag [joomlatag]   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   Freestyle Support  ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  ACEFTP   ==&lt;br /&gt;
|DT &lt;br /&gt;
|011012&lt;br /&gt;
|AceFTP 2.0.0 released. Developer [http://www.joomace.net/blog/aceftp/aceftp-200-has-been-released statement] 101012&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  MijoFTP   ==&lt;br /&gt;
|DT &lt;br /&gt;
|011012&lt;br /&gt;
|*&#039;&#039;reported fixed prior to notification&#039;&#039;*&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  spider calendar lite   ==&lt;br /&gt;
|RFI &lt;br /&gt;
|180912&lt;br /&gt;
|developer release version 1.5 [http://web-dorado.com/products/joomla-calendar-module.html  version]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==   RokModule   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|Rereported 180912&lt;br /&gt;
|Developer states: no known exploits for our current versions [http://www.rockettheme.com/extensions-downloads/free/1012-rokmodule of RokModule Joomla 2.5 - v1.3 Joomla 1.5 - v1.4]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  ICagenda   ==&lt;br /&gt;
| SQLi&lt;br /&gt;
|developer [http://www.joomlic.com/en/extensions/icagenda security release] - v1.2.1&lt;br /&gt;
|080912&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  En Masse cart   ==&lt;br /&gt;
|RFI&lt;br /&gt;
|060812&lt;br /&gt;
|Developer upgrade statement [http://www.matamko.com/news-update/14-en-masse-releases/142-announcement-for-security-release-enmasse-313.html   to 3.1.3]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==   JCE (joomla content editor)  ==&lt;br /&gt;
|Upload Restriction &amp;lt;2.2.4 &lt;br /&gt;
|050812&lt;br /&gt;
|Developer states current version not exploitable &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==   RSGallery2  ==&lt;br /&gt;
|SQLi XSS&lt;br /&gt;
| 31 07 12&lt;br /&gt;
|Devleoper statement versions 3.2.0 for Joomla 2.5 and version 2.3.0 for Joomla 1.5  [http://www.rsgallery2.nl/topicseen./announcements/rsgallery2_3.2.0_and_2.3.0_released_16845.msg44046.html released] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  osproperty   ==&lt;br /&gt;
|Unrestricted uploads&lt;br /&gt;
|160712&lt;br /&gt;
|Developer release [http://joomservices.com/components/ossolution-property.html version  2.0.3] 180712&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== KSAdvertiser     ==&lt;br /&gt;
| RFI &lt;br /&gt;
|160712&lt;br /&gt;
|The security update version 1.5.72 advise can be found here:&lt;br /&gt;
[http://www.kiss-software.de/index.php?option=com_content&amp;amp;view=article&amp;amp;id=251:kiss-advertiser-sicherheitsupdate&amp;amp;catid=69&amp;amp;Itemid=361&amp;amp;lang=de German] [http://www.kiss-software.de/index.php?option=com_content&amp;amp;view=article&amp;amp;id=252:kiss-advertiser-security-update&amp;amp;catid=21&amp;amp;Itemid=362&amp;amp;lang=en English]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Shipping by State for Virtuemart   ==&lt;br /&gt;
|elevated permissions (http://web-expert.gr/en)&lt;br /&gt;
|160612&lt;br /&gt;
| [http://web-expert.gr/en/commersial/virtuemart-shipping-by-state-component Upgrade to v2.5 download] commercial product 300612&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  ownbiblio 1.5.3   ==&lt;br /&gt;
|SQLi + &lt;br /&gt;
|250512&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  Ninjaxplorer &amp;lt;=1.0.6   ==&lt;br /&gt;
|developer notification&lt;br /&gt;
|250412&lt;br /&gt;
|developer statement [http://ninjaforge.com/blog/318-security-vulnerability-discovered-in-ninjaxplorer-upgrade-immediately upgrade to 1.0.7]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Phoca Fav Icon    ==&lt;br /&gt;
|Permissions Rewrite&lt;br /&gt;
|150412&lt;br /&gt;
| [http://www.phoca.cz/news/30-phoca-news/633-phoca-favicon-203-released developer update 2.0.3 statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  estateagent improved   ==&lt;br /&gt;
|sqli (eaimproved.eu)&lt;br /&gt;
|110412&lt;br /&gt;
|developer states previous version, not current version&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  bearleague   ==&lt;br /&gt;
|110412&lt;br /&gt;
|sql &lt;br /&gt;
|(no longer maintained)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  JLive! Chat v4.3.1   ==&lt;br /&gt;
|DT &lt;br /&gt;
|060412&lt;br /&gt;
|Developer reports [http://www.cmsfruit.com/security-measures.html  as unproven]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   virtuemart 2.0.2  ==&lt;br /&gt;
|SQLi &lt;br /&gt;
|050412&lt;br /&gt;
|developers [http://virtuemart.net/news/list-all-news/417-happy-easter-new-virtuemart-204-released-security-update-sqli release statement]Current version 2.0.6 released&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  JE testimonial    ==&lt;br /&gt;
|SQLi &lt;br /&gt;
|230312&lt;br /&gt;
|Developer states &#039;&#039;&#039;malicious report.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  JaggyBlog   ==&lt;br /&gt;
|excessive file permission &lt;br /&gt;
|090212&lt;br /&gt;
|version 1.3.1 [http://www.jaggysnake.co.uk/products/jaggyblog released] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Quickl Form   ==&lt;br /&gt;
|xss&lt;br /&gt;
|260112&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  com_advert   ==&lt;br /&gt;
|sqli - unknown developer&lt;br /&gt;
|240112&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Joomla Discussions Component    ==&lt;br /&gt;
|sqli &lt;br /&gt;
|180112&lt;br /&gt;
|Discussions 1.4.1 released  [http://www.codingfish.com/news/38-joomla/101-discussions-141-released developer statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== HD Video Share (contushdvideoshare)  ==&lt;br /&gt;
|sqli &lt;br /&gt;
|180112&lt;br /&gt;
|updated [http://www.hdvideoshare.net version 2.2]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Simple File Upload 1.3  ==&lt;br /&gt;
|RFI&lt;br /&gt;
|010112&lt;br /&gt;
| Developer update [http://wasen.net/index.php?option=com_content&amp;amp;view=article&amp;amp;id=64:simple-file-upload-download&amp;amp;catid=40:project-simple-file-upload&amp;amp;Itemid=59   statement] to 1.3.5&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&amp;lt;endFeed /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== January 2011 - Jan 2012  Reported Vulnerable Extensions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please check with the extension publisher in case of any questions over the security of their product.&#039;&#039;&#039;&lt;br /&gt;
Report Vulnerable extensions either in the [[jforum:432]] security topic clearly marked with the first word in the title being &#039;&#039;Vulnerable Report&#039;&#039; where the security moderators or JSST team will respond or via email to the VEL team. For a guide to the [http://docs.joomla.org/Vulnerable_Extensions_List#Codes_used codes]&lt;br /&gt;
*If you are seeing this page on any site other than [http://docs.joomla.org/Vulnerable_Extensions_List the Offical Joomla Documentation] you may be seeing an out of date version or experiencing [http://en.wikipedia.org/wiki/Plagiarism plagiary] and the links may not work properly&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  &#039;&#039;&#039;Extension&#039;&#039;&#039;&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot;| &#039;&#039;&#039;Details&#039;&#039;&#039;&lt;br /&gt;
!  &#039;&#039;&#039;Date Added&#039;&#039;&#039;&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; |&#039;&#039;&#039;Extension Update Link &amp;amp; Date&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
== Simple File Upload 1.3  ==&lt;br /&gt;
|RFI&lt;br /&gt;
|010112&lt;br /&gt;
| Developer update [http://wasen.net/index.php?option=com_content&amp;amp;view=article&amp;amp;id=64:simple-file-upload-download&amp;amp;catid=40:project-simple-file-upload&amp;amp;Itemid=59   statement] to 1.3.5&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Dshop    ==&lt;br /&gt;
|sqli (possibly dhrusya.com)&lt;br /&gt;
|201111&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  QContacts 1.0.6   ==&lt;br /&gt;
|sqli &lt;br /&gt;
|131211&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Jobprofile  1.0 ==&lt;br /&gt;
|  SQL Injection Vulnerability&lt;br /&gt;
|051211&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  JX Finder 2.0.1   ==&lt;br /&gt;
| XSS Vulnerabilities&lt;br /&gt;
|011211&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  wdbanners   ==&lt;br /&gt;
|Unknown Exploit&lt;br /&gt;
|301111&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==  JB Captify Content  J1.5 and J1.7     ==&lt;br /&gt;
|Security checks missing -Versions prior to JB_mod_captifyContent_J1.5_J1.7_1.0.1.zip&lt;br /&gt;
|141111&lt;br /&gt;
|All extensions available on the [http://joomlabamboo.com site have been updated] and this potential security issue has been resolved.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  JB Microblog   ==&lt;br /&gt;
|Security checks missing - J1.7 only. Versions prior to 1.10.3 &lt;br /&gt;
|14111&lt;br /&gt;
|All extensions available on the [joomlabamboo.com site have been updated] and this potential security issue has been resolved.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
== JB Slideshow &amp;lt;3.5.1,   ==&lt;br /&gt;
|Security checks missing&lt;br /&gt;
|141111&lt;br /&gt;
|All extensions available on the [joomlabamboo.com site have been updated] and this potential security issue has been resolved.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
== JB Bamboobox   ==&lt;br /&gt;
|Security checks missing - J1.5 all versions prior to 1.2.2 &lt;br /&gt;
|141111&lt;br /&gt;
|All extensions available on the [joomlabamboo.com site have been updated] and this potential security issue has been resolved.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==  RokModule    ==&lt;br /&gt;
|SQLI - exploits     RokStock RokWeather RokNewspager&lt;br /&gt;
|121111&lt;br /&gt;
|developer release statement [http://www.rockettheme.com/blog/extensions/1300-important-security-vulnerability-fixed    RokModule v1.3 for Joomla 1.7   RokModule v1.4 for Joomla 1.5]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  hm community   ==&lt;br /&gt;
|Multiple Vulnerabilities&lt;br /&gt;
|011111&lt;br /&gt;
|developer release [http://joomlaextensions.co.in/product/HM-Community 1.01]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Alameda   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|01111&lt;br /&gt;
|developer statement [http://www.blueflyingfish.com/alameda/index.php?option=com_content&amp;amp;view=category&amp;amp;id=5&amp;amp;Itemid=28 and Latest version number v1.0.1.]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Techfolio 1.0    ==&lt;br /&gt;
|Techfolio 1.0 SQLI&lt;br /&gt;
|291011&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   Barter Sites 1.3  ==&lt;br /&gt;
|Barter Sites 1.3 SQL Injection &amp;amp; Persistent XSS vulnerabilities&lt;br /&gt;
|291011&lt;br /&gt;
|developer [http://my.barter-sites.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=6&amp;amp;Itemid=25 release 1.3.1] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Jeema SMS 3.2  ==&lt;br /&gt;
|Jeema SMS 3.2 Multiple Vulnerabilities&lt;br /&gt;
|291011&lt;br /&gt;
|developer resolution notice [http://jeema.net/about-us/securty-releases.html for 3.5.2]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Vik Real Estate 1.0   ==&lt;br /&gt;
|Vik Real Estate 1.0  Multiple Blind SqlI&lt;br /&gt;
|291011&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== yj contact    ==&lt;br /&gt;
|LFI (youjoomla contact)&lt;br /&gt;
|241011&lt;br /&gt;
|developer update statement [http://www.youjoomla.com/yj-contact-us-1.0.1-released.html 261011]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   NoNumber Framework  ==&lt;br /&gt;
| Advanced Module Manager * AdminBar Docker * Add to Menu * Articles Anywhere * What? Nothing!* Tooltips* Tabber* Sourcerer* Slider* Timed Styles* Modules Anywhere* Modalizer* ReReplacer* Snippets* DB Replacer* CustoMenu* Content Templater* CDN for Joomla!* Cache Cleaner* Better Preview&lt;br /&gt;
|181011&lt;br /&gt;
|see http://feeds.feedburner.com/nonumber/news for updates of various extensions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Time Returns    ==&lt;br /&gt;
|SQLi takeaweb.it&lt;br /&gt;
|151011&lt;br /&gt;
|No longer developed. New version 2.0.1 for Joomla 1.6/1.7 (old version are no longer supported) http://www.takeaweb.it&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Simple File Upload   ==&lt;br /&gt;
|LFI &lt;br /&gt;
|300811&lt;br /&gt;
|developer advice [http://wasen.net/index.php?option=com_content&amp;amp;view=article&amp;amp;id=64&amp;amp;Itemid=59 page] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Jumi    ==&lt;br /&gt;
|LFI&lt;br /&gt;
|300811&lt;br /&gt;
|Developer states proper use of joomla administration/extension documentation reading&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Joomla content editor    ==&lt;br /&gt;
|JCE lfi/rfi vulnerability&lt;br /&gt;
|&lt;br /&gt;
|JCE 2.0.11 and JCE 1.5.7.14 [http://www.joomlacontenteditor.net/news/item/jce-2011-released have been released]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   Google Website Optimizer  ==&lt;br /&gt;
|Numerous vulnerabilities. Website Optimizer, Pearl Group&lt;br /&gt;
|290811&lt;br /&gt;
|developer update [http://www.pearl-group.com/optimizer-changelog statement to ver. 1.4.0] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Almond Classifieds   ==&lt;br /&gt;
|777 Folder settings (all folders it uses are set to 777 including previously 755 locked folders) &lt;br /&gt;
|260811&lt;br /&gt;
|developer resolution [http://www.almondsoft.com/acj/ notice] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== joomtouch    ==&lt;br /&gt;
|LFI/RFI&lt;br /&gt;
|180811&lt;br /&gt;
|developers [http://www.joomtouch.com/ultime/4-risolta-la-vulnerabilita-di-joomtouch.html resolution notice  1.0.3]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  RAXO All-mode PRO   ==&lt;br /&gt;
|Timthumb  RFI &lt;br /&gt;
|110811&lt;br /&gt;
|[http://raxo.org/forum/viewtopic.php?f=2&amp;amp;t=60#p2056 developer upgrade 1.5.0 statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  V-portfolio   ==&lt;br /&gt;
|DT - open folders&lt;br /&gt;
|110811&lt;br /&gt;
| [http://vsmart-extensions.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=61 developer resolution statement] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== obSuggest    ==&lt;br /&gt;
|LFI&lt;br /&gt;
|310711&lt;br /&gt;
|developer [http://foobla.com/news/latest/obsuggest-1.8-security-release.html release statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Simple Page    ==&lt;br /&gt;
|LFI &lt;br /&gt;
|230711&lt;br /&gt;
|developer update [http://omar84.com/latest-news/65-simple-page-options-1517-security-release statement] v1.5.17 has been released&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  JE Story   ==&lt;br /&gt;
|LFI &lt;br /&gt;
|230711&lt;br /&gt;
|[http://joomlaextensions.co.in/extensions/components/je-story-submit.html devloper security update] notice to ver 1.9&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   appointment booking pro  ==&lt;br /&gt;
|LFI 22071&lt;br /&gt;
|&lt;br /&gt;
|[http://appointmentbookingpro.com/index.php?option=com_kunena&amp;amp;Itemid=66&amp;amp;func=view&amp;amp;catid=25&amp;amp;id=8129#8129 developer update security announcement] Current 2.0.1 and 1.4.x versions, are &#039;&#039;&#039;not&#039;&#039;&#039; vulnerable,&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  acajoom   ==&lt;br /&gt;
|xss (admin permission required)&lt;br /&gt;
|220711&lt;br /&gt;
|updated to 5.20&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  gTranslate   ==&lt;br /&gt;
|ID - &lt;br /&gt;
|220711&lt;br /&gt;
|[http://edo.webmaster.am/gtranslate-changelog developer security release] 1.5 x.25 and 1.6 x.26.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  alpharegistration    ==&lt;br /&gt;
|http://www.alphaplug.com/ Please contact the developer for any questions on this extension&lt;br /&gt;
|170711 220711&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Jforce    ==&lt;br /&gt;
|DT - &lt;br /&gt;
|170711&lt;br /&gt;
| [http://www.jforce.com/blog/270-jforce-security-release.html developer states The new version number v1.5r1362 resolves the problem] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Flash Magazine Deluxe Joomla   ==&lt;br /&gt;
|ID [http://www.joomplace.com/joomla-components/flash-magazine-deluxe-component.html multiple vulnerabilities]&lt;br /&gt;
|170711&lt;br /&gt;
|[http://www.joomplace.com/news-blog/flashmagazine-deluxe-2-1-4-security-release.html developer release] 2.1.4&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== AVreloaded    ==&lt;br /&gt;
|SQLi - version 1.2.6&lt;br /&gt;
|150711&lt;br /&gt;
|[http://allvideos.fritz-elfert.de/ 1.2.7 released developer release statement 160711] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
==  Sobi   ==&lt;br /&gt;
|SQLI - &lt;br /&gt;
|130711&lt;br /&gt;
|[http://www.sigsiu.net/changelog developer fix and update statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  fabrik   ==&lt;br /&gt;
|sqli &lt;br /&gt;
|120711&lt;br /&gt;
|[http://fabrikar.com/downloads/details/36/89 Developers Update statement 2.1]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  xmap   ==&lt;br /&gt;
|sqli 1.2.11 &lt;br /&gt;
|120711&lt;br /&gt;
|upgrade to 1.2.12&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Atomic Gallery     ==&lt;br /&gt;
|Creates 777 folders [http://www.atomicon.nl/atomicongallery Atomic gallery] &lt;br /&gt;
|110711&lt;br /&gt;
|developer [http://www.atomicon.nl/atomicongallery#changelog release statement/changelog]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  myApi   ==&lt;br /&gt;
|ID [http://extensions.joomla.org/component/mtree/social-web/facebook-integration/11624 Contains &amp;quot;Call-Home&amp;quot; function. Sends private user information to developer.] &lt;br /&gt;
|020711&lt;br /&gt;
|[http://www.myapi.co.uk/ Developer states Use version 1.3.4.1]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  mdigg   ==&lt;br /&gt;
|SQL I (not listed in JED)&lt;br /&gt;
|020711&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Calc Builder   ==&lt;br /&gt;
|sqli + ID&lt;br /&gt;
|180611&lt;br /&gt;
| [http://components.moonsoft.es/downloadcalcbuilder  dev security release 0.0.2]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Cool Debate    ==&lt;br /&gt;
|Cool Debate 1.03 LFI&lt;br /&gt;
|&lt;br /&gt;
| version [http://www.acoolsip.com/development/a-cool-debate.html 1.0.8 released.] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Scriptegrator Plugin 1.5.5==&lt;br /&gt;
|LFI&lt;br /&gt;
|140611&lt;br /&gt;
| [http://www.greatjoomla.com/news/index.html  Update - Core Design Scriptegrator plugin 2.0.9 &amp;amp;] 1.5.6&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Joomnik Gallery   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|&lt;br /&gt;
|[http://joomlacode.org/gf/project/joomnik/ developer update to 0.9.1]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  JMS fileseller   ==&lt;br /&gt;
|LFI &lt;br /&gt;
|0611&lt;br /&gt;
|[http://joommasters.com/commercial-extensions/components/jms-fileseller.html developer upgrade announcement to v1.1]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  sh404SEF   ==&lt;br /&gt;
|low-level XSS security issue&lt;br /&gt;
|300511&lt;br /&gt;
|[http://dev.anything-digital.com/Forum/Announcements/11147-sh404SEF-2.2.6-now-available-for-Joomla-1.5/ Dev upgrade statement to 2.2.6]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  JE Story submit    ==&lt;br /&gt;
|LFI/RFI &lt;br /&gt;
|&lt;br /&gt;
|[http://joomlaextensions.co.in/extensions/modules/je-content-menu.html?page=shop.product_details&amp;amp;flypage=flypage.tpl&amp;amp;product_id=77&amp;amp;category_id=13&amp;amp;vmcchk=1 developer states Version 1.8]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   FCKeditor   ==&lt;br /&gt;
|File Upload Vulnerability&lt;br /&gt;
|230511&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== KeyCaptcha    ==&lt;br /&gt;
|ID &lt;br /&gt;
|190511&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Ask A Question AddOn v1.1   ==&lt;br /&gt;
|SQLi&lt;br /&gt;
|160511&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Global Flash Gallery     ==&lt;br /&gt;
|flash-gallery.com xss &lt;br /&gt;
|130511&lt;br /&gt;
|[http://flash-gallery.com/help/joomla-extension/faq/security-update-0.5.0/ dev release 0.5.0 statement]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== com_google     ==&lt;br /&gt;
|LFI [http://freejoomlacomponent.appspot.com/ com_google]&lt;br /&gt;
|080511&lt;br /&gt;
|[http://freejoomlacomponent.appspot.com/securityrelease.html devs update to 1.5.1]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  docman   ==&lt;br /&gt;
|com-docman Input Validation Error &lt;br /&gt;
|160511&lt;br /&gt;
|[http://forum.joomla.org/viewtopic.php?p=2502904#p2502904 devs resolution statement, report for old version]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Newsletter Subscriber    ==&lt;br /&gt;
|XSS &lt;br /&gt;
|120511&lt;br /&gt;
|[http://mavrosxristoforos.com/joomla-extensions/free/newsletter-subscriber Deveopler update]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Akeeba   ==&lt;br /&gt;
|akkeba backup and joomlapack&lt;br /&gt;
|170411&lt;br /&gt;
|[https://www.akeebabackup.com/home/item/1091-akeeba-backup-3-2-7.html dev update to 3.2.7]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  Facebook Graph Connect   ==&lt;br /&gt;
|SID. call home device with user credentials&lt;br /&gt;
|120411&lt;br /&gt;
|[http://www.sikkimonline.info/security-notice dev update notice]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== booklibrary    ==&lt;br /&gt;
|SQLi ordasoft booklibrary&lt;br /&gt;
|180311&lt;br /&gt;
|[http://ordasoft.com/Book-Library/security-upgrade-instructions-for-book-library.html developer upgrade instructions]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== semantic    ==&lt;br /&gt;
|com semantic http://www.scms.es/joomla creates hidden admin users &lt;br /&gt;
|150311&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==  JOMSOCIAL 2.0.x 2.1.x   ==&lt;br /&gt;
|SID, open folders&lt;br /&gt;
|120311&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  flexicontent   ==&lt;br /&gt;
|forced 777, malicious files &lt;br /&gt;
|250311&lt;br /&gt;
|[http://www.flexicontent.org/home/item/192-flexicontent-154-is-finally-out.html devs resolve statement], [http://www.flexicontent.org/downloads/latest-version.html Changelog]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== jLabs Google Analytics Counter     ==&lt;br /&gt;
|jLabs Google Analytics Counter  SID&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==  xcloner   ==&lt;br /&gt;
|Unspecified&lt;br /&gt;
|260211&lt;br /&gt;
|[http://www.xcloner.com/xcloner-news/important-security-upgrade/ dev announcement of security release]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== smartformer    ==&lt;br /&gt;
|RFI&lt;br /&gt;
|230211 (repeat of 041110)&lt;br /&gt;
|[http://www.itoris.com/joomla-form-builder-smartformer.html v2.4.1 security fix for Joomla 1.5.x]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== xmap 1.2.10    ==&lt;br /&gt;
|Malicious payload in zip&lt;br /&gt;
|230211&lt;br /&gt;
|[http://joomla.vargas.co.cr/en/news/4-xmap/95-security-notice developer resolution notic]e Clean version available from [http://joomlacode.org/gf/project/xmap/frs/ joomlacode] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   Frontend-User-Access 3.4.1  ==&lt;br /&gt;
|Frontend-User-Access 3.4.1 from http://www.pages-and-items.com LFI&lt;br /&gt;
|030211&lt;br /&gt;
|update to [http://extensions.joomla.org/extensions/access-a-security/frontend-access-control/6874 Frontend-User-Access 3.4.2]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  com properties 7134   ==&lt;br /&gt;
| http://com-property.com/ malicious files in script&lt;br /&gt;
|&lt;br /&gt;
|[http://joomlacode.org/gf/project/property/frs/?action=FrsReleaseBrowse&amp;amp;frs_package_id=5815 Dev update statement]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  B2 Portfolio ==&lt;br /&gt;
|B2 portfolio 1.0 SQLi pulseextensions.com&lt;br /&gt;
|250111&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  allcinevid   ==&lt;br /&gt;
|SQLI http://extensions.joomla.org/extensions/multimedia/multimedia-players/video-players-a-gallery/15367&lt;br /&gt;
|220111&lt;br /&gt;
|[http://www.joomtraders.com/our-blog/allcinevid-1.0-sql-injection.html Developers resolution notice]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== People Component    ==&lt;br /&gt;
|People component http://www.ptt-solution.com/vmchk/people-component.html sqli&lt;br /&gt;
|150111&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Jimtawl    ==&lt;br /&gt;
|Jimtawl LFI &lt;br /&gt;
|251110&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   Maian Media SILVER  ==&lt;br /&gt;
|Maian Media SQLi&lt;br /&gt;
|151110&lt;br /&gt;
|Developer states unproven in free edition, paid/SILVER version is being upgraded. [http://www.aretimes.com/index.php?option=com_content&amp;amp;view=category&amp;amp;layout=blog&amp;amp;id=40&amp;amp;Itemid=113 dev article]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  alfurqan  ==&lt;br /&gt;
|alfurqan 1.5 sqli&lt;br /&gt;
|151110&lt;br /&gt;
|developer update [http://forums.islamis4u.com/index.php/topic%2c83.0.html statement] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  ccboard   ==&lt;br /&gt;
|[http://extensions.joomla.org/extensions/communication/forum/6823 ccboard XSS and SQLi]&lt;br /&gt;
|131110&lt;br /&gt;
| on my site at [http://codeclassic.org/component/content/article/1-latest-news/83-ccboard-13-released.html] Please find the respective update information&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   ProDesk v 1.5  ==&lt;br /&gt;
|LFI &lt;br /&gt;
|091110&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  sponsorwall   ==&lt;br /&gt;
|SQL injection pulseextensions.com&lt;br /&gt;
|011110&lt;br /&gt;
|developer  [http://demo.pulseextensions.com/sponsor-wall.html resolution notice]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Flip wall   ==&lt;br /&gt;
|SQL injection pulseextensions.com&lt;br /&gt;
|011110&lt;br /&gt;
| developer http://demo.pulseextensions.com/flip-wall.html update notice  [http://www.example.com link title]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Freestyle FAQ 1.5.6     ==&lt;br /&gt;
|http://freestyle-joomla.com/fssdownloads/viewcategory/2 Freestyle FAQ 1.5.6 ‎SQL Injection&lt;br /&gt;
|&lt;br /&gt;
|[http://freestyle-joomla.com/index.php?announceid=43 new version (1.9.0) is available which fixes] the security issues.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   iJoomla Magazine 3.0.1  ==&lt;br /&gt;
|iJoomla Magazine 3.0.1 RFI&lt;br /&gt;
|090910&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Clantools   ==&lt;br /&gt;
| &lt;br /&gt;
|http://www.joomla-clantools.de/downloads/doc_download/7-clantools-123.html clantool sqli&lt;br /&gt;
|090910&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  jphone   ==&lt;br /&gt;
|jphone LFI&lt;br /&gt;
|090910&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
==  PicSell    ==&lt;br /&gt;
|[http://vm.xmlswf.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=104&amp;amp;Itemid=131Picsell LFD, 777]&lt;br /&gt;
|020910&lt;br /&gt;
|new version [http://vm.xmlswf.com/picsell released 150312]  version number 11&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   Zoom Portfolio   ==&lt;br /&gt;
|SID&lt;br /&gt;
|020910&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   zina   ==&lt;br /&gt;
|[http://www.pancake.org/zina/ SQL Injection]&lt;br /&gt;
|020910&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Team&#039;s   ==&lt;br /&gt;
|[http://www.joomlamo.com Teams extension] SQL Injection &lt;br /&gt;
|120810&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Amblog    ==&lt;br /&gt;
|[http://robitbt.hu/jm/index.php?option=com_amdownloader&amp;amp;task=showfiles&amp;amp;pathid=8 Amblog] SQLi&lt;br /&gt;
|120810&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   wmtpic  ==&lt;br /&gt;
|www.webmaster-tips.net various&lt;br /&gt;
|010710&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Jomtube    ==&lt;br /&gt;
|http://www.jomtube.com/ SID&lt;br /&gt;
|220710&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Rapid Recipe    ==&lt;br /&gt;
|http://www.rapid-source.com Persistent XSS Vulnerability last known fix version 1.7.2 &lt;br /&gt;
|july 10,2010&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   Health &amp;amp; Fitness Stats   ==&lt;br /&gt;
|http://joomla-extensions.instantiate.co.uk/jcomponents/healthstats Persistent XSS Vulnerability july 10,2010 &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  staticxt   ==&lt;br /&gt;
|http://extensions.joomla.org/extensions/edition/custom-code-in-content/2184  no version number provided&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   quickfaq  ==&lt;br /&gt;
|http://www.schlu.net sqli&lt;br /&gt;
|090710&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==    Minify4Joomla  ==&lt;br /&gt;
|http://waltercedric.com/ LFI and xss&lt;br /&gt;
|090710&lt;br /&gt;
|No longer available to download&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==   IXXO Cart   ==&lt;br /&gt;
|http://www.php-shop-system.com/ SQLi LFI XSS Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|developer resolution [http://support.ixxoglobal.com/index.php?/News/NewsItem/View/22/ixxo-cart-new-release-v41190 notice] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  PaymentsPlus   ==&lt;br /&gt;
|http://paymentsplus.com.au/ 2.1.5 Blind SQL Injection Vulnerability&lt;br /&gt;
|090710 &lt;br /&gt;
|current version 2.20, 2.1.5 not listed on dev site&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  ArtForms   ==&lt;br /&gt;
|http://joomlacode.org/gf/project/jartforms/ ArtForms 2.1b7.2 RC2 Multiple Remote Vulnerabilities&lt;br /&gt;
|090710&lt;br /&gt;
| Old beta extension &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  autartimonial   ==&lt;br /&gt;
|autartica.be Sqli Vulnerability&lt;br /&gt;
|060710&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== eventcal 1.6.4    ==&lt;br /&gt;
|http://joomlacode.org/gf/project/eventcal/frs/ SQL I  last update 2006-12-31 on joomlacode&lt;br /&gt;
|040710&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== date converter    ==&lt;br /&gt;
|http://sourceforge.net/projects/date-converter/ sqli&lt;br /&gt;
|010710&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== real estate    ==&lt;br /&gt;
|http://www.opensourcetechnologies.com/demos/real-estate.html RFI&lt;br /&gt;
|210610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  cinema   ==&lt;br /&gt;
|SQL injection&lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   Jreservation  ==&lt;br /&gt;
|http://jforjoomla.com/ SQLi Vulnerability&lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   joomdocs  ==&lt;br /&gt;
|http://joomclan.com/index.php/JoomDocs/ xss vulnerability&lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   Live Chat    ==&lt;br /&gt;
|http://www.joompolitan.com/livechat.html Multiple Remote Vulnerabilities &lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Turtushout 0.11    ==&lt;br /&gt;
| http://www.turtus.org.ua/files?func=fileinfo&amp;amp;id=13 SQL Injection (again)&lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  BF Survey Pro Free   ==&lt;br /&gt;
|BF Survey Pro Free SQL Injection Exploit &lt;br /&gt;
|190610&lt;br /&gt;
|Product marker as retired by the developer&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  MisterEstate   ==&lt;br /&gt;
|http://www.misterestate.com/ Blind SQL Injection Exploit &lt;br /&gt;
|190610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  RSMonials    ==&lt;br /&gt;
|http://www.rswebsols.com/downloads/category/14-download-rsmonials-all?download=23%3Adownload-rsmonials-component XSS Exploit&lt;br /&gt;
|190610&lt;br /&gt;
|Believed to be 1.5.1 version&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Answers v2.3beta   ==&lt;br /&gt;
|Multiple Vulnerabilities http://extensions.joomla.org/extensions/communication/forum/12652&lt;br /&gt;
|180610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Gallery XML 1.1   ==&lt;br /&gt;
|Multiple Vulnerabilities&lt;br /&gt;
http://extensions.joomla.org/extensions/photos-a-images/photo-gallery/12504&lt;br /&gt;
|180610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  JFaq 1.2   ==&lt;br /&gt;
|JFaq 1.2 Multiple Vulnerabilities&lt;br /&gt;
|180610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Listbingo 1.3   ==&lt;br /&gt;
|Multiple Vulnerabilities&lt;br /&gt;
http://extensions.joomla.org/extensions/ads-a-affiliates/classified-ads/12062&lt;br /&gt;
|180610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Alpha User Points    ==&lt;br /&gt;
|www.alphaplug.com LFI&lt;br /&gt;
|180610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   recruitmentmanager  ==&lt;br /&gt;
|http://recruitment.focusdev.co.uk Upload Vulnerability&lt;br /&gt;
|130610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Info Line (MT_ILine)    ==&lt;br /&gt;
|http://extensions.joomla.org/extensions/news-display/news-tickers-a-scrollers/8425 reports of shell scripts in download file&lt;br /&gt;
|120610&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Ads manager  Annonce   ==&lt;br /&gt;
|http://joomla.clubnautiquemarine.fr/ &lt;br /&gt;
Upload Vulnerability&lt;br /&gt;
| 05/06/10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  lead article    ==&lt;br /&gt;
|http://www.leadya.co.il/ SQLi&lt;br /&gt;
|050610&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  djartgallery   ==&lt;br /&gt;
|http://www.design-joomla.eu Multiple Vul&lt;br /&gt;
|05/06/10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
== Gallery 2 Bridge    ==&lt;br /&gt;
|[http://trac.4theweb.nl/g2bridge g2bridge] LFI vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  jsjobs   ==&lt;br /&gt;
|[http://www.joomsky.com jsjobs] SQL Injection Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   JE Poll  ==&lt;br /&gt;
|http://slideshow.joomlaextensions.co.in/ SQL Injection Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  MediQnA   ==&lt;br /&gt;
|MediQnA LFI vulnerability version : v1.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==   JE Job  ==&lt;br /&gt;
|http://joomlaextensions.co.in/ LFI SQLi&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  SectionEx   ==&lt;br /&gt;
|Stack Ideas section Ex LFI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  ActiveHelper LiveHelp    ==&lt;br /&gt;
|XSS in [http://extensions.joomla.org/extensions/communication/chat/12492 LiveHelp] &lt;br /&gt;
|200510&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#cef2e0; color:black&amp;quot; |&lt;br /&gt;
==  JE Quotation Form   ==&lt;br /&gt;
|http://joomlaextensions.co.in/free-download/doc_download/11-je-quotation-form.html  LFI&lt;br /&gt;
|&lt;br /&gt;
|developers statement of [http://joomlaextensions.co.in/extensions/joomla-components/product/JE-Quote-Form resolution]  &#039;&#039;&#039;note&#039;&#039;&#039;, now known as [http://joomlaextensions.co.in/extensions/joomla-components/product/JE-Quote-Form JE Quote Form] &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  konsultasi   ==&lt;br /&gt;
|SQL Injection Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;  |&lt;br /&gt;
&lt;br /&gt;
==  Seber Cart    ==&lt;br /&gt;
|Local File Disclosure Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|[http://www.sebercart.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=158 Developer Update 140510]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  Camp26 Visitor    ==&lt;br /&gt;
|RFI www.camp26.biz&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==   JE Property  ==&lt;br /&gt;
|JE Property Finder Upload Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==   Noticeboard  ==&lt;br /&gt;
|Noticeboard for Joomla &amp;quot;controller&amp;quot; Local File Inclusion Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==SmartSite     ==&lt;br /&gt;
|SmartSite com_smartsite Local File Inclusion Vulnerability &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  htmlcoderhelper graphics   ==&lt;br /&gt;
|htmlcoderhelper graphics v1.0.6 LFI Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
== Ultimate Portfolio    ==&lt;br /&gt;
|Ultimate Portfolio  Local File Inclusion Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  Archery Scores   ==&lt;br /&gt;
| [http://lispeltuut.org/ Archery Scores (com_archeryscores) v1.0.6 LFI Vulnerability]&lt;br /&gt;
&lt;br /&gt;
|210410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  ZiMB Manager   ==&lt;br /&gt;
|Joomla Component ZiMB Manager Local File Inclusion Vulnerability&lt;br /&gt;
|210410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  Matamko   ==&lt;br /&gt;
|Matamko Local File Inclusion Vulnerability&lt;br /&gt;
|210410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  Multiple Root   ==&lt;br /&gt;
|Multiple Root Local File Inclusion Vulnerability http://joomlacomponent.inetlanka.com/&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  Multiple Map   ==&lt;br /&gt;
|Multiple Map Local File Inclusion Vulnerability joomlacomponent.inetlanka.com&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==   Contact Us Draw Root Map  ==&lt;br /&gt;
|Draw Root Map Local File Inclusion Vulnerability joomlacomponent.inetlanka.com&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==  iF surfALERT   ==&lt;br /&gt;
|[http://www.inertialfate.za.net/ iF surfALERT] Local File Inclusion Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==   GBU FACEBOOK  ==&lt;br /&gt;
|GBU FACEBOOK SQL injection vulnerability http://www.gbugrafici.nl/gbufacebook/&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
&lt;br /&gt;
==   jnewspaper  ==&lt;br /&gt;
|jnewspaper (cid) SQL Injection Vulnerability&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;   |&lt;br /&gt;
== MT Fire Eagle ==&lt;br /&gt;
&lt;br /&gt;
|LFI http://joomlacode.org/gf/project/jfireeagle/frs/ http://www.moto-treks.com&lt;br /&gt;
| 190410&lt;br /&gt;
| product considered retired and to be replaced by dev&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  Sweetykeeper   ==&lt;br /&gt;
|Sweetykeeper Local File Inclusion Vulnerability  http://www.joomlacorner.com/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  jvehicles   ==&lt;br /&gt;
|SQL Injection http://jvehicles.com&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  worldrates   ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  cvmaker   ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  advertising   ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==   horoscope  ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==   webtv  ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  diary   ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  Memory Book   ==&lt;br /&gt;
|http://dev.pucit.edu.pk/&lt;br /&gt;
|120410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==  JprojectMan   ==&lt;br /&gt;
|LFI http://extensions.joomla.org/extensions/communities-a-groupware/project-a-task-management/5676&lt;br /&gt;
|110410&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==   econtentsite  ==&lt;br /&gt;
|LFI&lt;br /&gt;
|040410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==    Jvehicles ==&lt;br /&gt;
|ID&lt;br /&gt;
|040410&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==    gigcalender   ==&lt;br /&gt;
&lt;br /&gt;
|SQLi [http://extensions.joomla.org/extensions/calendars-a-events/events/97)http://extensions.joomla.org/extensions/calendars-a-events/events/97 gigcalender]&lt;br /&gt;
|13 march 2010&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==    heza content   ==&lt;br /&gt;
|SQLi [http://extensions.joomla.org/extensions/structure-a-navigation/sections-a-categories/10427)http://extensions.joomla.org/extensions/structure-a-navigation/sections-a-categories/10427  heza content]&lt;br /&gt;
|13 march 2010&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==  SqlReport   ==&lt;br /&gt;
|Sqlreport has a sql/RFI exploit. awaiting confirmation on exact developer.&lt;br /&gt;
|Feb 20&lt;br /&gt;
|&#039;&#039;&#039;Not Known&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Yelp ==&lt;br /&gt;
| SQLi - Unable to locate developer. Possibly a custom extension.&lt;br /&gt;
|Feb 01 &lt;br /&gt;
|style=&amp;quot;background:red; color:white&amp;quot; | &#039;&#039;&#039;  Not Known&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
==     ==&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&amp;lt;endFeed /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This list is change protected, for updates or additions [http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=28000 Mandville] or [http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=87230 lafrance]&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Codes used ==&lt;br /&gt;
SQLi - SQL injection [http://en.wikipedia.org/wiki/Code_injection#SQL_injection wikipedia]&lt;br /&gt;
&lt;br /&gt;
LFI - Local File Inclusion [http://www.scribd.com/doc/6498408/Remote-and-Local-File-Inclusion-Explained scribd]&lt;br /&gt;
&lt;br /&gt;
RFI - Remote file inclusion [http://en.wikipedia.org/wiki/Remote_File_Inclusion wikipedia]&lt;br /&gt;
&lt;br /&gt;
DT - Directory Traversal [http://en.wikipedia.org/wiki/Directory_traversal wikipedia] (incl 777 folders)&lt;br /&gt;
&lt;br /&gt;
ID = Information Disclosure: account information or sensitive information publicly viewable, or passed to 3rd party without knowledge&lt;br /&gt;
&lt;br /&gt;
== Future Actions &amp;amp; WIP ==&lt;br /&gt;
&lt;br /&gt;
[http://feeds.joomla.org/JoomlaSecurityVulnerableExtensions RSS feed] completed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
to feed VEL direct to twitter&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
The RSS feed is currently fed by item entry order and not by date fixed. &lt;br /&gt;
List as discussed in  [[jtopic:455746]] by [http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=67439 PhilD] editing by [http://forum.joomla.org/memberlist.php?mode=viewprofile&amp;amp;u=28000 Mandville]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
[[Category:Component Management]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Magic_quotes_and_security&amp;diff=76694</id>
		<title>Talk:Magic quotes and security</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Magic_quotes_and_security&amp;diff=76694"/>
		<updated>2012-10-17T17:56:54Z</updated>

		<summary type="html">&lt;p&gt;Phild: added discussion info about Magic Quotes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Magic Quotes:&lt;br /&gt;
&lt;br /&gt;
: Warning: &lt;br /&gt;
:: This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.&lt;br /&gt;
&lt;br /&gt;
:: As of Joomla 3.0 it is recommended to have magic quotes off see technical requirements&lt;br /&gt;
:: http://www.joomla.org/technical-requirements.html&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76430</id>
		<title>Talk:Security Checklist/Where can you learn more about file permissions?</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76430"/>
		<updated>2012-10-12T11:59:48Z</updated>

		<summary type="html">&lt;p&gt;Phild: added response&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Release Statement.&lt;br /&gt;
Please feel free to make use of documents produced by myself in any format (electronic, hardcopy or public presentation) as required for the Joomla! project. All copyright is released to the Joomla! Project to re-use or publish the content of these posts under any license, as suits the projects needs.&lt;br /&gt;
&lt;br /&gt;
Regards,&lt;br /&gt;
Russ Winter&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
why after all the effort to update the documentation and get the permissions for the documentation to be used does any one feel it is justified to mark these for deletion?&lt;br /&gt;
The links/resources as posted are not just for INSTALLATION they are for general security, extensions and various other aspects of joomla administration.&lt;br /&gt;
I vote for complete rejection of the proposal for deletion and reinstatement of the original documentation otherwise its a complete waste of volunteers time  --[[User:Mandville|Mandville]] ([[User talk:Mandville|talk]]) 18:36, 11 October 2012 (CDT)&lt;br /&gt;
:I think you misunderstand, and one thing I would never do or advocate is wasting volunteer&#039;s time. A wiki is supposed to be collaborative, but it needs some type of organisation so others can use it as an easy to use resource.&lt;br /&gt;
&lt;br /&gt;
:I did not propose to delete the linked pages, but this page specifically. Three links on a page? Add them manually and/or dynamically to [[Joomla Installation Resources]] and actually they are already listed on a Security page - [[Security_and_Performance_FAQs#Where can I learn more about file permissions?|Security_and_Performance_FAQs]]. The linking of the pages can be added to any page where appropriate.&lt;br /&gt;
&lt;br /&gt;
:There should also be a [[Joomla! Server Resources and Configurations]] or something similar page which ties together all the articles on server setups, configurations, .htaccess, permissions, LAMP, WAMP, database setups, etc... There are a lot of articles devoted to all of these subjects, but most linkings tie back to category pages or someone must preform hard searches to find exactly what needs to be found. Even more needed as Joomla 3.x has more options, see [[Technical requirements]] and notice more options for Joomla! 3.&lt;br /&gt;
 &lt;br /&gt;
:As far as the links on this page, I suggested a rename change from Windows Permissions Primer to something like &#039;&#039;&#039;Joomla! and Windows file permissions&#039;&#039;&#039; or perhaps just &#039;&#039;&#039; Windows file permissions explained&#039;&#039;&#039;. Some people might not understand the meaning of Primer in the title. The Unix title is really called [[How do UNIX file permissions work?]], but is being linked with Primer in the link. Might as well mention [[Using phpSuExec]], no categories on the page. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 22:50, 11 October 2012 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think the issue is some saw the &amp;quot;this page marked for deletion&amp;quot; notice and as the link page and the linked to pages are fairly active in that we refer people to them, were afraid some overzealous person was going to delete the page. Perhaps it would be/would have been better to place a different type of notice on the page&lt;br /&gt;
&lt;br /&gt;
&amp;quot;and actually they are already listed on a Security page - [[Security_and_Performance_FAQs#Where can I learn more about file permissions?|Security_and_Performance_FAQs]].&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The pages have been this way since about 2008. The three topics were originally in the Joomla docs., but someone removed and linked to the information that was re-posted on an external site. This is a violation of the wiki rules as Joomla has defined them. This was only recently discovered and determined that there was a violation (we allow some external links) and the page links were not approved. Whomever removed those docs pages created the 3 link page. The links on the security faq page you mention was a remnant of where the three documents had links to at some point. At request I removed the external links, kept the existing &amp;quot;link&amp;quot; page, and re created two of the three pages locally. It was also requested that any other pages I found with these same external links also be treated the same. There was a page remnant on the security faq with 1 link on it. I created the other two links to match the other page.&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think there is a big problem with reorganizing things some, but in my opinion, the security and performance faq&#039;s page is not going to get read as it is to long and contains to many links. More than one page of links and no one will read it or scroll it. If you want a project then make those faqs more organized and easier to use. -- [[User:Phild|Phil DeGruy]] ([[User talk:Phild|talk]])&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=76275</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=76275"/>
		<updated>2012-10-09T01:11:31Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* php being run as an apache module. */ fixed title and link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site. The recommended setting for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. The safest method is to turn &#039;&#039;magic_quotes_gpc&#039;&#039; off and avoid all poorly-written extensions, period. &lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores this setting and works fine either way. &lt;br /&gt;
For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
      magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This is a valid but incomplete solution to a deeper problem and provides a false sense of security. See the official PHP site for an explanation of this issue. http://php.net/manual/en/features.safe-mode.php&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server. For more information, see [http://www.zend.com/manual/security.globals.php ZEND Chapter 29. Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_fopen===&lt;br /&gt;
&lt;br /&gt;
: Don&#039;t use PHP &#039;&#039;allow_url_fopen&#039;&#039;. This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons.&lt;br /&gt;
&lt;br /&gt;
      allow_url_fopen = 0&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
== Choose A Checklist==&lt;br /&gt;
# [[Security Checklist 1 - Getting Started|Getting Started]] &lt;br /&gt;
# [[Security Checklist 2 - Hosting and Server Setup|Hosting and Server Setup]]&lt;br /&gt;
# [[Security Checklist 3 - Testing and Development|Testing and Development]]&lt;br /&gt;
# [[Security Checklist 4 - Joomla Setup|Joomla Setup]]&lt;br /&gt;
# [[Security Checklist 5 - Site Administration|Site Administration]]&lt;br /&gt;
# [[Security Checklist 6 - Site Recovery|Site Recovery]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=76274</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=76274"/>
		<updated>2012-10-09T01:08:53Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* php being run as an apache module. */ fixed title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP Being Run as an Apache Module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site. The recommended setting for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. The safest method is to turn &#039;&#039;magic_quotes_gpc&#039;&#039; off and avoid all poorly-written extensions, period. &lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores this setting and works fine either way. &lt;br /&gt;
For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
      magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This is a valid but incomplete solution to a deeper problem and provides a false sense of security. See the official PHP site for an explanation of this issue. http://php.net/manual/en/features.safe-mode.php&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server. For more information, see [http://www.zend.com/manual/security.globals.php ZEND Chapter 29. Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_fopen===&lt;br /&gt;
&lt;br /&gt;
: Don&#039;t use PHP &#039;&#039;allow_url_fopen&#039;&#039;. This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons.&lt;br /&gt;
&lt;br /&gt;
      allow_url_fopen = 0&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
== Choose A Checklist==&lt;br /&gt;
# [[Security Checklist 1 - Getting Started|Getting Started]] &lt;br /&gt;
# [[Security Checklist 2 - Hosting and Server Setup|Hosting and Server Setup]]&lt;br /&gt;
# [[Security Checklist 3 - Testing and Development|Testing and Development]]&lt;br /&gt;
# [[Security Checklist 4 - Joomla Setup|Joomla Setup]]&lt;br /&gt;
# [[Security Checklist 5 - Site Administration|Site Administration]]&lt;br /&gt;
# [[Security Checklist 6 - Site Recovery|Site Recovery]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=76273</id>
		<title>Security Checklist/Hosting and Server Setup</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Hosting_and_Server_Setup&amp;diff=76273"/>
		<updated>2012-10-09T01:07:54Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* php being run as an apache module. */ added local links to section, replacing external links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
== Choose a Qualified Hosting Provider ==&lt;br /&gt;
&lt;br /&gt;
===The most important decision===&lt;br /&gt;
: Probably no decision is more critical to site security than the choice of hosts and servers. However, due to the wide variety of hosting options and configurations, it&#039;s not possible to provide a complete list for all situations. Check this unbiased [http://resources.joomla.org/directory/support-services/hosting.html list of recommended hosts]who fully meet the security requirements of a typical Joomla site. ([[Security_and_Performance_FAQs#How_do_I_choose_a_quality_hosting_provider.3F|FAQ]])&lt;br /&gt;
&lt;br /&gt;
===Shared server risks===&lt;br /&gt;
: If you are on a tight budget and your site does not process highly confidential data, you can probably get by with a shared server, but you must understand the unavoidable risks. Most of the tips listed below are appropriate for securing sites on shared server environments.&lt;br /&gt;
&lt;br /&gt;
===Avoid sloppy server configurations===&lt;br /&gt;
: For a real eye-opener, [http://www.nexen.net/articles/dossier/php_configuration_statitstics.php read this report] on thousands of sites that allowed Google to index the results of phpinfo(). Don&#039;t make this mistake on your site! The report includes alarming statistics on the percentage of sites that use deprecated settings such as register_globals ON or that don&#039;t have open_basedir set at all: By the way, if &#039;&#039;phpini&#039;&#039; and &#039;&#039;register_globals&#039;&#039; are unfamiliar terms you are probably not ready to securely manage your own site.&lt;br /&gt;
&lt;br /&gt;
==Configuring Apache==&lt;br /&gt;
&lt;br /&gt;
===Use Apache .htaccess===&lt;br /&gt;
&#039;&#039;See also [[htaccess examples (security)|.htaccess examples]]&#039;&#039;&lt;br /&gt;
: Block typical exploit attempts with local Apache &#039;&#039;.htaccess&#039;&#039; files. This option is not enabled on all servers. Check with your host if you run into problems. Using &#039;&#039;.htaccess&#039;&#039;, you can password protect sensitive directories, such as administrator, restrict access to sensitive directories by IP Address, and depending on your server&#039;s configuration, you may be able to increase security by switching from PHP4 to PHP5.&lt;br /&gt;
&lt;br /&gt;
: Joomla ships with a [[preconfigured .htaccess]] file, but *you* need to choose to use it. The file is called htaccess.txt. To use it, rename it to .htaccess and place it in the root of your site using FTP. One important point to note is that as the distributed file is called htaccess.txt and the live file on your site is called .htaccess, the file your site actually uses is NOT updated when you update your site to use to a new version of Joomla. You must manually make the changes to use the new file version. There are significant changes in the file distributed with 1.5.23 onwards and 1.6.2 onwards.&lt;br /&gt;
&lt;br /&gt;
: Consider following the &amp;quot;Least Privilege&amp;quot; principle for running PHP using tools such as PHPsuExec, php_suexec or suPHP. (Note: These are advanced methods that require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== php being run as an apache module. ===&lt;br /&gt;
&lt;br /&gt;
This causes ownership issues and thus permission problems which will lead to security issues. It is better to select a server setup/host that runs php as a cgi process (such as cgi-fcgi) along with using phpSuExec or a similar configuration. &lt;br /&gt;
&lt;br /&gt;
The two best tutorials and explanations on permissions, ownerships and their relations are from this official Joomla doc page&lt;br /&gt;
&lt;br /&gt;
[[Where can you learn more about file permissions?]] &lt;br /&gt;
&lt;br /&gt;
Specific topics to read would be the following two:&lt;br /&gt;
&lt;br /&gt;
[[Unix Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
and for information on phpSuExec and similar implementations:&lt;br /&gt;
&lt;br /&gt;
[[Using phpSuExec]]&lt;br /&gt;
&lt;br /&gt;
===Use Apache mod_security===&lt;br /&gt;
: Configure Apache mod_security and mod_rewrite filters to block PHP attacks. See [http://www.google.com/search?q=apache%20mod_security Google search for mod_security] and [http://www.google.com/search?q=apache%20mod_rewrite Google search for mod_rewrite]. (Note: These are advanced methods that usually require agreement and coordination with your hosting provider. Such options are enabled or disabled on a server-wide basis and are not individually adjustable on shared servers.)&lt;br /&gt;
&lt;br /&gt;
==Configuring MySQL== &lt;br /&gt;
&lt;br /&gt;
===Secure the database===&lt;br /&gt;
: Be sure MySQL accounts are set with limited access. The initial install of MySQL is insecure and careful configuration is required. (See the [http://dev.mysql.com/doc/ MySQL Manuals]) Note: This item applies only to those administering their own servers, such as dedicated servers. Users of shared servers are dependent on their hosting provider to set proper database security.)&lt;br /&gt;
&lt;br /&gt;
== Configuring PHP==&lt;br /&gt;
&lt;br /&gt;
===Understand how PHP works===&lt;br /&gt;
: Understand how to work with the php.ini file, and how PHP configurations are controlled. Study the [http://us3.php.net/manual/en/ini.php#ini.list Official List of php.ini Directives] at http://www.php.net, and the well-documented default php.ini file included with every PHP install. Here is the [http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co latest default php.ini file] on the official PHP site.&lt;br /&gt;
&lt;br /&gt;
===Use PHP5===&lt;br /&gt;
PHP 4 is deprecated and has become obsolete. Some hosting providers still have both available on servers to support outdated scripts. Joomla requires PHP5. (See [http://www.joomla.org/technical-requirements.html/ Joomla Requirements])&lt;br /&gt;
&lt;br /&gt;
===Use local php.ini files===&lt;br /&gt;
: On shared servers you can&#039;t edit the main php.ini file, but you may be able to add custom, local php.ini files. If so, you&#039;ll need to copy the php.ini files to every sub-directory that requires custom settings. Luckily a [http://tips-scripts.com/free set of scripts at B &amp;amp; T Scripts and Tips] can do the hard work for you.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;There are a few important things to keep in mind.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files &#039;&#039;&#039;&#039;&#039;only&#039;&#039;&#039;&#039;&#039; have an effect if your server is configured to use them. This includes a &#039;&#039;php.ini&#039;&#039; file in your &#039;&#039;http_root&#039;&#039; directory. You can test whether or not these file affect your site by setting an obvious directive in the local &#039;&#039;php.ini&#039;&#039; file to see if it affects your site.&lt;br /&gt;
# Local &#039;&#039;php.ini&#039;&#039; files only affect &#039;&#039;.php&#039;&#039; files that are located within the same directory (or included() or required() from those files). This means that there are normally only two Joomla! directories in which you would want to place a &#039;&#039;php.ini&#039;&#039; file. They are your &#039;&#039;http_root&#039;&#039;(your actual directory name may vary), which is where Joomla&#039;s Front-end &#039;&#039;index.php&#039;&#039; file is located, and the Joomla! &#039;&#039;administrator&#039;&#039; directory, which is where the Back-end administrator &#039;&#039;index.php&#039;&#039; file is located. Other directories that don&#039;t have files called via the Web do not need local &#039;&#039;php.ini&#039;&#039; files.&lt;br /&gt;
# If you have a &#039;&#039;php.ini&#039;&#039; file in every directory, some script probably did this for you. If you didn&#039;t intend it to happen, you probably should root them out, but given #2 above, you probably only have to panic about the &#039;&#039;php.ini&#039;&#039; files in &#039;&#039;http_root&#039;&#039; and the &#039;&#039;administrator&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Use PHP disable_functions===&lt;br /&gt;
: Use &#039;&#039;disable_functions&#039;&#039; to disable dangerous PHP functions that are not needed by your site. Here is a typical setup for a Joomla! site:&lt;br /&gt;
&lt;br /&gt;
      disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
===Consider Using PHP open_basedir===&lt;br /&gt;
: You &#039;&#039;might&#039;&#039; consider enabling &#039;&#039;open_basedir&#039;&#039;.  This directive limits the files that can be opened by PHP to the specified directory-tree. This directive is NOT affected by whether Safe Mode is ON or OFF. &lt;br /&gt;
&lt;br /&gt;
: The restriction specified with open_basedir is a prefix, not a directory name. This means that &#039;&#039;open_basedir = /dir/incl&#039;&#039; allows access to &#039;&#039;/dir/include&#039;&#039; and &#039;&#039;/dir/incls&#039;&#039; if they exist. To restrict access to only the specified directory, end with a slash. For more information, see [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode PHP Security and Safe Mode Configuration Directives].&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html&lt;br /&gt;
&lt;br /&gt;
: Additionally, if &#039;&#039;open_basedir&#039;&#039; is set it may be necessary to set PHP &#039;&#039;upload_tmp_dir&#039;&#039; configuration directive to a path that falls within the scope of &#039;&#039;open_basedir&#039;&#039; or, alternatively, add the &#039;&#039;upload_tmp_dir&#039;&#039; path to &#039;&#039;open_basedir&#039;&#039; using the appropriate path separator for the host system.&lt;br /&gt;
&lt;br /&gt;
     open_basedir = /home/users/you/public_html:/tmp&lt;br /&gt;
&lt;br /&gt;
: PHP will use the system&#039;s temporary directory when &#039;&#039;upload_tmp_dir&#039;&#039; is not set or when it is set but the directory does not exist, therefore it may be necessary to add it to &#039;&#039;open_basedir&#039;&#039; as above to avoid uploading errors within Joomla.&lt;br /&gt;
&lt;br /&gt;
===Adjust magic_quotes_gpc===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Adjust the &#039;&#039;magic_quotes_gpc&#039;&#039; directive as needed for your site. The recommended setting for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. The safest method is to turn &#039;&#039;magic_quotes_gpc&#039;&#039; off and avoid all poorly-written extensions, period. &lt;br /&gt;
&lt;br /&gt;
: Joomla! 1.5 ignores this setting and works fine either way. &lt;br /&gt;
For more information, see either [http://docs.joomla.org/Magic_quotes_and_security Magic quotes and security] or &lt;br /&gt;
[http://php.net/magic_quotes PHP Manual, Chapter 31. Magic Quotes].&lt;br /&gt;
&lt;br /&gt;
      magic_quotes_gpc = 1&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP safe_mode===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Relying on this feature is highly discouraged. Avoid the use of PHP safe_mode. This is a valid but incomplete solution to a deeper problem and provides a false sense of security. See the official PHP site for an explanation of this issue. http://php.net/manual/en/features.safe-mode.php&lt;br /&gt;
&lt;br /&gt;
      safe_mode = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP register_globals===&lt;br /&gt;
: &#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;This PHP feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0&#039;&#039;&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Automatically registering global variables was probably one of the dumbest decisions the developers of PHP made. This directive determines whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables where they become immediately available to all PHP scripts, and where they can easily overwrite your own variable if you&#039;re not careful. Luckily, the PHP developers long since realized the mistake and have deprecated this &#039;feature&#039;. &lt;br /&gt;
&lt;br /&gt;
: If your site is on a shared server with a hosting provider that insists &#039;&#039;register_globals&#039;&#039; must be on, you should be very worried. Although you can often turn register_globals off for your own site with a local php.ini file, this adds little security as other sites on the same server remain vulnerable to attacks which can then launch attacks against your site from within the server. For more information, see [http://www.zend.com/manual/security.globals.php ZEND Chapter 29. Using Register Globals].&lt;br /&gt;
&lt;br /&gt;
      register_globals = 0&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t use PHP allow_url_fopen===&lt;br /&gt;
&lt;br /&gt;
: Don&#039;t use PHP &#039;&#039;allow_url_fopen&#039;&#039;. This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note: This can only be set in php.ini due to security reasons.&lt;br /&gt;
&lt;br /&gt;
      allow_url_fopen = 0&lt;br /&gt;
&lt;br /&gt;
==File permissions==&lt;br /&gt;
If a joomla installation is hosted on apache with mod_php, then all virtual hosts on that server run in the same context as your joomla code.  If the files are owned by some other user than &#039;nobody&#039; or &#039;wwwrun&#039;, the safest permissions are those which &#039;&#039;&#039;prevent&#039;&#039;&#039; changes to the joomla code, unless via an authorised channel (e.g. FTP):&lt;br /&gt;
*DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
*Files: 644&lt;br /&gt;
*Directories: 755 (711 if you are paranoid, but not for directories which need to be listed) (owner: some user)&lt;br /&gt;
&lt;br /&gt;
With these permissions set, you will need to use FTP to update your Joomla installation.  Not all modules support this.  Remove modules which do not support FTP upgrades.&lt;br /&gt;
Other processes running under mod_php can read &#039;&#039;&#039;your&#039;&#039;&#039; configuration.php.  You can frustrate automated hacks by renaming this file.  You should not store your FTP password in your configuration file on such hosts, as your account &#039;&#039;will&#039;&#039; be compromised.&lt;br /&gt;
&lt;br /&gt;
If a joomla installation is hosted on apache with fast-cgi, suphp or cgi that runs as a different user, then you should set your permissions as follows:&lt;br /&gt;
* DocumentRoot directory: 750 (e.g. public_html)&lt;br /&gt;
* PHP files: 600 (400 if you are truly paranoid)&lt;br /&gt;
* HTML and image files: 644 (444 if you are truly paranoid)&lt;br /&gt;
* Directories: 755 (711 if you are paranoid, but not for directories which need to be listed)&lt;br /&gt;
&lt;br /&gt;
==Setup a backup and recovery process==&lt;br /&gt;
===The most important rule:&#039;===&lt;br /&gt;
: Thou shalt at all time be able to return your site to a previous working state through regular use of a strong, off-site backup and recovery process. Be sure your backup and recovery process is in place and tested BEFORE you go live. This is the single best way (and often the only way) to recover from such inevitable catastrophes as:&lt;br /&gt;
&lt;br /&gt;
# A compromised/cracked site.&lt;br /&gt;
# Broken site due to a faulty upgrade.&lt;br /&gt;
# Hardware failure, such as dead hard drives, power failures, server theft, etc.&lt;br /&gt;
# Authoritarian government intervention. (More common than some think.)&lt;br /&gt;
# Needing to quickly relocate to a new server or hosting provider.&lt;br /&gt;
&lt;br /&gt;
== Choose A Checklist==&lt;br /&gt;
# [[Security Checklist 1 - Getting Started|Getting Started]] &lt;br /&gt;
# [[Security Checklist 2 - Hosting and Server Setup|Hosting and Server Setup]]&lt;br /&gt;
# [[Security Checklist 3 - Testing and Development|Testing and Development]]&lt;br /&gt;
# [[Security Checklist 4 - Joomla Setup|Joomla Setup]]&lt;br /&gt;
# [[Security Checklist 5 - Site Administration|Site Administration]]&lt;br /&gt;
# [[Security Checklist 6 - Site Recovery|Site Recovery]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
[[Category:Security Checklist]]&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_and_Performance_FAQs&amp;diff=76272</id>
		<title>Security and Performance FAQs</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_and_Performance_FAQs&amp;diff=76272"/>
		<updated>2012-10-09T00:47:04Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Where can I learn more about file permissions? */ added internal links replacing external links (same content)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Is GNU and Open Source software worth the costs and risks?==&lt;br /&gt;
&lt;br /&gt;
It&#039;s difficult, if not impossible, to argue against the value proposition of GNU and Open Source software, although [http://www.catb.org/~esr/halloween/ some have tried]. Due to zero licensing fees, lower administrative overhead, high-quality code, security releases that are distributed in minutes or hours rather than months or marketing cycles, and free online support from thousands of like-minded developers and users, GNU and Open Source offerings are often the best solution. The math is really quite compelling: &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;Applications&#039;&#039;&#039; !! &#039;&#039;&#039;Industry Leader&#039;&#039;&#039; !! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;Cost&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GNU/Linux&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Apache Web Server&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| MySQL Relational Database&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| PHP Scripting Language&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Content Management System&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Thousands of Joomla Extensions&lt;br /&gt;
| Varies&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Support&#039;&#039;&#039; !! &#039;&#039;&#039;Relative Quality&#039;&#039;&#039; !! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;Cost&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Project Leadership Team&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Forge&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Online Forums&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Documentation&lt;br /&gt;
| Medium&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Thousands of Online Volunteers&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Paid Professional Support&lt;br /&gt;
| Widely Available&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;Total&#039;&#039;&#039; !! &amp;amp;nbsp; !! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==What is the Joomla! Administrator&#039;s Security Checklist?==&lt;br /&gt;
&lt;br /&gt;
The [[Security Checklist 1 - Getting Started|Security Checklist]] is a concise selection of the best tips and tricks from the many contributors in the Joomla Security Forums. Review this list BEFORE you install Joomla for the first time.&lt;br /&gt;
&lt;br /&gt;
==What are the top 10 stupidest Joomla! security tricks?==&lt;br /&gt;
A very good question, and sadly one that many did not ask in time. We proudly present the [[Top 10 Stupidest Administrator Tricks]].&lt;br /&gt;
&lt;br /&gt;
==How do I choose a quality hosting provider?==&lt;br /&gt;
&lt;br /&gt;
The following is a short list of security-related requirements. Depending on your specific needs, you may have many other security requirements such as shell access, cron access, SSL server, etc.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Choose *NIX:&#039;&#039;&#039; Joomla! requires at least PHP and MySQL to run. Because Apache/PHP/MySQL run best on UNIX or GNU/LINUX servers, choose a host that offers these options. &lt;br /&gt;
* &#039;&#039;&#039;Use Secure FTP:&#039;&#039;&#039; Choose a host that requires SFTP (Secure FTP) for transferring files. This prevents others from snooping your user name and password from packets as they travel over the Internet.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Set PHP register_globals OFF:&#039;&#039;&#039; The most security conscious hosts turn PHP&#039;s Register Globals directive OFF by default. The next best allow you to turn it off in local .htaccess or php.ini files. A host that requires you to run a site with Register Globals ON should be avoided. This is true for any PHP enabled site, whether or not you are running Joomla!. There is a legitimate argument to be made by hosts for keeping Register Globals ON for PHP4 sites. This is that it would break too much legacy code. This argument should not be accepted for a PHP5 installation. Beginning with PHP5, the official PHP recommendation was to keep Register Globals is OFF. Note that beginning with PHP6, there will not even be a Register Globals setting, so don&#039;t get caught in a Register Globals backwater. Modify your code to work without Register Globals, and choose a host that encourages such practices.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Stay up-to-date:&#039;&#039;&#039; Choose a host that stays up-to-date with the latest stable versions of core applications, including the operating system, database, and [http://www.php.net/ PHP].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Avoid cheap shared servers:&#039;&#039;&#039; Be sure users on your shared server can&#039;t view each others files and databases, for example through shell accounts and cpanels.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proactive server management:&#039;&#039;&#039; Choose a host that provides real information about security compromises, rather than simply shutting your site down. Check their user forums for evidence of how they&#039;ve responded to cracks in the past. A good host may for example, inform you immediately that a security breach has occurred and will quarantine the problem file for you, while leaving it there for further investigation. A poor host will shut your site down and provide very limited information on why. Watch out! All too many do this.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Require raw log access:&#039;&#039;&#039; Be sure you have access to raw server logs. Reading these logs is a vital part of site security and recovery.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Performance matters:&#039;&#039;&#039; Choose a host that limits the number of users per machine and the average CPU load per machine to some reasonable number (depending on hardware). Be sure they proactively move user sites as needed to balance load. Check the number of domains on a server using reverse IP lookup.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Data center:&#039;&#039;&#039; Choose a host that manages it&#039;s own data center. Check the data center infrastructure, such as redundant Internet access, hot swappable backups, full daily backups, environment and access controls, emergency generators, etc.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Know your neighbors:&#039;&#039;&#039; Check that your host is not at risk of having its IP addresses blocked because it hosts SPAM sites.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Visit the Joomla Resources Directory (JRD) [http://resources.joomla.org/directory/support-services/hosting.html hosting section]:&#039;&#039;&#039;  If you are looking for a Joomla Host, please ensure you make your own investigations as to the services offered and whether they suit your needs or not.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Grow with your site:&#039;&#039;&#039; As sites grow in complexity, resource requirements, and security requirements, they may need to be moved off of a shared server environment. At that point, good options include, 1) &#039;&#039;&#039;dedicated servers&#039;&#039;&#039; offer the best possible security and performance, but at the highest expense, 2) &#039;&#039;&#039;virtual servers&#039;&#039;&#039; offer almost all the advantages of a dedicated server, but the hardware and configuration cost is shared among multiple virtual servers.&lt;br /&gt;
&lt;br /&gt;
==What are the best practices for site backups?==&lt;br /&gt;
&lt;br /&gt;
: There are three traditional backup types--full, cumulative and differential.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full Backups&#039;&#039;&#039; &lt;br /&gt;
: A complete backup of all associated files and database at a known point in time.&lt;br /&gt;
&lt;br /&gt;
: Both of these are considered Incremental backups, they can be used independently of each other or in conjunction with each other but always relate back to a FULL backup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cumulative Backups&#039;&#039;&#039; &lt;br /&gt;
: This is a backup of the differences since the last FULL backup, so each cumulative backup gets bigger each cycle as it is also backing up data previously backup, since the last FULL backup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Incremental Backups&#039;&#039;&#039; &lt;br /&gt;
: This is a backup of the changes since the previous backup of any type, i.e., full, cumulative, or incremental.&lt;br /&gt;
&lt;br /&gt;
: If you site is not too large, then FULL backups are the way to go, once a week at least. If your content changes quite regularly or more importantly cannot be recreated or is too costly to recreate, once a night or more may be more effective.&lt;br /&gt;
&lt;br /&gt;
: If time, server resources, or the rate of data change is too high to successfully obtain a FULL backup every night then the incremental backups are needed.&lt;br /&gt;
&lt;br /&gt;
: If you choose to use a cumulative backup following a weekly full, the backups each night will run quicker than a full backup, however as the week progresses, each nightly cumulative backup will increase in size and time, due to not only backing up the changes since last night&#039;s backup, but it also backing up all changes each night and previous nights since the last full backup was made. The benefit of this type of backup, in conjunction with full backups is the speed of restoration. To restore, you now only need to recover the most recent full and cumulative backups to fully recover all information.&lt;br /&gt;
&lt;br /&gt;
: If time or server resources are paramount or data change overwhelms cumulative backups, turn to differential backups, this style of backup when used in conjunction with a full backup will provide a very similar level of protection, but restoration will be slower. Differential backups will only backup changed data since the last backup of any type, not since the last full backup, as with a cumulative backup. Thus, when restoring data, you will need to recover the full backup, then each differential backup in turn (oldest first) in order to fully recover all information. This method also has the drawback of recovering any legitimately deleted files, potentially &amp;quot;over-filling&amp;quot; the file-system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data Protection Best Practice says&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# You should be able to completely recover from a catastrophic failure from at least two previous full backups. Just in case the most recent full backup is damaged, lost, or corrupt.&lt;br /&gt;
# A good backup regime should contain at least one full backup within a chosen cycle, normally weekly.&lt;br /&gt;
# A good backup practice is to store backups away from the current data location, preferably off site.&lt;br /&gt;
# Dynamic data should be backed up &#039;&#039;offline&#039;&#039; or &#039;&#039;hot&#039;&#039; to avoid &#039;&#039;fuzzy&#039;&#039; backups (data is changing as you back it up, potentially leading to related information not being in sync when backed up.&lt;br /&gt;
&lt;br /&gt;
: For the average Web site, a daily or weekly full backup of both site files and database records is normally more than enough. Keeping a number of backups for a period of time is always a good plan, maybe keep each weekly backup for one month. This allows you to recover an old site in the case of emergencies or if for some reason you have local backup file corruption.&lt;br /&gt;
&lt;br /&gt;
: There are many PHP and Perl scripts on the Web that can be automated through CRONTAB and can either email (if small enough) or FTP the backup files to an off- or cross- server location. Remember that to some degree with Joomla! you already have an instant backup of the core files, if you haven&#039;t modified core, the Joomla! distribution files can be easily restored. Then you need only worry about backing up changed files and the database.&lt;br /&gt;
&lt;br /&gt;
==Where can I learn about vulnerable extensions?==&lt;br /&gt;
* See the [http://docs.joomla.org/Vulnerable_Extensions_List Vulnerable Extensions List]&lt;br /&gt;
&lt;br /&gt;
==Where can I learn more about file permissions?==&lt;br /&gt;
&lt;br /&gt;
* [[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
* [[Using phpSuExec]]&lt;br /&gt;
* [[Windows Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
==How do I setup a powerful password scheme?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Most users may not need more than 3 levels of passwords and webmasters no more than 5. Each level must be completely unrelated to the others in terms of which ids and passwords are used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 5 (Public)&#039;&#039;&#039; - is the password you use on public sites. It is not imperative that you use a different password on every site. In fact it&#039;s more effective to use a different username on every site than it is to use a different password truth be told! Knowing the username allows easy hacking...half the work is done! knowing the password is useless unless you know what account it goes to!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 4 (Webmaster)&#039;&#039;&#039; - Reserved for SQL Only. this is a password that would only be used by SQL and limited to a specific database in SQL. The best way to protect SQL is by limiting each account to just being able to do the minimum that DB requires. In some cases it is even wise to have a read only account for display and a separate write account that the backend write functions use. But that doesn&#039;t apply to J! at all... for J! the best practice is to set up an individual account (not root for sure) that only has read and write access to the J! DB nothing else.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 3 (Webmaster)&#039;&#039;&#039; - FTP and Server Access. these can be the same user:pass combo since both if compromised can do the most damage. doesn&#039;t matter if the backend or Cpanel is safe if the FTP is not and the same goes the other way!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 2 (Personal Data Access)&#039;&#039;&#039; - This password should be used for any sites or locations that contain personal data with the exception of Banking (see level 1). these sites are often used for social engineering data such as medical records, service accounts and any financial records not directly related to banking! You want these to be secure but also different from the real threat of security...your money!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 1 (Banking!)&#039;&#039;&#039; - this needs to be the most secure in fact if you have two different banks it actually pays to have a different user:pass for each just to be sure!&lt;br /&gt;
&lt;br /&gt;
= Joomla! Core =&lt;br /&gt;
&lt;br /&gt;
==How can I check my Joomla! installation&#039;s overall security and health?==&lt;br /&gt;
&lt;br /&gt;
: 1. Use the free Joomla extension, Joomla! Tools Suite (JTS), which is a Joomla! environment audit, maintenance and diagnostic application written in PHP. The JTS suite of tools can diagnose, report and advise on common installation, health and security issues, including performing several common performance and recovery actions.&lt;br /&gt;
&lt;br /&gt;
: Project Home: http:// joomlacode. org/gf/project/jts/ (gone away)&lt;br /&gt;
&lt;br /&gt;
==How can I add the Joomla! Security Announcements Feed to the Admin Control Panel?==&lt;br /&gt;
&lt;br /&gt;
# Login to your Joomla! sites Administration site&lt;br /&gt;
# From the menu, select Extensions -&amp;gt; Module Manager&lt;br /&gt;
# From within the Module Manager, select Administrator&lt;br /&gt;
# From the Icon Menu (top right), select New&lt;br /&gt;
# From the choices available, select Feeds Display&lt;br /&gt;
# At the Feed Module configuration page, enter the appropriate details (Title (EG: Security Announcements) and Feed as a minimum)&lt;br /&gt;
# Enter http://feeds.joomla.org/JoomlaSecurityNews in the Feed URL&lt;br /&gt;
# Select cpanel as the position&lt;br /&gt;
# Optional Select Apply from the Icon Menu (top right) and place the feed in the order where you want to see it in the Admin Control Panel&lt;br /&gt;
# Select Save from the Icon Menu (top right)&lt;br /&gt;
# Go back to your Admin Site main page (Site -&amp;gt; Control Panel) and you should see your newly built Security Feed.&lt;br /&gt;
&lt;br /&gt;
: You can also use this technique to deliver your own &amp;quot;Customer Updates&amp;quot; to sites that you build for others. It&#039;s a great way to communicate with your customers after handing over the site to them. Every time they log in to the Back End, they&#039;ll see your latest news.&lt;br /&gt;
&lt;br /&gt;
==Why should I immediately change the name of the default admin user after a new install?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: All new Joomla installations start with a Super Administrator account called, &#039;admin&#039;. During the installation process, you will be asked to give this account a password. That&#039;s great as far as it goes, but because the user name of this highly-confidential account is generally well known, 50% of the security of the username/password combination is already exposed. Now all anyone needs to do is guess the password and they&#039;re in.&lt;br /&gt;
&lt;br /&gt;
: By changing the user name to something more difficult to guess, you greatly increase the difficulty of accessing the account. An attacker must correctly guess both the user name and password at the same time to gain access. This is several magnitudes more difficult than simply guessing the right password.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Log into the Back End&lt;br /&gt;
# Select User Manager&lt;br /&gt;
# Select the &#039;admin&#039; user record&lt;br /&gt;
# Change the value in username. (Good user names contain a mix of letters and numbers.)&lt;br /&gt;
# Save&lt;br /&gt;
# Remember the new username!&lt;br /&gt;
&lt;br /&gt;
== Why does the Back-End session stay alive even though I set it to expire? ==&lt;br /&gt;
&lt;br /&gt;
: When you edit an item from the Back-End, there is a keep-alive script running that keeps the session active. This is a great convenience in most cases, as it prevents you from losing all your edits if you wait too long to submit the content. However, there are a few potential security issues to be aware of:&lt;br /&gt;
&lt;br /&gt;
# If you walk away from your computer while you are editing content, someone else can use your computer to attack the site.&lt;br /&gt;
# Due to the risk of Cross-Site Request Forgery attacks ([http://en.wikipedia.org/wiki/Cross-site_request_forgery CSRF]) it&#039;s never a good idea to browse the Internet in another window or tab while an open Joomla! Administrator session is active. Joomla! has been hardened against such attacks, but it&#039;s remotely possible that an as yet unknown vulnerability exists in the Joomla! core, a third-party extension, or the browser itself.&lt;br /&gt;
&lt;br /&gt;
==How do I turn off RG_EMULATION? {{JVer|1.0}}==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: PHP&#039;s &#039;&#039;register_globals&#039;&#039; option was a terrible idea from a security point of view. It encouraged lazy programming and exposed many scripts to needless risk. This is because RG allows variables passed by the user to be automatically passed to the script. This breaks a cardinal rule: Never trust user input. &lt;br /&gt;
&lt;br /&gt;
: Register Globals has been officially deprecated in PHP5, and beginning with PHP6 will no longer even exist. Good riddance! &lt;br /&gt;
&lt;br /&gt;
: Joomla 1.0.x uses RG_Emulation functions which are somewhat safer than standard PHP &#039;&#039;register_globals&#039;&#039;, but it&#039;s still best not to allow any form of automatic variable assignments. Note that poorly-written extensions may fail with &#039;&#039;register_globals&#039;&#039; turned off. Such failure is a sign that the extension does not check user input correctly. Best advise: Don&#039;t use such extensions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Joomla! 1.0.13&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Beginning with the 1.0.13 release, Register Globals Emulation has been moved to the main configuration file and can be adjusting in the Back-end Administrator interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Joomla! 1.0.12 and earlier&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Edit the file, &#039;&#039;globals.php&#039;&#039;, found in the root directory of your Joomla! site. At about line 23 change:&lt;br /&gt;
&lt;br /&gt;
 define(&#039;RG_EMULATION&#039;,1)&lt;br /&gt;
&lt;br /&gt;
: to&lt;br /&gt;
&lt;br /&gt;
 define(&#039;RG_EMULATION&#039;,0)&lt;br /&gt;
&lt;br /&gt;
==What do Error 1, Error 2, and Error 3 mean?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Error 1 = FATAL ERROR: MySQL not supported...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You need to compile MySQL support into PHP or the MySQL server is down.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Error 2 = FATAL ERROR: Connection to database ...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Joomla! cannot talk to the database, most likly you have a typo in the username or password settings in &#039;&#039;configuration.php&#039;&#039;, or you are trying to access a database table with the wrong table prefix.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Error 3 = FATAL ERROR: Database not found...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The database cannot be found. Check the database settings in &#039;&#039;configuration.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The MySQL variables in &#039;&#039;configuration.php&#039;&#039; (found in Joomla!&#039;s root directory) can be modified to correct these problems.&lt;br /&gt;
&lt;br /&gt;
For Joomla! 1.0.xx&lt;br /&gt;
 $mosConfig_host = &#039;localhost&#039;;&lt;br /&gt;
 $mosConfig_user = &#039;accountname__username&#039;;&lt;br /&gt;
 $mosConfig_password = &#039;userpassword&#039;;&lt;br /&gt;
 $mosConfig_db = &#039;accountname_dbName&#039;;&lt;br /&gt;
 $mosConfig_dbprefix = &#039;jos_&#039;;&lt;br /&gt;
&lt;br /&gt;
Modifying the &#039;&#039;$mosConfig_host&#039;&#039; to an IP Address of a remote host works for hosts that have separate MySQL servers from the client hosting servers.&lt;br /&gt;
&lt;br /&gt;
==How do UNIX file permissions work?==&lt;br /&gt;
&lt;br /&gt;
Unix/Linux file permissions can be confusing. The basic UNIX permissions come in three flavors;&lt;br /&gt;
&lt;br /&gt;
 Owner Permissions : Control your own access to files.&lt;br /&gt;
 Group Permissions : Control access for you and anyone in your group.&lt;br /&gt;
 Other Permissions : Control access for all others.&lt;br /&gt;
&lt;br /&gt;
In Unix, when permissions are configured the server allows you to define different permissions for each of these three categories of users. In a Web server environment permissions are used to control which Web site owners can access which directories and files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What do Unix permissions look like?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When viewing your files through an FTP client or from the servers command line;&lt;br /&gt;
&lt;br /&gt;
 filename.php username usergroup rwx r-x r-x&lt;br /&gt;
&lt;br /&gt;
The first entry is the name of the file, the next entry is your username on the server, the second entry is the group that you are a member of and the last entry is the permissions assigned to that this file (or directory). If you notice, I have intentionally spaced out the permissions section, I have grouped the 9 characters into 3 sets of 3. This separation is key to how the permissions system works. The first set of 3 permissions (rwx) relate to the username seen above, the second set of 3 permissions (r-x) relate to the usergroup seen above and the final set of 3 permissions (r-x) relate to anyone else who is not associated with the username or groupname.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Owner (User) relates to username&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Owner (User) is normally you, these permissions will be enforced on your hosting account name.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Group relates to usergroup&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Group permissions will be enforced on other people that are in the same group as you, within a hosting environment, there is very rarely other people in the same group as you. This protects your files and directories from being made available to anybody else who may also have a hosting account on the same server as you.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other relates to everyone else&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Other permissions, these will be enforced on anybody else on the server that is either not you or not in your group. So in a Web Serving environment, remembering that no-one else is normally in your group, then this is everybody else accessing the server except for you. Each of the three sets of permissions are defined in the following manner;&lt;br /&gt;
&lt;br /&gt;
 r = Read permissions&lt;br /&gt;
 w = Write permissions&lt;br /&gt;
 x = Execute permissions&lt;br /&gt;
&lt;br /&gt;
 Owner Group Other&lt;br /&gt;
 r w x r w x r w x&lt;br /&gt;
&lt;br /&gt;
As many of you already know, permissions are normally expressed as a numeric value, something like 755 or 644. so, how does this relate to what we have discussed above? Each character of the permissions are assigned a numeric value, this is assigned in each set of three, so we only need to use three values and reuse them for each set.&lt;br /&gt;
&lt;br /&gt;
 Owner Group Other&lt;br /&gt;
 r w x r w x r w x&lt;br /&gt;
 4 2 1 4 2 1 4 2 1&lt;br /&gt;
&lt;br /&gt;
Now that we have a value that represents each permission, we can express them in numeric terms. The values are simply added together in the respective sets of 3, which will in turn give us just three numbers that will tell us what permissions are being set. If we are told that a file has the permissions of 777, this would mean that the following was true.&lt;br /&gt;
&lt;br /&gt;
 Owner Group Other&lt;br /&gt;
 r w x r w x r w x&lt;br /&gt;
 4 2 1 4 2 1 4 2 1&lt;br /&gt;
&lt;br /&gt;
Thus...&lt;br /&gt;
&lt;br /&gt;
   4+2+1 4+2+1 4+2+1&lt;br /&gt;
 =   7     7     7&lt;br /&gt;
&lt;br /&gt;
The Owner of the file would have full Read, Write and Execute permissions, the group would also have full Read, Write and Execute permissions, and the rest of the world can also Read, Write and Execute the file. The standard, default permissions that get assigned to files and directories by the server are normally;&lt;br /&gt;
&lt;br /&gt;
 Files = 644&lt;br /&gt;
 Directories = 755&lt;br /&gt;
&lt;br /&gt;
These permissions would allow, for files;&lt;br /&gt;
&lt;br /&gt;
 644 = rw- r-- r--&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read only&lt;br /&gt;
 Other has Read only&lt;br /&gt;
&lt;br /&gt;
and for directories;&lt;br /&gt;
&lt;br /&gt;
 755 = rwx r-x r-x&lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute only&lt;br /&gt;
 Other has Read and Execute only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, things can get a little complicated when we start talking about shared Web Servers, the Web Server software will be running with its own username and groupname, most servers are configured for them to use either &amp;quot;apache&amp;quot; and &amp;quot;apache&amp;quot; or &amp;quot;nobody&amp;quot; and &amp;quot;nobody&amp;quot; as username and groupname. Here is the problem. Your Web Server runs as its own user, and this user is not you or in your group, so the first two sets of permissions do not apply to it. Only the world (other) permissions apply. Therefore, if you configure a permissions set similar to 640 on your website files, your Web Server will not be able to run your website files.&lt;br /&gt;
&lt;br /&gt;
 640 = rw- r-- ---&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read only&lt;br /&gt;
 Other has no rights&lt;br /&gt;
&lt;br /&gt;
The Web server is assigned no permissions at all and cannot Execute, Write or more importantly, even Read the file to delivery its content to a website visitors browser. If a directory was to be assigned 750 permissions, this would have the same effect, because the WebServer does not even have permissions to read files in the directory, even if the files inside that directory had favorable permissions.&lt;br /&gt;
&lt;br /&gt;
 750 = rw- r-x ---&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read and Execute&lt;br /&gt;
 Other has no rights&lt;br /&gt;
&lt;br /&gt;
Directories have an extra quirk, if a directory does not have the Execute permission set in the World set then even if Read and Write are set, if the program is not run as the user or group, it will still not be able to access the files within the directory. The Execute setting allows the program to &amp;quot;Execute&amp;quot; commands in the directory, so without it being on the program(in our case a Web Server) cannot execute the &amp;quot;Read&amp;quot; command, thus cannot deliver your file to the users web browser.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How Does this Relate to Joomla?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Good question, well in the first instance this would be important during the Web-Installer process.&lt;br /&gt;
If you can remember back to when you ran the Joomla! Web-Installer, we were looking for specific directories to be designated as writable. We see quite a numbers of posts either stating that there were problems during the install with permissions or asking what permissions are recommended. Some even consider the message, asking for &amp;quot;Writable&amp;quot; permissions to be too vague.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, as the Web-Installer does not know how your server is configured, then it cannot be more specific, however, once you understand the permissions settings and you know a little about Web Serving environments, you will actually find that the term &#039;&#039;writable&#039;&#039; is actually very specific and a more than adequate description of what Joomla! needs. Thinking back to the above information, you may remember that there are three places where &#039;&#039;write&#039;&#039; permissions maybe set;&lt;br /&gt;
&lt;br /&gt;
 Owner Writable&lt;br /&gt;
 Group Writable&lt;br /&gt;
 Other Writable&lt;br /&gt;
&lt;br /&gt;
Also remembering that the Web Server generally doesn&#039;t run as your own user or in the same group. When you run the Web Installer from a browser, it is the Web Server trying to access the files, thus it is the &amp;quot;Other&amp;quot; permissions that will apply to it. If the &amp;quot;Other&amp;quot; permissions do not allow the Web Server to Read, Write or Execute commands in the Joomla! directories, you will receive the message saying that the directories are not &#039;&#039;writable&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In this case, you will need to configure the Other permissions to be &amp;quot;7&amp;quot; on the directories listed in the Web Installer.&lt;br /&gt;
So your total permissions might be something like 757, in the worse case you might need to set 777. These very open permissions&lt;br /&gt;
maybe reset back to 755 after the installer runs to assist in the security of your directories and files.&lt;br /&gt;
&lt;br /&gt;
 757 = rwx r-x rwx&lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute&lt;br /&gt;
 Other has Read, Write and Execute&lt;br /&gt;
&lt;br /&gt;
Just to make things even more confusing, many hosting firms make use of software called phpsuExec or suExec, these tools change the way the Web Server runs, where the Web Server would not normally run as your username, in this case, it does. The use of the &#039;&#039;other&#039;&#039; permissions, may not be required, now you may only need to configure directories to be &#039;&#039;writable&#039;&#039; to your own username and groupname, this allows directory permissions to be set as 755 or 775 instead of 757 or 777.&lt;br /&gt;
&lt;br /&gt;
 755 = rwx r-x r-x&lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute&lt;br /&gt;
 Other has Read and Execute&lt;br /&gt;
&lt;br /&gt;
 775 = rwx rwx r-x &lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read, Write and Execute&lt;br /&gt;
 Other has Read and Execute&lt;br /&gt;
&lt;br /&gt;
The Web Server will still need to Execute set for the username and Read, Execute groupname permissions set so that it can Execute the Read command on files inside the directory. Again, these permissions may be demoted back to 755 after the Web Installer completes. Thats the basics for directories covered, what about files? This is where things get a little simpler. Most of the files that Joomla! makes use of will be quite happy with the 644 default permissions.&lt;br /&gt;
&lt;br /&gt;
 644 = rw- r-- r-- &lt;br /&gt;
 Owner has Read, Write&lt;br /&gt;
 Group has Read&lt;br /&gt;
 Other has Read&lt;br /&gt;
&lt;br /&gt;
This is valid if you do not have a need to Write to the files from the Web Server, the same rules apply as for directories if you do have this need. One file that you may like to have &amp;quot;Writable&amp;quot; to the Web Server is your configuration.php file. This is the Joomla! configuration file, if you plan on changing configuration through the Web Admin interface, then this file will need to be Writable to the Web Server.&lt;br /&gt;
&lt;br /&gt;
If your server needed directory permissions to be set to &amp;quot;Other&amp;quot; Writable for the install then this file will probably also need to be 757 or 777. Leaving this file as 757 or 777 is dangerous though, as you are letting everyone have &amp;quot;Write&amp;quot; access, many Web Site exploits take advantage of this fact, so in general it is not recommended to leave this file with these permissions.&lt;br /&gt;
&lt;br /&gt;
If your Web Server has one of the SU tools installed and you only needed to configure 755 on directories for the installation, then you will probably also only need to set 755 or 775 on this file to allow editing through the Admin interface, and these permissions are generally accepted as more secure than 757 or 777.&lt;br /&gt;
&lt;br /&gt;
In conclusion, what permissions should be set for the Joomla! installation? Well, as you can see, it depends!&lt;br /&gt;
&lt;br /&gt;
I know this isn&#039;t as helpful as you would have liked and it certainly is not a definitive answer, but in general, after the installation, any insecure &amp;quot;7&amp;quot; settings can be reset back to something more secure. For example: &lt;br /&gt;
 Files = 644&lt;br /&gt;
 Directories = 755&lt;br /&gt;
&lt;br /&gt;
These permissions would allow, for files;&lt;br /&gt;
&lt;br /&gt;
 644 = rw- r-- r--&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read only&lt;br /&gt;
 Other has Read only&lt;br /&gt;
&lt;br /&gt;
and for directories,&lt;br /&gt;
&lt;br /&gt;
 755 = rwx r-x r-x &lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute only&lt;br /&gt;
 Other has Read and Execute only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have SSH shell access the following commands can be run from the command line to reset all files and directories back to the server defaults of 755 and 644. Change directories to the top directory (&amp;quot; / &amp;quot;) of your Joomla! installation, then run: &lt;br /&gt;
&lt;br /&gt;
 find . -type f -exec chmod 644 {} \;&lt;br /&gt;
 find . -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
If you only have FTP access, this can be a very time consuming job, however, unless you changed more directories during the installation that was requested, you should only need to reset about 10 directories and the &#039;&#039;configuration.php&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that to install any extensions or templates after the actual Joomla! installation you may need to elevate the default permissions again on the appropriate directories just for the installation period, you may then demote them again after the add-on is installed.&lt;br /&gt;
&lt;br /&gt;
If you decide to use &#039;&#039;caching&#039;&#039; the cache directory will need to be &#039;&#039;writable&#039;&#039; by the Web server user to allow it to write its temporary files.&lt;br /&gt;
&lt;br /&gt;
==What are the recommended file and directory permissions?==&lt;br /&gt;
&lt;br /&gt;
Depending on the security configuration of your Web server the recommended default permissions of 755 for directories and 644 for files should be reasonably secure.&lt;br /&gt;
&lt;br /&gt;
==How can I avoid using chmod 0777 to enable installs?==&lt;br /&gt;
&lt;br /&gt;
On a private server with a small, controlled set of users, there is no need to use a chmod 777 to make the Joomla! folders writable in order to perform installs. You can set the server up so that both Apache and FTP have control of site files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Edit the Apache user.conf file and tell apache to run under the FTP account.&lt;br /&gt;
# chmod the entire site to 644 or 744. Apache should be able to run just fine that way.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# chgrp the entire web space to the FTP group so that only those with FTP access can write to the server.&lt;br /&gt;
# chmod the entire web space to 764 or 664 will be possible giving other users write access as well&lt;br /&gt;
&lt;br /&gt;
==Isn&#039;t locating all Joomla! files inside public_html a security risk?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Short answer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Potentially, yes. Your site can be secure, but you must be careful and vigilant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Long answer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A common security principle is to create various security levels and then grant access at each level only as required. On UNIX servers this is done by setting the user, group, and world permissions on directories and files.&lt;br /&gt;
&lt;br /&gt;
Typically, the most insecure directory on a UNIX server is the one serving Web files, usually called public_html. This is because it is publicly accessible, world-readable, and in the case of a CMS-powered site, possibly even world-writable. That status is the very definition of officially, totally, and utterly insecure.&lt;br /&gt;
&lt;br /&gt;
As long as you want the entire world to view your public_html directory there is no problem. After all, that&#039;s exactly what it&#039;s designed to do. But if you want to hide anything, the plot thickens. If public_html contains configuration files with secret data, or scripts that write to databases, or scripts that modify other files, or scripts that append to logs, or scripts that store temporary data in caches, or scripts that support file and graphic uploads, or scripts that process form input, or scripts that process financial and personal data, this read-only directory becomes a world-accessible, read-write application.&lt;br /&gt;
&lt;br /&gt;
If there are ANY vulnerabilities in ANY files in the public_html directory, the entire server is potentially vulnerable, and not just your Web site but possibly every Web site on your server. Such vulnerabilities give attackers access to the scripting engines used to run your site. PHP, Perl and other Web scripting languages are powerful and easy to use. If programming vulnerabilities allow an attacker to call arbitrary commands, your entire server could be toast.&lt;br /&gt;
&lt;br /&gt;
One good way to block attackers, is to keep potential vulnerabilities behind a secure fence. For this reason, it is often recommended to only place files that require direct access from the Web in public_html. Other files should be loaded into applications using such functions as include and require. To access such files, attackers must first penetrate your server, such as by discovering a root username/password.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The incredible lightness of living outside the fence&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To provide incredibly easy installation, Joomla! follows a different security model. It is possible to perform a complete Joomla! installation using nothing more than a Web browser pointed at the world-readable installation directory. An additional level of security is provided by requiring that you remove this installation directory after completing the install.&lt;br /&gt;
&lt;br /&gt;
Granting a world-accessible installer the ability to write to files outside of public_html would be a huge security hole. Thus, by default every Joomla! file ends up in the world-accessible public_html directory. Not coincidentally, this is also the directory in which an angry planetful of would-be attackers are hoping to find your files.&lt;br /&gt;
&lt;br /&gt;
Currently, most Joomla extensions also have limited support for file locations outside of public_html. This is a legacy of the Joomla! 1.0.x installation model.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Joomla! defense&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Despite it&#039;s apparently vulnerable location, Joomla! uses various effective methods for blocking exploits. Chief among them is to add a line of code at the top of any PHP file that requires extra protection. This method is very effective as long as each and every file requiring such protection, has it. One vulnerable file exposes the whole site.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The challenge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The practice of placing everything in public_html, and then building a little fence inside each file can become an administrative nightmare. One vulnerable file exposes the entire server. This is a glaring example of an allow, then deny security model.&lt;br /&gt;
&lt;br /&gt;
This model requires very careful upgrades, constant log reviews, and proactive plugging of new vulnerabilities as soon as they become known. (Since you have to beat the attackers, you&#039;ll be in a hurry, and may inadvertently do something stupid, potentially creating other vulnerabilities.)&lt;br /&gt;
&lt;br /&gt;
During installations and upgrades, you must verify (or trust someone else to verify) every line of code, of every new file, for every known vulnerability. And because scripts can have unintended consequences on each other, you cannot forget to test, test, test. Of course this is generally true for all software, but placing the entire application in public_html makes the issue extremely critical.&lt;br /&gt;
&lt;br /&gt;
The recent wave of URL injection attacks against poorly-written third party extensions would have been much less successful if those files had been stored outside of public_html, and thus simply unavailable through URLs. Note that in many cases the actual vulnerabilities could still exist within the files, but being inside the fence (outside of public_html) they would not be exposed to URL injections.&lt;br /&gt;
&lt;br /&gt;
 To (Deny, then Allow), or (Allow, then Deny)?&lt;br /&gt;
&lt;br /&gt;
The real problem with the above &amp;quot;all known&amp;quot; qualifier is that it is an allow, then deny model. In other words, we first give everyone access to every file and then deny access to specific files by adding a line of code.&lt;br /&gt;
&lt;br /&gt;
Consider the logic for a password authentication script. We have essentially two choices:&lt;br /&gt;
# First allow all access, then deny any username/password combination that DOES NOT match the approved list.&lt;br /&gt;
# First deny all access, then allow any username/password combination that DOES match the approved list.&lt;br /&gt;
&lt;br /&gt;
Obviously the second method is better. A passing familiarity with regular expressions shows that the first method is much more difficult to write securely. It fails anew each time a new variation of some attack is developed, and tends to require constant revisions. Over time, such revisions become so complex that the authentication system itself becomes a source of vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Conceptually, the second method is an example of building a strong fence around your site (deny), and then granting access using a limited and well-defined set of criteria (then allow). If the script fails, the most likely result is that someone who should have access is blocked. That may be highly inconvenient, but it&#039;s not usually a security breach.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The good news&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# In Joomla! 1.0.x, some extensions, and the Joomla! framework, give you the option of locating critical directories outside of public_html after you have completed the installation. Whenever possible you should do this.&lt;br /&gt;
# Joomla! 1.5 goes far in the right direction. It provides several new constants for specifying the location of particularly sensitive directories, including configuration, administrator, libraries, and installation. &lt;br /&gt;
# Joomla! 1.5 is able to run as an FTP account. This provides another method for protecting files on a file by file and directory by directory basis.&lt;br /&gt;
&lt;br /&gt;
==How do I adjust Joomla 1.5 defines {{JVer|1.5}}==&lt;br /&gt;
&lt;br /&gt;
There are two defines files that will generally need to be edited.  /includes/defines.php file is for the front end and /administrator/includes/defines.php is for the Joomla administrator end. Below is the relevant code.&lt;br /&gt;
&lt;br /&gt;
 define( &#039;JPATH_ROOT&#039; , implode( DS, $parts ) );&lt;br /&gt;
 define( &#039;JPATH_SITE&#039; , JPATH_ROOT );&lt;br /&gt;
 define( &#039;JPATH_CONFIGURATION&#039;, JPATH_ROOT );&lt;br /&gt;
 define( &#039;JPATH_ADMINISTRATOR&#039;, JPATH_ROOT . DS . &#039;administrator&#039; );&lt;br /&gt;
 define( &#039;JPATH_LIBRARIES&#039; , JPATH_ROOT . DS . &#039;libraries&#039; );&lt;br /&gt;
 define( &#039;JPATH_INSTALLATION&#039; , JPATH_ROOT . DS . &#039;installation&#039; );&lt;br /&gt;
&lt;br /&gt;
.DS. = Directory Seperator&lt;br /&gt;
&lt;br /&gt;
==Moving sensitive files outside the web root==&lt;br /&gt;
{{:Moving sensitive files outside the web root}}&lt;br /&gt;
&lt;br /&gt;
Moving sensitive files is now documented at: http://docs.joomla.org/Moving_sensitive_files_outside_the_web_root&lt;br /&gt;
&lt;br /&gt;
==How do I block direct access to critical files using .htaccess?==&lt;br /&gt;
# Make a backup copy of your .htaccess file. Use your backup file to recover if the following fails. Be sure to delete the backup file once you  are finished.&lt;br /&gt;
# Add the following to your .htaccess file. This example will protect both the configurtation.php and .htaccess files.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Files .htaccess&amp;gt;&lt;br /&gt;
 order allow,deny&lt;br /&gt;
 deny from all&lt;br /&gt;
 &amp;lt;/Files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FilesMatch &amp;quot;configuration.php&amp;quot;&amp;gt;&lt;br /&gt;
 Order allow,deny&lt;br /&gt;
 Deny from all&lt;br /&gt;
 &amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also protect a lot of file extensions in one single rule. Exemple (the file names between &#039; &#039;&#039;&#039;(&#039;&#039;&#039; &#039; and &#039; &#039;&#039;&#039;)&#039;&#039;&#039; &#039; in this rule are the file extensions to protect ):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FilesMatch &amp;quot;\.(htaccess|htpasswd|ini|phps|log|sh|conf)$&amp;quot;&amp;gt;&lt;br /&gt;
 Order allow,deny&lt;br /&gt;
 Deny from all&lt;br /&gt;
 &amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How do I recursively adjust file and directory permissions?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using Joomla! Administration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the Back-end, go to Site --&amp;gt; Global Configuration --&amp;gt; Server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using the UNIX shell&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The find command automatically assumes that it should start from the current directory. To be safe, go to your public_html directory and specify a path as the first argument. Some shells, such as bash on Apple OS X, must have a path specified in the find command.&lt;br /&gt;
&lt;br /&gt;
 find . -type f -exec chmod 644 {} \;&lt;br /&gt;
 find . -type d -exec chmod 755 {} \;&lt;br /&gt;
 chmod 707 images&lt;br /&gt;
 chmod 707 images/stories&lt;br /&gt;
 chown apache:apache cache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
# Test all third party extensions after changing permissions.&lt;br /&gt;
# You may need to reset write permissions to install more extensions.&lt;br /&gt;
&lt;br /&gt;
==How can I set the administrator directory to use an SSL server (https)? {{JVer|1.0}}==&lt;br /&gt;
&lt;br /&gt;
Use Joomla version 1.5 or newer&lt;br /&gt;
&lt;br /&gt;
A standard Joomla! 1.0.x installation does not support SSL for individual directories, however there are various (elegant and not so elegant) hacks posted in the forums.&lt;br /&gt;
&lt;br /&gt;
Note that earlier techniques involving the variable $mosConfig_live_site are deprecated, and will not work with current Joomla! versions due to increased security enhancements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More Help&#039;&#039;&#039;&lt;br /&gt;
# [http://www.netshinesoftware.com/security/using-an-ssl-certificate-with-your-joomla-website.html Netshine Software, Ltd: Using an SSL Certificate with your Joomla Website]&lt;br /&gt;
&lt;br /&gt;
==Why isn&#039;t restricting access by IP recommended?==&lt;br /&gt;
&lt;br /&gt;
Restricting site access by IP address is not particularly effective longterm as many exploits are enacted from hijacked machines or via proxies, masking the real attacker&#039;s actual IP Address. Attackers can attack from many different compromised machines. Blocking them will block the legitimate owners of that IP, but may not block the attackers.&lt;br /&gt;
&lt;br /&gt;
= Joomla! Extensions =&lt;br /&gt;
&lt;br /&gt;
==Why are there vulnerable extensions?==&lt;br /&gt;
&lt;br /&gt;
A list of currently known [http://docs.joomla.org/Vulnerable_Extensions_List vulnerable extensions]. &lt;br /&gt;
&lt;br /&gt;
: Anyone may write and distribute a Joomla! extension. As a service to the global community, this freedom is actively encouraged and supported by the Joomla! Core team. Due to the openness and popularity of the Joomla! project, there are a wide variety of extensions offering a vast array of features. The quality and breadth of Joomla! extensions is one of the main advantages of Joomla.&lt;br /&gt;
&lt;br /&gt;
: However this freedom comes with a price. It requires individual responsibility, and can survive only where a majority of participants act responsibly. Joomla&#039;s success has led to unwanted attention from malicious types, such as script kiddies who run simple, automated scripts in an effort to find and deface others&#039; Web sites.&lt;br /&gt;
&lt;br /&gt;
: It is important to note that, script kiddies unintentionally perform a valuable service. They help us identify vulnerable extensions and poorly configured servers that might otherwise remain open to more serious threats.&lt;br /&gt;
&lt;br /&gt;
==What is a vulnerable extension?==&lt;br /&gt;
&lt;br /&gt;
A vulnerable extension is one that has been found to contain (or contribute to) a security vulnerability.&lt;br /&gt;
&lt;br /&gt;
Vulnerable extensions are not necessarily poorly-coded. As the Web evolves, technical requirements and commonly accepted coding practices change. Active projects release new versions of their extensions as requirements change. For this reason, it is important to:&lt;br /&gt;
&lt;br /&gt;
# Know the version numbers of all installed extensions.&lt;br /&gt;
# Use only the latest stable version of all extensions.&lt;br /&gt;
# Completely remove all files of insecure or unused extensions.&lt;br /&gt;
&lt;br /&gt;
==How do I choose secure extensions?==&lt;br /&gt;
&lt;br /&gt;
: The most important thing anyone can do is make good decisions regarding the extensions they choose to use on a site. Once an insecure or malicious extension is installed you should consider your entire site compromised. There is NO POSSIBLE WAY to protect or stop a component from accessing database tables it should not be accessing. There is no possible way to stop a component from sending all of the information it found back to a cracker website. Once an insecure or malicious component is installed, your entire site is insecure.&lt;br /&gt;
&lt;br /&gt;
: With all of that said, here are some pretty easy tips for making good choices regarding the extensions you install:&lt;br /&gt;
&lt;br /&gt;
1. When was the last version released?&lt;br /&gt;
&lt;br /&gt;
: If it has been over a year, consider the project abandoned and find something else. Do not install old components.&lt;br /&gt;
&lt;br /&gt;
2. What kind of release is it? (Stable, Release Candidate (RC), Beta, Alpha)&lt;br /&gt;
&lt;br /&gt;
: For production sites you should be sticking to Stable releases as much as possible. If you cannot wait until a Stable release has been made available, Release Candidates are the only other option you should consider. I would not suggest anyone install any Beta or Alpha extensions on a production site. This means they still have bugs, they have not been tested enough, and could have any number of inconvenient bugs or security issues that have not been fixed or worse, found.&lt;br /&gt;
&lt;br /&gt;
3. Does the extension have a history of good security practices?&lt;br /&gt;
&lt;br /&gt;
: This is obviously a bit more subjective but it is still a very valid gauge of future trustworthiness. It requires a bit of investigation and research. Look around their download pages and archives, are there many security release or patches? Are there a lot of reports of cracking activity through this extension? Are the developers experienced and security conscious? What do other community members think of this extension? One example that comes to mind that has little to do with Joomla itself (which makes it a fair example) is phpBB. This script has had more security issues than I could get my head around and there routinely seems to be newly disclosed issues. Because of this, I would never use phpBB. In my opinion its is not trustworthy and there is a high probability that there will be more major security issues.&lt;br /&gt;
&lt;br /&gt;
4. Is there a support community for this extension?&lt;br /&gt;
&lt;br /&gt;
: This is very important for usability and security awareness. If there is a support community for an extension there is a better chance of security issues being known and dealt with. A support community means that people would like to continue using the extension and that they care about the extension. This furthers the chance that security issues will be found, disclosed, and dealt with promptly.&lt;br /&gt;
&lt;br /&gt;
5. Is there only a Mambo version of this extension?&lt;br /&gt;
&lt;br /&gt;
: While this does not in itself make an extension insecure but is rather a gauge of support, how recently the last realease was, and future support. There is a pretty narrow chance that Mambo components will be supported in 1.5 so save yourself the trouble and find a component made to work with Joomla. It will make your life easier.&lt;br /&gt;
&lt;br /&gt;
6. Is the extension generally bug free?&lt;br /&gt;
&lt;br /&gt;
: I hinted on this a little bit in number three but I think it is worth discussing in more depth. While it is almost impossible for an extension to be completely bug free, the smaller the number of bugs, the better. If there are bugs in the software it means there are mistakes in the software. The more mistakes, the higher risk of usability issues and security issues. Security issues are often a result of not one bug, but several bugs or bad practices. For example, the recent 3rd party vulnerabilities that allow for remote file inclusion are a result of:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bad Practices:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Having PHP&#039;s Register Globals enabled.&lt;br /&gt;
# Using out of date or abandoned extension.&lt;br /&gt;
# No other security checks enabled for PHP. (url_fopen off, open_basedir restrictions, disabled PHP functions)&lt;br /&gt;
# Poorly configured file permissions.&lt;br /&gt;
# No request filtering or software &amp;quot;firewall&amp;quot;. (such as mod_rewrite rules or mod_security Apache modules)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bugs:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Not including defined(&#039;_VALID_MOS&#039;) or die... statements&lt;br /&gt;
# Poorly constructed include() statements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Although the Joomla! core is secure when configured correctly, third party extensions come in all flavors of age and quality. Unless you absolutely trust the extension developer, always review the code should before installing. The following is a list of typical areas of concern.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. How complex is the extension? &lt;br /&gt;
&lt;br /&gt;
: The larger it is, the more likely it is to have problems, and the more carefully you should review it. If you can&#039;t tell what it&#039;s doing, you should not trust it.&lt;br /&gt;
&lt;br /&gt;
2. Does the extension read or write files to your server? &lt;br /&gt;
&lt;br /&gt;
: Programs that read files may inadvertently violate access restrictions you&#039;ve set up, or pass sensitive system information to crackers. Programs that write files have the potential to modify or damage existing files, or introduce trojan horses.&lt;br /&gt;
&lt;br /&gt;
3. Does the extension interact with other programs on your system? &lt;br /&gt;
&lt;br /&gt;
: For example, many extensions send e-mail in response to a form input by opening a connection with the sendmail program. Is it doing this in a safe way?&lt;br /&gt;
&lt;br /&gt;
4. Does the extension run with suid (set-user-id) privileges? &lt;br /&gt;
&lt;br /&gt;
: In general this is very dangerous; extensions need an excellent reasons for doing this.&lt;br /&gt;
&lt;br /&gt;
5. Does the extension validate all user input, such as in form fields and in the URL?&lt;br /&gt;
&lt;br /&gt;
6. Does the extension use explicit path names when invoking external programs? &lt;br /&gt;
&lt;br /&gt;
: Relying on the PATH environment variable to resolve partial path names is a dangerous practice.&lt;br /&gt;
&lt;br /&gt;
7. Is the extension secure against direct access throught the URL? &lt;br /&gt;
&lt;br /&gt;
: For example: www.yoursite.com/components/com_bad_extension.php?lots_of_bad_code_here&lt;br /&gt;
&lt;br /&gt;
8. Is the extension secure against remote file inclusions?&lt;br /&gt;
&lt;br /&gt;
9. Is the extension secure against SQL injections?&lt;br /&gt;
&lt;br /&gt;
10. Is the extension secure against Cross Site Scripting (XSS)?&lt;br /&gt;
&lt;br /&gt;
11. Does the extension need PHP register_globals ON, or Joomla! RG Emulation ON? &lt;br /&gt;
&lt;br /&gt;
: If so, then it is probably violating number 7 above.&lt;br /&gt;
&lt;br /&gt;
12. Does the extension provide higher database access to less privileged users? &lt;br /&gt;
&lt;br /&gt;
: For example does it allow guests or registered users to view data that only publishers or administrators should be able to see?&lt;br /&gt;
&lt;br /&gt;
==Why does the Extensions site include insecure extensions?==&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Joomla! Extensions site exists as a free service to the community. Anyone can post extensions there and extensions exist at all levels of quality and maturity.&lt;br /&gt;
&lt;br /&gt;
If an extension is found to contain vulnerabilities, it will be removed from the site until a safer version is released, but there is no guarantee that the vulnerabilities of every extension have been discovered or reported.&lt;br /&gt;
&lt;br /&gt;
To be safe, you must verify the security of every extension you install.&lt;br /&gt;
&lt;br /&gt;
Below is the text of the Joomla! Extensions site disclaimer. Ignore it at your peril. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disclaimer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: The extensions and reviews listed in this area have been submitted by the community and their listing does not constitute or imply endorsement, recommendation, or favouring by Joomla!/OSM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: This content is provided as a free service to our visitors, and, as such, Joomla!/OSM cannot be held liable for the accuracy of the information. Visitors wishing to verify that the information is correct should contact the parties responsible for authoring the content and/or development of the extension.&lt;br /&gt;
&lt;br /&gt;
==Why is there a warning in the extensions install screen?==&lt;br /&gt;
&lt;br /&gt;
It&#039;s just a warning! You are of course free to install any extension you want onto your own site, but remember that &#039;&#039;&#039;YOU&#039;&#039;&#039; are responsible for the safety of your site and the quality of the applications you install.&lt;br /&gt;
&lt;br /&gt;
The vast majority of reported Joomla! vulnerabilities are through poorly-written or obsolete versions of third party extensions that should not have been left on the server. Therefore, before installing anything carefully evaluate the quality of the extension&#039;s code.&lt;br /&gt;
&lt;br /&gt;
The [[Vulnerable Extensions List]] is a valuable source of information on what &#039;&#039;&#039;NOT&#039;&#039;&#039; to install.&lt;br /&gt;
&lt;br /&gt;
==Why isn&#039;t un-publishing a vulnerable extension enough to protect my site?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Simply removing the menu links to an extension, or unpublishing a module is NOT enough to protect your site! As long as the extension&#039;s files exist on your server, you are vulnerable. Note how in the following examples an attacker can bypass the Joomla! index file to directly target any file, of any extension.&lt;br /&gt;
&lt;br /&gt;
 www.your_site.org/components/com_bad_component/vulnerable_file.php&lt;br /&gt;
 www.your_site.org/modules/mod_bad_module/vulnerable_file.php&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions for removing a vulnerable extension&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Make a list of files to remove&lt;br /&gt;
&lt;br /&gt;
: If you can locate it, read the extension&#039;s xml file to determine exactly which directories, files, and database tables were added to your system. The xml file is in the original zip archive used during the extension install process. For example, the zip archive for an extension called mod_vulnerable, would contain an xml file called, mod_vulnerable.xml, and might contain a list of files such as the following:&lt;br /&gt;
&lt;br /&gt;
 mod_vulnerable.php&lt;br /&gt;
 mod_vulnerable/vulnerable_file.txt&lt;br /&gt;
 mod_vulnerable/another_vulnerable_file.txt&lt;br /&gt;
 mod_vulnerable/yet_another_vulnerable_file.txt&lt;br /&gt;
 mod_vulnerable/index.html&lt;br /&gt;
&lt;br /&gt;
2. Uninstall via the Joomla Installer:&lt;br /&gt;
&lt;br /&gt;
: Using the Installer in the Joomla! Administrator backend, uninstall the vulnerable extension. You may also need to uninstall related modules, components, or plugins.&lt;br /&gt;
&lt;br /&gt;
3. Check that the uninstall process was complete:&lt;br /&gt;
&lt;br /&gt;
: Don&#039;t trust the extension to safely remove all of it&#039;s files. Compare directories and files on your system to the extension&#039;s xml list to ensure that all related files were actually removed.&lt;br /&gt;
&lt;br /&gt;
4. Optionally, remove related database tables:&lt;br /&gt;
&lt;br /&gt;
: Check your database and remove any tables created by the extension. To ease the upgrade process to new versions, many uninstall scripts do not remove related database tables. You can find the list of tables in each extension&#039;s xml file. (If you plan on installing a safer, compatible version of the same extension and you want to reuse existing data, you can usually leave the database tables as they are.)&lt;br /&gt;
&lt;br /&gt;
= Apache =&lt;br /&gt;
&#039;&#039;&#039;Covers information on Apache Web server, Apache modules, .htaccess files, etc.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is Apache modSecurity?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ModSecurity is an Apache module that functions as an embeddable web application firewall. It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring and real-time analysis with no changes to existing infrastructure. It is also an open source project that aims to make web application firewall technology available to everyone.&lt;br /&gt;
&lt;br /&gt;
When configuring ModSecurity, it is important to know that it is not only the Joomla! application that may require unique rules, but also the data that the application processes.&lt;br /&gt;
&lt;br /&gt;
Quality hosting providers customize mod_security rules to suit each customer. &lt;br /&gt;
&lt;br /&gt;
If you have a conflict between Joomla and ModSecurity, it is often third party components, and sometimes even contact form submissions that trigger the problem. Joomla out of the box &#039;&#039;usually&#039;&#039; works with typical ModSecurity settings, but this is dependent on each hosting provider&#039;s unique configuration. &lt;br /&gt;
&lt;br /&gt;
Overall, mod_security is a excellent tool, but this is really something your host should manage.&lt;br /&gt;
&lt;br /&gt;
One specific error is the failure of file uploads, this is often caused by SecFilterScanPOST being enabled. If you get an internal server error while using the flash upload in the Media Manager this is a good place to start. You can disable this setting by adding &#039;&#039;&#039;SecFilterScanPOST Off&#039;&#039;&#039; to your .htaccess file.&lt;br /&gt;
&lt;br /&gt;
ModSecurity configurations are far too varied and complex to describe here. To learn more, see the following resources:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# [http://www.modsecurity.org/ Official ModSecurity Site]&lt;br /&gt;
# [http://www.modsecurity.org/projects/modsecurity/apache/index.html ModSecurity and Apache]&lt;br /&gt;
&lt;br /&gt;
== How do I block directory scans using  .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add one of the following Apache rewrite rules to your .htaccess file. The first example will internally rewrite all attempts to access files with names starting with &amp;quot;phpMyAdmin&amp;quot; to index.php. Be wary of using this as it allows a seemingly valid duplicate URL for your homepage. The second rule is more safe. It simply returns a 403 response.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sample Apache Rewrite Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 RewriteRule ^phpMyAdmin /index.php [L]&lt;br /&gt;
 RewriteRule ^phpMyAdmin - [F]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Some Regular Expression Tips&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ^ Means start of pattern&lt;br /&gt;
 . Means any character other than newlines&lt;br /&gt;
 + Means one or more of the previous character&lt;br /&gt;
 * Means zero or more of the previous character&lt;br /&gt;
 $ Means end of pattern&lt;br /&gt;
 \.  Literal periods must be escaped with a leading \&lt;br /&gt;
&lt;br /&gt;
==How can I change PHP settings using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This FAQ explains how to set boolean PHP configuration directives using php_flag. The format for php_flag is: php_flag name on|off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Open the .htaccess file located in your site&#039;s home directory, or if you don&#039;t have one, create a blank one now. Note the period character (.) at the beginning of the file name.&lt;br /&gt;
&lt;br /&gt;
2. Add any of the following code samples to your .htaccess file, each on it&#039;s own line. These sample commands will prevent common global variable injection attacks, cross site scripting (XSS) sttacks, and code injection attacks.&lt;br /&gt;
&lt;br /&gt;
 php_flag register_globals off&lt;br /&gt;
&lt;br /&gt;
 php_flag allow_url_fopen off&lt;br /&gt;
&lt;br /&gt;
 php_flag magic_quotes_gpc on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that although the magic_quotes_gpc directive adds a layer of security, for performance reasons it is not considered a best practice. If you have verified that your site correctly filters and validates all user data (and every production site really should), then there is no need to add this directive. If you have any doubt, add it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3. Save the .htaccess file in your site&#039;s home directory.&lt;br /&gt;
&lt;br /&gt;
4. Test your site&#039;s front end and back end.&lt;br /&gt;
&lt;br /&gt;
==How does FastCGI effect Joomla?==&lt;br /&gt;
&lt;br /&gt;
When PHP runs from FastCGI, your server runs the PHP interpreter like an Apache module, but with the rights of your user account. Usually, the PHP interpreter is either running as the user of the webserver (which is fast, but insecure, since everyone&#039;s scripts run with the same rights), or as a CGI program, which is slow. Thus, FastCGI is a good solution for shared hosting.&lt;br /&gt;
&lt;br /&gt;
Since the PHP interpreter runs as a single instance, it does (AFAIK) not parse the .htaccess or php.ini files per directory. To change php.ini settings, your host must offer you a method to set up or modify your own php.ini, or at least parts of it. Here is how one of host does this: it parses one php.ini file (which the user can modify) once an hour, and puts some well-defined settings into the web server&#039;s main php.ini file. Thus, users are able to change some settings for their site only, such as turning register_globals off, switching between PHP4 and PHP5.&lt;br /&gt;
&lt;br /&gt;
If your server uses FastCGI, you can ask them to enable a method such as the above example, or you may be able to ask them adjust some settings for you.&lt;br /&gt;
&lt;br /&gt;
==How can I check if mod_rewrite is enabled?==&lt;br /&gt;
&lt;br /&gt;
Many problems with search engine optimization (SEO) arise from the fact that a host has not enabled mod_rewrite on the server.&lt;br /&gt;
&lt;br /&gt;
1. Enable SEO in your administrator! (administrator &amp;gt; SEO &amp;gt; Enable &amp;gt; Save)&lt;br /&gt;
&lt;br /&gt;
2. Rename your htaccess.txt to .htaccess, or use your existing .htaccess file.&lt;br /&gt;
&lt;br /&gt;
3. Place ONLY the following lines in your .htaccess file in the domain root folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;      Options +FollowSymLinks&lt;br /&gt;
      RewriteEngine On&lt;br /&gt;
      RewriteRule ^joomla\.html http://www.joomla.org/ [R=301,L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Point your browser to: http://www.example.com/joomla.html&lt;br /&gt;
&lt;br /&gt;
(Replace &#039;example.com&#039; with your site&#039;s actual URL.)&lt;br /&gt;
&lt;br /&gt;
5. If you are redirected to www.joomla.org, mod_rewrite is working. If you get an error, mod_rewrite is not working.&lt;br /&gt;
&lt;br /&gt;
6. Note: if your site is located in a folder, for example &amp;quot;test&amp;quot; you will need to modify the .htaccess file as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;      Options +FollowSymLinks&lt;br /&gt;
      RewriteEngine On&lt;br /&gt;
      RewriteRule ^test/joomla\.html http://www.joomla.org/ [R=301,L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How do I switch to PHP5 using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Many shared server environments currently run .php scripts using the PHP4 interpreter and .php5 code using the PHP5 interpreter. Rather than changing all your file extensions, and perhaps breaking many links, use a .htaccess file to dynamically map one extension to the other.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT CAVEAT:&#039;&#039;&#039; One common reason for doing this is that hosts leave PHP4 configured with register_globals ON in order to support legacy code while offering PHP5 with register_globals OFF. If you are on a shared server at a host that has configured register_globals ON server wide, you should be very worried!&lt;br /&gt;
&lt;br /&gt;
Turning register globals OFF via a local php.ini or a .htaccess file will NOT offer you any extra protection. Another exploited account on your server can simple hack yours. For server security, and since php 4.2, register globals is OFF server wide by default (php default). Any host overriding this is inviting trouble. If you need register globals ON for a specific site, simple use a .htaccess file for that specific directory, and server wide security will not be compromised. Of course, if you do this be sure all effected scripts fully sanitize input data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Your Apache server must be configured to use .htaccess files. If not, you may be able to request this from your host.&lt;br /&gt;
2. Your Apache configuration must allow the following setting. If not, you may be able to request this from your host.&lt;br /&gt;
3. Your host must have configured the .php and .php5 file extensions as described above. If not, they may possibly have chosen other extensions. Check with your host.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Check to be sure your site is configured to use .htaccess files.&lt;br /&gt;
&lt;br /&gt;
2. Make a backup of the .htaccess file in your root public_http directory. If you don&#039;t have a .htaccess file at this location, create one now.&lt;br /&gt;
&lt;br /&gt;
3. There are various ways to set the comman, depending on your server configuration. One of the following will probably work. Add ONE the following lines at the end of your .htaccess file. If unsure which to use, check with your hosting provider on which version works best for your configuration.&lt;br /&gt;
&lt;br /&gt;
 AddType x-mapp-php5 .php&lt;br /&gt;
 AddHandler application/x-httpd-php5 .php&lt;br /&gt;
 AddHandler cgi-php5 .php&lt;br /&gt;
&lt;br /&gt;
4. Carefully test.&lt;br /&gt;
&lt;br /&gt;
5. Delete the backup .htaccess file. Don&#039;t leave backups of .htaccess files in public directories.&lt;br /&gt;
&lt;br /&gt;
==How do I password protect directories using .htaccess?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This FAQ explains how to protect the Joomla! /administrator/ directory on Apache servers using the htpasswd utility. You can easily adapt these instructions to protect other directories. If you need help finding or creating your .htaccess file, start here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Caveat (From Apache.org)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Basic authentication should not be considered secure for any particularly rigorous definition of secure.&lt;br /&gt;
Although the password is stored on the server in encrypted format, it is passed from the client to the server in plain text across the network. Anyone listening with any variety of packet sniffer will be able to read the username and password in the clear as it goes across.&lt;br /&gt;
&lt;br /&gt;
Not only that, but remember that the username and password are passed with every request, not just when the user first types them in. So the packet sniffer need not be listening at a particularly strategic time, but just for long enough to see any single request come across the wire.&lt;br /&gt;
&lt;br /&gt;
And, in addition to that, the content itself is also going across the network in the clear, and so if the web site contains sensitive information, the same packet sniffer would have access to that information as it went past, even if the username and password were not used to gain direct access to the web site.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use basic authentication for anything that requires real security. It is a detriment for most users, since very few people will take the trouble, or have the necessary software and/or equipment, to find out passwords. However, if someone had a desire to get in, it would take very little for them to do so.&lt;br /&gt;
&lt;br /&gt;
Basic authentication across an SSL connection, however, will be secure, since everything is going to be encrypted, including the username and password.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. If you are unfamiliar with the Apache htpasswd utility, you may want to read the following link first.&lt;br /&gt;
Apache Authentication, Authorization, and Access Control&lt;br /&gt;
&lt;br /&gt;
2. Check to be sure your site is configured to use .htaccess files. If not sure, ask your host.&lt;br /&gt;
&lt;br /&gt;
3. Decide where to put your .htaccess file. Because Apache recursively searches all directories in a path for .htaccess files, the higher in your directory structure you place this file, the more directories it will control. If there is already an .htaccess file in the directory you choose, it&#039;s probably best to add the new code to it.&lt;br /&gt;
&lt;br /&gt;
4. Decide where to store your.htpasswd and .htgroups files. These files should NEVER be publicly accessable through the Web. Below is an example directory structure showing good locations for each file. Note that the /auth/ directory in this example is NOT accessible from the Web.&lt;br /&gt;
&lt;br /&gt;
 /home/mysite/public_html/.htaccess&lt;br /&gt;
 /home/mysite/auth/.htpasswd/&lt;br /&gt;
 /home/mysite/auth/.htgroups/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Create the .htpasswd and .htgroups files as explained in the official Apache HowTo, referenced above. (Since you&#039;ve read the always current and official documentation at Apache.org, we&#039;ll spare you the trouble of displaying it again here.)&lt;br /&gt;
&lt;br /&gt;
6. If a .htaccess file already exists in the directory you have chosen, make a backup copy. If the file does not exist, create a new file with that name now. (Don&#039;t forget the dot at the beginning of the name.)&lt;br /&gt;
&lt;br /&gt;
7. Add the following code to the .htaccess file. Adjust the example paths (marked in red) as needed for your server. Adjust the group name that you created in step 5 if it differs from the below example.&lt;br /&gt;
&lt;br /&gt;
 AuthUserFile /home/auth/.htpasswd&lt;br /&gt;
 AuthGroupFile /home/auth/.htgroups&lt;br /&gt;
 AuthType Basic&lt;br /&gt;
 AuthName &amp;quot;LWS&amp;quot;&lt;br /&gt;
 require group admins&lt;br /&gt;
&lt;br /&gt;
8. Test carefully.&lt;br /&gt;
&lt;br /&gt;
9. Remove all backup .htaccess files from public_http directories.&lt;br /&gt;
&lt;br /&gt;
10. If you cannot use the Apache htpasswd utility, here&#039;s a free, online script that creates the necessary files for you. You&#039;ll need to know the user name, password, and path. The script does the rest for you. Note that for more advanced configuration, such as the use of groups, you&#039;ll need to edit the resulting files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.htaccess Generator:&#039;&#039;&#039; http://www.webmaster-toolkit.com/htaccess-generator.shtml&lt;br /&gt;
&lt;br /&gt;
== How do I restrict directory access by IP address using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This can be a very effective way to protect your Joomla! administrator directory. Any other directory in public_html can be protected in the same way. This method only works if you have a static IP address assigned to you. Anyone attempting to browse such directories using a different IP Address will get a 403 Forbidden error.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
# In the directory you wish to protect, open (or create) a file called, .htaccess. (Note the dot at the beginning of the file name.)&lt;br /&gt;
# Add the following code to this file, replacing 100.100.100.100 in this example with the static IP address you plan to allow:&lt;br /&gt;
&lt;br /&gt;
 Order Deny,Allow&lt;br /&gt;
 Deny from all&lt;br /&gt;
 Allow from 100.100.100.100&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Optional: You can enter partial IP Addresses, such as, 100.100.100. This allows access to a range of addresses.&lt;br /&gt;
&lt;br /&gt;
* Optional: You can add multiple addresses by separating them with comma&#039;s.&lt;br /&gt;
&lt;br /&gt;
 100.100.100.101, 100.100.100.102&lt;br /&gt;
&lt;br /&gt;
==How do I convert an htaccess.txt file into a .htaccess file?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When using PHP as an Apache module, you can change the configuration settings using directives in Apache configuration files (e.g. httpd.conf and .htaccess files). You will need &amp;quot;AllowOverride Options&amp;quot; or &amp;quot;AllowOverride All&amp;quot; privileges to do so. If you control your own Apache configuration, you can and should use httpd.conf. If you do not control your Apache configuration (such as on a shared server), you must use .htaccess files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# First look for the file, htaccess.txt in your root directory. It should have been installed during the Joomla! installation. (Note that this file name does not begin with a dot.) Open and carefully read htaccess.txt. It contains important suggestions on how to protect your site.&lt;br /&gt;
# Make any adjustments to this file as appropriate for your site, and then save it in your site&#039;s home directory as, .htaccess (including the dot).&lt;br /&gt;
# Test your site&#039;s front end and back end. If it produces errors, rename the file back to htaccess.txt, and troubleshoot your edits. If you are unable to get this working, you may have to leave the file named htaccess.txt.&lt;br /&gt;
# Use phpinfo() to ensure that all configurations set as you intended. Note: Web-accessible files that include phpinfo() are potential security risks they offer attackers lots of useful information about your server. Always remove such files after use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More Information&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://us2.php.net/configuration.changes Official PHP Manual: How to change configuration settings]&lt;br /&gt;
* [http://us2.php.net/manual/en/ini.php#ini.list Official PHP Manual: List of PHP INI directives]&lt;br /&gt;
&lt;br /&gt;
== How do I block direct hot linking to image files using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Caveats&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Your server must allow .htaccess files for this technique to work.&lt;br /&gt;
# If you do not have a .htaccess file in your root directory, see the related FAQ first.&lt;br /&gt;
# Do not use this method to redirect image hot links to HTML pages or to servers that are not your own.&lt;br /&gt;
# Hot linked images can only be replaced by other images, not with HTML pages.&lt;br /&gt;
# As with any .htaccess rewrite, you may block legitimate traffic, such as users behind proxies or firewalls.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Create a jpeg image called no_hot_link.jpe. Note that the odd file extention (.jpe) is intentional and important. Place this file in your images directory.&lt;br /&gt;
# Place the following code in the .htaccess file of your root directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt; RewriteEngine On&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)*your_site\.com/ [NC]&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} !^$&lt;br /&gt;
 RewriteRule \.(jpe?g|gif|bmp|png)$ /images/no_hot_link.jpe [L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Explanation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first line begins the Apache rewrite rule. The second line matches any requests from your own site, here called your_site.com url. The [NC] flag means &amp;quot;aNy Case&amp;quot;, which means, match any and all upper and lower case characters. The third line allows empty referrals such as when a user is behind a caching proxy. The last line matches any files ending with the extension jpeg, jpg, gif, bmp, or png. This is then replaced by the no_hot_link.jpe file in your images directory. This JPEG file uses the extension jpe instead of jpg to prevent these rules from blocking your replacement image.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block hot linking from specific domains&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To stop hotlinking from specific domains only, such as myspace.com, blogspot.com and livejournal.com, while allowing other web sites to hotlink to your images, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt; RewriteEngine On&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} ^http://([^.]+\.)*myspace\.com/ [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} ^http://([^.]+\.)*blogspot\.com/ [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} ^http://([^.]+\.)*livejournal\.com/ [NC]&lt;br /&gt;
 RewriteRule \.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpe [L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can add as many different domains as you want. Every RewriteCond line except the last one should end with the [NC,OR] flags. NC means to ignore case. OR means &amp;quot;Or Next&amp;quot;, as in, match this line OR the next line. The last RewriteCond omits the OR flag to stop matching after the last RewriteCond.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display a 403 forbidden code&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can display a 403 Forbidden error code. Replace the last line of the previous examples with this line:&lt;br /&gt;
&lt;br /&gt;
 RewriteRule \.(jpe?g|gif|bmp|png)$ - [F]&lt;br /&gt;
&lt;br /&gt;
= PHP =&lt;br /&gt;
&lt;br /&gt;
== Why is Joomla! written in PHP? ==&lt;br /&gt;
&lt;br /&gt;
: Might as well get it from the horse&#039;s mouth. In [http://www.oracle.com/technology/pub/articles/php_experts/rasmus_php.html Do you PHP?], Rasmus Lerdorf, the originator of PHP, sums up how and why PHP developed as it did.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&amp;quot;What it all boils down to is that PHP was never meant to win any beauty contests. It wasn&#039;t designed to introduce any new revolutionary programming paradigms. It was designed to solve a single problem: the Web problem. That problem can get quite ugly, and sometimes you need an ugly tool to solve your ugly problem. Although a pretty tool may, in fact, be able to solve the problem as well, chances are that an ugly PHP solution can be implemented much quicker and with many fewer resources. That generally sums up PHP&#039;s stubborness.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== What is the latest stable release of PHP? ==&lt;br /&gt;
&lt;br /&gt;
Check the [http://www.php.net/downloads.php official PHP download page] for information on the latest PHP release.&lt;br /&gt;
&lt;br /&gt;
== How do I tune for speed with PHP5 and MySQL5? ==&lt;br /&gt;
&lt;br /&gt;
: This is just a point by point summary of how I&#039;ve been tuning and tweaking our Joomla sites to get them running as quickly as possible. For reference, we run all our sites off a Rackspace dedicated server, with 1Gb RAM, a 2Ghz dual core Athlon, running Apache 2.0.x (current revision), PHP 5.0.x (current revision) and MySQL 5.0.18.&lt;br /&gt;
&lt;br /&gt;
: These are listed in terms of apparent speed increase - that is, not the sheer speed for the full page, but the speed before the page is usable to view content, even if not all features are loaded.&lt;br /&gt;
&lt;br /&gt;
# PHP caching. I had been running eAccelerator, but switched to APC today, and it has made the system even faster than before, and eAccelerator was a big boost over uncached PHP. Joomla is a big complex system, so using precompiled code is a big time saver. I use a 128Mb in-memory cache, which is plenty for our needs.&lt;br /&gt;
# MySQL Query Caching. This one will vary depending on how dynamic your site is, and you can really kill the benefits by using the wrong extensions (any date/time based will need checking), but if you are serving pretty much the same queries each page load, it will drop the load times noticably.&lt;br /&gt;
# Template Image optimisation - template images really slow down the initial page load for first time visitors, so optimising the hell out of them makes sense. Remember that your template is probably not going to change as often as your story content, so you can afford to spend more time on optimising the images for it that you would otherwise. I recommend Irfanview, with the pngout plugin active for PNG images, and it isn&#039;t bad for JPG and GIF images either. Don&#039;t forget to ramp up the compression level of PNGs, and, if possible, reducing them to indexed pallettes.&lt;br /&gt;
# CSS compression. Easy one this - put a little script to output a gzipped version of your CSS file(s) and point your index.php at it. Example script below - I didn&#039;t write it, but it&#039;s short, to the point, and works.&lt;br /&gt;
&lt;br /&gt;
              ob_start (&amp;quot;ob_gzhandler&amp;quot;);&lt;br /&gt;
              header(&amp;quot;Content-type: text/css&amp;quot;);&lt;br /&gt;
              header(&amp;quot;Cache-Control: must-revalidate&amp;quot;);&lt;br /&gt;
              $offset = 60 * 60 ;&lt;br /&gt;
              $ExpStr = &amp;quot;Expires: &amp;quot; .&lt;br /&gt;
              gmdate(&amp;quot;D, d M Y H:i:s&amp;quot;,&lt;br /&gt;
              time() + $offset) . &amp;quot; GMT&amp;quot;;&lt;br /&gt;
              header($ExpStr);&lt;br /&gt;
&lt;br /&gt;
# Strip unneeded modules, components, mambots from Joomla. If you haven&#039;t used them, the impact on your loading time is minimal, but with more components/modules active, there are more points of failure, and Apache errors are slow!&lt;br /&gt;
# Scrutinise the Apache error log. It is amazing how many errors can crop up even with a fairly minimal Joomla install, and they don&#039;t necessarily affect the appearance of the page. Check your error log, especially if you are using custom components/modules, or any non-standard config settings. Once you&#039;ve noticed any problems, it&#039;s time to fix the code creating them, and test thoroughly before uploading the fixed versions.&lt;br /&gt;
# Keep rechecking as you add/remove features, redesign or change any server configuration options. Even things like adding virtual servers in Apache can affect speed of the server, as a missed config setting can cause general Apache delays.&lt;br /&gt;
&lt;br /&gt;
== Should PHP run as a CGI script or as an Apache module? ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to configure Apache to use PHP: &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Configure Apache to load the PHP interpreter as an &amp;lt;i&amp;gt;Apache module&amp;lt;/i&amp;gt;&lt;br /&gt;
# Configure Apache to run the PHP interpreter as a &amp;lt;i&amp;gt;CGI binary&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;(PS: Windows IIS normaly configures as CGI by the way)&amp;lt;/span&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
It is the intention of this post to provide you information relating to &lt;br /&gt;
the configuration and recognition of each method. &amp;quot;In general&amp;quot;&lt;br /&gt;
historically only one method or the other has been implemented,&lt;br /&gt;
however, with the architectural changes made to PHP starting with PHP5,&lt;br /&gt;
it has been quite common for hosting firms to configure for both. One&lt;br /&gt;
version running as CGI and one version running as a Module. It is&lt;br /&gt;
generally accepted more recently that running PHP as a CGI is more&lt;br /&gt;
secure, however, running PHP as an Apache Module does have a slight&lt;br /&gt;
performance gain and is generally how most pre-configured systems will&lt;br /&gt;
be delivered out of the box.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;What is the difference between CGI and apache Module Mode?&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An &amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Apache module&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
is compiled into the Apache binary, so the PHP interpreter runs in the&lt;br /&gt;
Apache process, meaning that when Apache spawns a child, each process&lt;br /&gt;
already contains a binary image of PHP. A CGI is executed as a single&lt;br /&gt;
process for each request, and must make an exec() or fork() call to the&lt;br /&gt;
PHP executable, meaning that each request will create a new process of&lt;br /&gt;
the PHP interpreter.  Apache is much more efficient in it&#039;s ability to&lt;br /&gt;
handle requests, and maaging resources, making the Apache module&lt;br /&gt;
slightly faster than the CGI (as well as more stable under load).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;CGI Mode&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
on the other hand, is more secure because the server now manages and&lt;br /&gt;
controls access to the binaries. PHP can now run as your own user&lt;br /&gt;
rather than the generic Apache user. This means you can put your&lt;br /&gt;
database passwords in a file readable only by you and your php scripts&lt;br /&gt;
can still access it! The &amp;quot;Group&amp;quot; and &amp;quot;Other&amp;quot; permissions ( refer &amp;lt;a href=&amp;quot;component/option,com_easyfaq/task,view/id,73/Itemid,268/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Permissions FAQ&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
can now be more restrictive. CGI mode is also claimed to be more&lt;br /&gt;
flexible in many respects as you should now not see, with phpSuExec (&lt;br /&gt;
refer [http://www.joomlatutorials.com/joomla-tips-and-tricks/40-miscellaneous-joomla-tips/114-how-to-troubleshoot-a-joomla-installation.html&amp;quot; target=&amp;quot;_blank Permissions under phpSuExec]&lt;br /&gt;
issues with file ownership being taken over by the Apache user,&lt;br /&gt;
therefore you should no-longer have problems under FTP when trying to&lt;br /&gt;
access or modify files that have been uploaded through a PHP interface,&lt;br /&gt;
such as Joomla! upload options.&lt;br /&gt;
&lt;br /&gt;
If your server is&lt;br /&gt;
configured to run PHP as an Apache module, then you will have the&lt;br /&gt;
choice of using either php.ini or Apache .htaccess files, however, if&lt;br /&gt;
your server runs PHP in CGI mode then you will only have the choice of&lt;br /&gt;
using php.ini files locally to change settings, as Apache is no longer&lt;br /&gt;
in complete control of PHP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Testing and Reviewing Your PHP Installation&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Also known as &amp;quot;Everything you ever wanted and didn&#039;t want to know about PHP&amp;quot;&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To&lt;br /&gt;
find out the PHP interpreter mode and to generally test your PHP&lt;br /&gt;
installation and to find out a vast amount of information about your&lt;br /&gt;
PHP environment, supported utilities, applications and settings, you&lt;br /&gt;
create a single PHP file containing &amp;lt;i&amp;gt;only&amp;lt;/i&amp;gt; the following lines;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 phpinfo();&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This single line of code outputs an amazing amount of information, be warned.... &amp;lt;img src=&amp;quot;http://forum.joomla.org/Smileys/joomla/wink.gif&amp;quot; alt=&amp;quot;Wink&amp;quot; border=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the file as any filename you wish, but with the &amp;quot;.php&amp;quot; extension. FTP it to your server and open it in a browser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Other useful information&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following are PHP functions, that when run from a PHP File can provide some useful information, &amp;lt;i&amp;gt;(less than the above option)&amp;lt;/i&amp;gt; many should run on most hosts, however many hosts disable some of these functions for security. No Guarantee&#039;s offered...&lt;br /&gt;
&lt;br /&gt;
Again,&lt;br /&gt;
as above, make a file, name it anything you wish but make sure it has&lt;br /&gt;
the &amp;quot;.php&amp;quot; extension, copy and paste the following lines in to it and&lt;br /&gt;
FTP to your server.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?&amp;lt;br /&amp;gt;echo &amp;quot;Hostname: &amp;quot;. @php_uname(n) .&amp;quot;&amp;quot;;&lt;br /&gt;
 if (function_exists( &#039;shell_exec&#039; )) { echo &amp;quot;Hostname: &amp;quot;.&lt;br /&gt;
 @gethostbyname(trim(`hostname`)); } else { echo &amp;quot;Server IP: &amp;quot;.&lt;br /&gt;
 $_SERVER[&#039;SERVER_ADDR&#039;] .&amp;quot;&amp;quot;; }&lt;br /&gt;
 echo &amp;quot;Platform: &amp;quot;. @php_uname(s) .&amp;quot; &amp;quot;. @php_uname(r) .&amp;quot; &amp;quot;. @php_uname(v) .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Architecture: &amp;quot;. @php_uname(m) .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Username: &amp;quot;. get_current_user () .&amp;quot; ( UiD: &amp;quot;. getmyuid() .&amp;quot;, GiD: &amp;quot;. getmygid() .&amp;quot; )&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Curent Path: &amp;quot;. getcwd () .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Type: &amp;quot;. $_SERVER[&#039;SERVER_SOFTWARE&#039;] . &amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Admin: &amp;quot;. $_SERVER[&#039;SERVER_ADMIN&#039;] . &amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Signature: &amp;quot;. $_SERVER[&#039;SERVER_SIGNATURE&#039;] .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Protocol: &amp;quot;. $_SERVER[&#039;SERVER_PROTOCOL&#039;] .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Mode: &amp;quot;. $_SERVER[&#039;GATEWAY_INTERFACE&#039;] .&amp;quot;&amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
 ?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Joomla! HISA&amp;lt;/span&amp;gt; or &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Joomla! Tools Suite&amp;lt;/span&amp;gt; can also assist to determine which mode your server in running in, also&lt;br /&gt;
providing a large amount of other related  information including recommendations on configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Joomla! Tools Suite&amp;lt;/b&amp;gt; (JTS) is a complete suite of Tools to help you troubleshoot and maintain Joomla! and include the &amp;quot;HISA&amp;quot; script. [http://joomlacode.org/gf/project/jts/ Download JTS Here]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Joomla! Health, Installation and Security Audit&amp;lt;/b&amp;gt; (HISA) is a single standalone script that provides purely configuration information. [http://joomlacode.org/gf/project/hisa/ Download HISA Here]&lt;br /&gt;
&lt;br /&gt;
*[http://forum.joomla.org/viewtopic.php?t=136328 Forum Discussion Here] (Project is [http://forum.joomla.org/viewtopic.php?p=1804483#p1804483 &#039;&#039;Dormant&#039;&#039;] since August 2010)&lt;br /&gt;
&lt;br /&gt;
*[http://www.joomlatutorials.com/joomla-tips-and-tricks/40-miscellaneous-joomla-tips/114-how-to-troubleshoot-a-joomla-installation.html How to TroubleShoot A Joomla! Installation]&lt;br /&gt;
&lt;br /&gt;
Another &amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;Indirect method&amp;lt;/span&amp;gt;, and possibly not 100% reliable, is that if you are unable to make use of .htaccess on Linux hosting and Apache based servers then you are either running in CGI mode or your host has disabled the use of .htaccess even if your server is running PHP as an Apache Module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color: maroon&amp;quot;&amp;gt;Remove these files immediately after use, the information contained in their output is extensive and explicit regarding your PHP and server configurations, it will help those wishing to cause your site harm&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;For those wishing to know more about &amp;quot;How To...&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Running PHP as an Apache module&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
To configure Apache to load PHP as a module to &amp;lt;i&amp;gt;&#039;parse&#039;&amp;lt;/i&amp;gt; your PHP scripts, the httpd.conf needs to be modified, typically found in &amp;quot;c:\Program Files\Apache Group\Apache\conf\&amp;quot; or &amp;quot;/etc/httpd/conf/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Search for the section of the file that has a series of commented out &amp;quot;LoadModule&amp;quot; statements. (Statements prefixed by the hash &amp;quot;#&amp;quot; sign are regarded as having been commented out.) If PHP is running in &amp;quot;Apache Module&amp;quot; Mode you should see something very similar to the following;&lt;br /&gt;
&lt;br /&gt;
LoadModule php4_module &amp;quot;c:/php/php4apache.dll&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;Apache 1.x&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP5&amp;lt;/b&amp;gt;&lt;br /&gt;
 LoadModule php5_module     C:/php/php5apache2.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 LoadModule php5_module     /usr/lib/apache/libphp5.so&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP4&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php4_module libexec/libphp4.so&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LoadModule php4_module C:/php/php4apache.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;and&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
 AddModule mod_php4.c&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;or&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 AddModule mod_php5.c&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;Apache 2.x&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP5&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php5_module     C:/php/php5apache2.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php5_module     /usr/lib/apache/libphp5.so&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP4&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php4_module     libexec/libphp4.so&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
LoadModule php4_module     C:/php/php4apache.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;and&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
AddModule mod_php5.c&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;or&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
AddModule mod_php4.c    &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Don&#039;t worry that you can&#039;t find a &amp;quot;mod_php4.c&amp;quot; or &amp;quot;mod_php5.c&amp;quot; file anywhere on your system. That directive does not cause Apache to search for the file on your system. For the curious, it specifies the order in which the various modules are enabled by the Apache server.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;If you&#039;re using Apache 2.x, you do not have to insert the AddModule directive. It&#039;s no longer needed in that version. Apache 2.x has its own internal method of determining the correct order of loading the modules.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now find the &amp;quot;AddType&amp;quot; section in the file, and add the following line after the last &amp;quot;AddType&amp;quot; statement:&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-php .php&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to support other file types, like &amp;quot;.php3&amp;quot; and &amp;quot;.phtml&amp;quot;, simply add them to the list, like this:&amp;lt;&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-php .php3&amp;lt;br /&amp;gt;&lt;br /&gt;
 AddType application/x-httpd-php .phtml&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run a syntax check and if all is ok, restart Apache...&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Running PHP as a CGI binary&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
To configure PHP to run as a CGI, again you will need to configure the&lt;br /&gt;
httpd.conf, but confirm that the above settings are not also&lt;br /&gt;
configured, unless you now what you are doing you can generate yourself&lt;br /&gt;
&amp;quot;HTTP 500&amp;quot; errors. Search your Apache configuration file for the&lt;br /&gt;
&amp;quot;ScriptAlias&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
Add the following line below after the ScriptAlias for &amp;quot;cgi-bin&amp;quot;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The location will depend on where PHP is installed on your system, you&lt;br /&gt;
should substitute the appropriate path in place of &amp;quot;c:/php/&amp;quot; (for&lt;br /&gt;
example, &amp;quot;c:/Program Files/php/&amp;quot;).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ScriptAlias /php/ &amp;quot;c:/php/&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apache&lt;br /&gt;
again needs to be configured for the PHP MIME type. Search for the&lt;br /&gt;
&amp;quot;AddType&amp;quot; section, and add the following line after it:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AddType application/x-httpd-php .php&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As in the case of running PHP as an Apache module, you can add whatever extensions you want Apache to recognise as PHP scripts, such as:&lt;br /&gt;
&lt;br /&gt;
AddType application/x-httpd-php .php3&amp;lt;br /&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php .phtml&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, you will need to tell the server to execute the PHP executable each time it encounters a PHP script. Add the following below any existing entries in the &amp;quot;Action&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
Action application/x-httpd-php &amp;quot;/php/php.exe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you notice, we have used the &amp;quot;ScriptAlias&amp;quot; reference, &amp;quot;/php/&amp;quot; portion&lt;br /&gt;
will be recognised as the scriptAlias configured above, this is sort a path alias which will correlate to your PHP installation path configured previously. &amp;lt;i&amp;gt;In other words, don&#039;t put &amp;quot;c:/php/php.exe&amp;quot; or &amp;quot;c:/Program Files/php/php.exe&amp;quot; in that directive, put&lt;br /&gt;
&amp;quot;/php/php.exe&amp;quot;, Apache WILL work it out if correctly configured.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Configuring the Default Index Page&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
This section applies to all users, whether you are loading PHP as a module or running it as a CGI binary, and has been seen often enough to warrant a mention.&lt;br /&gt;
&lt;br /&gt;
If you want to make your PHP script execute as the default page for a directory, you have to add another line to the &amp;quot;httpd.conf&amp;quot;. Simply search for the line in the file that begins with a &amp;quot;DirectoryIndex&amp;quot; and add &amp;quot;index.php&amp;quot; to the list of files on&lt;br /&gt;
that line. For example, if the line used to be:&lt;br /&gt;
&lt;br /&gt;
DirectoryIndex index.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;change it to&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DirectoryIndex index.html index.php&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;If you still wish .html files to be executed before .php files&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;or&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
DirectoryIndex index.php index.html&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;If you wish .php files to be executed before .html files&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next time you access the site or a directory within a site without a&lt;br /&gt;
filename, Apache will &amp;quot;auto-magically&amp;quot; deliver &amp;quot;index.php&amp;quot; if&lt;br /&gt;
available, or &amp;quot;index.html&amp;quot; if &amp;quot;index.php&amp;quot; is not available.&lt;br /&gt;
&lt;br /&gt;
== Why shouldn&#039;t I use PHP safe_mode? ==&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
Enabling safe_mode is not needed if other reasonable security precautions are followed. Using safe_mode for web site security is a poor compromise in a bad situation. It may make sense in some situations, but there is almost always a better way. Because safe_mode in some sense only gives the illusion of safety, it will be removed from PHP starting with version 6.0.&lt;br /&gt;
&lt;br /&gt;
The Joomla! core works fine with or without PHP safe_mode. The one exception to this rule is the installation script. This is because safe_mode, by design, turns off the PHP functions that enable easy uploading via a Web browser. If you do use safe_mode, and need to perform installs via the Web browser, temporarily turn safe_mode OFF, and turn it back ON when finished.&lt;br /&gt;
&lt;br /&gt;
Some third-party extensions may require the specific PHP functions that are blocked by safe_mode. Such extensions should be carefully evaluated to be sure you understand exactly why they require such powerful and potentially dangerous functions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the official PHP site&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;The PHP safe mode is an attempt to solve the shared-server security problem. It is architecturally incorrect to try to solve this problem at the PHP level, but since the alternatives at the web server and OS levels aren&#039;t very realistic, many people, especially ISP&#039;s, use safe mode for now.&amp;quot;&#039;&#039; &lt;br /&gt;
&#039;&#039;&#039;More Information&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode Official PHP Manual: PHP Security and Safe Mode Configuration Directives]&lt;br /&gt;
# [http://us3.php.net/manual/en/features.safe-mode.functions.php Official PHP Manual: PHP Functions restricted/disabled by safe mode]&lt;br /&gt;
&lt;br /&gt;
= Development =&lt;br /&gt;
== How do I setup a secure demo site? ==&lt;br /&gt;
&lt;br /&gt;
In /includes/version.php look for:&lt;br /&gt;
&lt;br /&gt;
 /** @var string Whether site is a production = 1 or demo site = 0 */&lt;br /&gt;
 var $SITE = 1;&lt;br /&gt;
 /** @var string Whether site has restricted functionality mostly used for demo sites: 0 is default */&lt;br /&gt;
 var $RESTRICT = 0;&lt;br /&gt;
&lt;br /&gt;
For a demo site it is advised to following:&lt;br /&gt;
&lt;br /&gt;
 /** @var string Whether site is a production = 1 or demo site = 0 */&lt;br /&gt;
 var $SITE = 0;&lt;br /&gt;
 /** @var string Whether site has restricted functionality mostly used for demo sites: 0 is default */&lt;br /&gt;
 var $RESTRICT = 1;&lt;br /&gt;
&lt;br /&gt;
 $SITE = 0&lt;br /&gt;
 // Allows multiple user logins with only one account. By default Joomla! &lt;br /&gt;
 // allows only one active session per account as a security feature.&lt;br /&gt;
&lt;br /&gt;
 $RESTRICT = 1&lt;br /&gt;
 // Disables those logging in, both Front-end and Back-end from changing &lt;br /&gt;
 // user details - like password and username&lt;br /&gt;
&lt;br /&gt;
These settings are used on the official demo site http://demo.joomla.org&lt;br /&gt;
&lt;br /&gt;
You should also make all files and folders nonwriteable - especially the configuration.php file. Also recommend you setup an automatic cron job that refreshes the database at a set interval (in our case 60mins) from a db script.&lt;br /&gt;
&lt;br /&gt;
== How can I view a live site while developing, but hide it from others? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The method described below should be used for relatively minor modifications, such as adjusting menus or quickly reorganizing content sections. More complex tasks, such as installing new components or adjusting complex configuration settings should be performed and tested on a development server first. Not only does this keep your public site up and running, but it also lets you test at your leisure, thus reducing errors. One way to do it is to create a sub-domain (i. e., dev.yourdomain.com) and install Joomla! there just as it is installed on your public site.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Login to the administrator section, and choose: Site &amp;gt; Global Configuration.&lt;br /&gt;
&lt;br /&gt;
2. The first option you&#039;ll see is is to set the site offline. Choose &amp;quot;Yes&amp;quot; and press the Save button. This will hide prevent display of all site pages, and replace them with the following message:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;This site is down for maintenance. Please check back again soon. message instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3. While you are logged into the &amp;quot;back end&amp;quot; administrator system, you can still view the &amp;quot;front end,&amp;quot; by choosing Site &amp;gt; Template &amp;gt; Preview. This will display the site as it would appear to users along with a warning at the top that the site is down for maintenance.&lt;br /&gt;
&lt;br /&gt;
= Site Recovery =&lt;br /&gt;
&lt;br /&gt;
== Help! My site&#039;s been compromised. Now what? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Change all relevant passwords:&#039;&#039;&#039; Assume your passwords have been harvested and immediately change all critical passwords, including shell access, FTP access, Joomla! Administrator accounts, and the database account.&lt;br /&gt;
# &#039;&#039;&#039;Check raw logs:&#039;&#039;&#039; Identify when and how the attackers gained access to your site by carefully reviewing your raw server logs. Make careful note of the date/time and names of attacked files. Note that these logs may have been deleted or altered, so a lack of evidence does not prove a lack of activity.&lt;br /&gt;
# &#039;&#039;&#039;List recently modified files:&#039;&#039;&#039; Before making any changes to your site, generate a list of recently modified files. Here&#039;s a php script that will list the files for you. Remove this script as soon as you have your list and don&#039;t publish a link to it!&lt;br /&gt;
# &#039;&#039;&#039;Note suspicious newly-created files:&#039;&#039;&#039; Use this list to identify new files that don&#039;t belong. Pay particular attention to their creation and modification dates, and correlate them to the dates of attacks shown in your log files.&lt;br /&gt;
# &#039;&#039;&#039;Note suspicious recently-modified files:&#039;&#039;&#039; Check the modified files list for any files that were recently changed. Pay particular attention to the modification, and correlate them to the dates of attacks shown in your log files.&lt;br /&gt;
# &#039;&#039;&#039;Check for bogus CRON Jobs:&#039;&#039;&#039; Hacked cron jobs can be setup to reinfect your site over and over again.&lt;br /&gt;
# &#039;&#039;&#039;Coordinate with your host:&#039;&#039;&#039; If you have identified how you were cracked, report the method to your host. If you are on a shared server, you may habe been attacked through another vulnerable site on your server. Report this to your host. A reputable host will appreciate your efforts in this area.&lt;br /&gt;
# &#039;&#039;&#039;Delete the entire public_html directory:&#039;&#039;&#039; This is the best way to guarantee that every potential vulnerability in that site is removed.&lt;br /&gt;
# &#039;&#039;&#039;Delete related database records:&#039;&#039;&#039; This step may only be possible if you have good backups. Simple script kiddies, who are only trying to mark your index page, may not attack your database, but professionals are usually very interested in confidential data, such as passwords. They may pose as script kiddies to avoid suspicion while repeatedly harvesting confidential information from your database.&lt;br /&gt;
# &#039;&#039;&#039;Reinstall everything:&#039;&#039;&#039; Use pre-crack backups. If you don&#039;t have good backups, go on to step 10.&lt;br /&gt;
# &#039;&#039;&#039;Reset critical passwords again:&#039;&#039;&#039; You must reset your passwards again now that your server is finally cleaned of any possible, hidden trojan horses.&lt;br /&gt;
# &#039;&#039;&#039;Rebuild site:&#039;&#039;&#039; If you are unable to rebuild from clean backups, rebuild your entire site using original, pre-crack installs. Use only the latest stable versions of all software, and check the List of Vulnerable Extensions&lt;br /&gt;
# &#039;&#039;&#039;Review security processes:&#039;&#039;&#039; Follow standard security precautions for important settings in php.ini, globals.php, configuration.php, .htaccess, etc.&lt;br /&gt;
# &#039;&#039;&#039;Review backup processes:&#039;&#039;&#039; If you don&#039;t already have one, add a dependable backup process to your site administration practices.&lt;br /&gt;
# &#039;&#039;&#039;Stay watchful:&#039;&#039;&#039; Attackers often return repeatedly. Closely monitor your raw logs for suspicious activity.&lt;br /&gt;
&lt;br /&gt;
==How do I reset an administrator password?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; This method is for Joomla versions up to and including 1.0.12{{JVer|1.0}}. For later versions of Joomla and Joomla 1.5.xx versions please use this &#039;&#039;&#039;([[How_do_you_recover_your_admin_password%3F|FAQ]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Because passwords are stored using a one-way MD5 hash which prevents recovering the password, you cannot recover an existing password, but you can reset it to a new password by editing the password field in the database. In the following directions, you will set the password MD5 value to a known value and then log-in using the password that matches that value. Once logged in, you can change the password again using normal Joomla! user access screens.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhanced Password Encryption Note Joomla! 1.0.13+ and Joomla! 1.5.x&#039;&#039;&#039;&lt;br /&gt;
This method works with the new salt-enhanced passwords. This is because Joomla! will automatically update passwords in the earlier format.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Use a MySQL utility such as phpMyAdmin or MySQL Query Browser .&lt;br /&gt;
&lt;br /&gt;
2. Open the correct database and select the table, jos_users . (Change default table prefix, &#039;jos_&#039; to your table prefix if it is different.)&lt;br /&gt;
&lt;br /&gt;
3. Select the record (or table row) for your administrator account. (The default Super Administrator is user number 62.)&lt;br /&gt;
&lt;br /&gt;
4. Copy and paste a known MD5 hash into the password field. You can use one of the below examples.&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; You must paste the password&#039;s hash value, not the password itself. You can use any of the following hashs, or create your own using one of the MD5 tools listed below.&lt;br /&gt;
&lt;br /&gt;
 password = &amp;quot;MD5 hash of password&amp;quot;&lt;br /&gt;
 ------------------------------------------------------&lt;br /&gt;
 admin = 21232f297a57a5a743894a0e4a801fc3&lt;br /&gt;
 secret = 5ebe2294ecd0e0f08eab7690d2a6ee69&lt;br /&gt;
 OU812 = 7441de5382cf4fecbaa9a8c538e76783&lt;br /&gt;
&lt;br /&gt;
5. Save the user record.&lt;br /&gt;
&lt;br /&gt;
6. Point a browser to your site and log in using the Super Administrator account you just modified.&lt;br /&gt;
&lt;br /&gt;
7. &#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; Once logged in, use the Joomla interface to change the password to one that only you know. This step is vital as it will &#039;salt&#039; your new password, thus adding an additional level of security on top of the MD5 hash.&lt;br /&gt;
&lt;br /&gt;
Note: This technique can be used to modify any other accounts password. You can also use it to change Usernames.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generating your own MD5 hash from a password of your choice&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can set the password to a value of your own choice. Use tools, such as the following, to create your own strong hashed password. Use the above directions once you&#039;ve generated a hash with these tools.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Online MD5 hash creation tools&#039;&#039;&#039;&lt;br /&gt;
* JavaScript MD5 - http://pajhome.org.uk/crypt/md5/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free MD5 utilities for download&#039;&#039;&#039;&lt;br /&gt;
* MD5 &amp;amp; Hashing Utilities - http://www.digital-detective.co.uk/freetools/md5.asp&lt;br /&gt;
* SlavaSoft HashCalc - http://www.slavasoft.com/hashcalc/overview.htm&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other MD5 tools&#039;&#039;&#039;&lt;br /&gt;
* There are many free online and downloadable MD5 utilities. Google &amp;quot;MD5 hash tool&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== How do I find exploits using the *NIX shell? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Check the active processes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use the &amp;quot;ps&amp;quot; command to look for odd or unknown processes, if you aren&#039;t sure what to look for there, user &amp;quot;netstat -ae | grep irc&amp;quot; and/or &amp;quot;netstat -ea | grep 666&amp;quot; and look for ports 6666, 6667, 6668, 6669, these are common ports used for running IRC bots, they may have the name &amp;quot;irc&amp;quot; listed against them, or may have &amp;quot;httpd&amp;quot; or sometimes other regular services names.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Check crontab&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Check your crontab and see if there is a strange entry, these are used in many exploits to restart IRC bots, even when admins or automated process monitors are used to kill a rogue process.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Check for hidden files or directories&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Check for hidden files or directories you dont expect to see, those starting with &amp;quot;.&amp;quot; (dots) and also look for &amp;quot;. &amp;quot; (dot, space) often favored to try and catch searches for hidden directories.&lt;br /&gt;
&lt;br /&gt;
Other examples of searches that may help pin down exploits and/or unexpected files and folders:&lt;br /&gt;
&lt;br /&gt;
 find /home -type f | xargs grep -l MultiViews&lt;br /&gt;
 find . -type f | xargs grep -l base64_encode &amp;lt;&amp;lt;&amp;lt; this can produce false positives, it is valid in many mail/graphics scripts&lt;br /&gt;
 find . -type f | xargs grep -l error_reporting&lt;br /&gt;
 find / -name &amp;quot;[Bb]itch[xX]&amp;quot;&lt;br /&gt;
 find / -name &amp;quot;psy*&amp;quot;&lt;br /&gt;
 ls -lR | grep rwxrwxrwx &amp;gt; listing.txt&lt;br /&gt;
&lt;br /&gt;
== What are these strange (URL-Encoded) characters doing in my code? ==&lt;br /&gt;
&lt;br /&gt;
Overview&lt;br /&gt;
&lt;br /&gt;
Attackers sometimes hide code away from prying eyes by URL Encoding it.&lt;br /&gt;
&lt;br /&gt;
The purpose of URL Encoding is to allow non-URL compatible characters to be passed via the URL. There are many legitimate reasons for doing this, such as hiding email from spammers, dealing with spaces in file names. etc.&lt;br /&gt;
&lt;br /&gt;
However, if you find odd, URL-encoded text in your site&#039;s files, you should investigate immediately. URL encoded text is very easy to translate using PHP, javascript, or one of the many free, online translators.&lt;br /&gt;
&lt;br /&gt;
Here are some trivial, non-functioning examples of URL Encoded text:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Original&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;URL Encoded&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;this line has spaces&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;this%20line%20has%20spaces&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eval(evil_script(http://www.evilsite/?evilscript.pl&amp;quot;));&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;%65val%28%65%76il_%73cri%70t&lt;br /&gt;
%28%68tt%70%3A//%77%77%77.&lt;br /&gt;
%65%76il%73ite/%3F%65%76il%73&lt;br /&gt;
cript.%70l%22%29%29%3B&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# [http://www.linkedresources.com/tools/unescaper_v0.2b1.html Text Unescape Utility]&lt;br /&gt;
# [http://www.w3schools.com/tags/ref_urlencode.asp HTML URL-encoding Reference]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Security]]&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Security_FAQ]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76271</id>
		<title>Security Checklist/Where can you learn more about file permissions?</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76271"/>
		<updated>2012-10-09T00:40:43Z</updated>

		<summary type="html">&lt;p&gt;Phild: added local link to windows permission primer replacing external link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* [[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
* [[Using phpSuExec]]&lt;br /&gt;
* [[Windows Permissions Primer]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Installation FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=How_do_Windows_file_permissions_work%3F&amp;diff=76270</id>
		<title>How do Windows file permissions work?</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=How_do_Windows_file_permissions_work%3F&amp;diff=76270"/>
		<updated>2012-10-09T00:38:51Z</updated>

		<summary type="html">&lt;p&gt;Phild: initial page commit/creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Joomla and Windows file permissions - Explanation ==&lt;br /&gt;
&amp;lt;p&amp;gt;For those of you that are either developing or delivering your Joomla&amp;amp;#33; Web-Sites from the Windows environment, it is sometimes difficult to obtain relevant information regarding permissions. Unfortunately, it is a fact that most Web-Serving is offered under Unix and that Unix is pretty well documented within this environment. Hopefully the following information will go some way to clearing up any confusion and provide a little guidance.&lt;br /&gt;
&lt;br /&gt;
===== Windows Web-Servers Overview =====&lt;br /&gt;
Firstly, lets discuss the differences between servers, in general most Windows folks appear to be using either Apache(Win32) or Microsoft IIS, these two servers operate very differently and utilize slightly different models of delivery.&lt;br /&gt;
Apache(Win32) generally runs on the host computer as the User that it was installed under, whereas IIS installs under a specific user but will run under a newly installed user &amp;quot; IUSR_ &amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===== Permission Defaults =====&lt;br /&gt;
By default, Unix tends to only give full access to the &amp;quot;owning&amp;quot; user to files and directories, in opposition to this approach Windows by default will also assign the Group &amp;quot;Everyone&amp;quot;, Full permissions. The first thing any good Windows Administrator does is remove the rights of the &amp;quot;Everyone&amp;quot; group, to improve security. For local PC testing, this is probably not necessary, but explains why, if &amp;quot;Everyone&amp;quot; is not removed and you run some form of permissions check script or the Joomla! Pre-Installation check, on the whole you will have Full &amp;quot;Read, Write and Execute&amp;quot; permissions, because you are acquiring the rights of the &amp;quot;Everyone&amp;quot; Group.&lt;br /&gt;
&lt;br /&gt;
===== Microsoft Internet Information Server (IIS) =====&lt;br /&gt;
IIS comes in two main flavors, PWS (Personal WebServer), and IIS (Internet Information Server). Essentially these are the same application, PWS is just a cut-down version of IIS designed for desktop environments, whereas IIS is designed for Server environments. PWS limits you to a single main site, so your application installations will generally be in sub-directories of the main site. IIS, on the other hand, provides the functionality for Virtual Hosts to be run from these directories, delivering multi-site capability.&lt;br /&gt;
&lt;br /&gt;
Due to the different functionality limitations, PWS does not have the &amp;quot;Permissions Wizard&amp;quot; as it is determined to not be needed, only one user will be using the Server, but in IIS many users will be using the Server, thus differing permission assignments are needed.&lt;br /&gt;
&lt;br /&gt;
Once the &amp;quot;Everyone&amp;quot; account is removed, Windows IIS is now left with the &amp;quot; IUSR_* &amp;quot; account having top-level rights to the Web-Server directories, a permissions check now should yield different results. Only the IUSR_* account has full permissions and other users should acquire either &amp;quot;Read Only&amp;quot; or no rights. Read only rights are determined by which other users have been assigned what rights to the IIS directories manually.&lt;br /&gt;
&lt;br /&gt;
===== Assigning Permissions =====&lt;br /&gt;
Assigning permissions in Windows is reasonably straight forward, but can be a little confusing at times.&lt;br /&gt;
Right-Click on the appropriate folder or file, selecting &amp;quot;Properties&amp;quot; or &amp;quot;Sharing and Security&amp;quot; will enter the Windows Security Management pane. Selecting (click once) on any user name listed will display the rights that user has (in the bottom half of the pane), some rights might be &amp;quot;greyed&amp;quot; out, these are unavailable, either because the current user (you are logged in as) does not have higher enough permissions to alter them, or they are inherited from the directory above and have been set to use that higher level directories permissions (this is generally the default mechanism).&lt;br /&gt;
&lt;br /&gt;
As you can see, Windows utilizes the following Permissions/Rights scheme:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|  style=&amp;quot;border-collapse: collapse&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; bordercolor=&amp;quot;#000000&amp;quot; height=&amp;quot;147&amp;quot; width=&amp;quot;533&amp;quot; &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;5%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;1.&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;Full Control&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;Allows: 1, 2, 3, 4, 5, 6, 7&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;5%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;amp;nbsp;2.&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;amp;nbsp;Modify&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;Allows: 2, 3, 4, 5, 6&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;5%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;amp;nbsp;3.&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;amp;nbsp;Read &amp;amp;amp; Execute&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;Allows: 3, 4&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;5%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;amp;nbsp;4.&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;amp;nbsp;List Folder Contents&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;Allows: 4 (but cannot run programs)&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;5%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;amp;nbsp;5.&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;amp;nbsp;Read&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;Allows: 5 (Implies: 4)&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;5%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;amp;nbsp;6.&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;amp;nbsp;Write&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;Allows: 6 (Implies:4 )&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;5%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;7.&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;amp;nbsp;Special Permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;Allows: Combinations&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Windows file permissions properties =====&lt;br /&gt;
Windows file permissions can be seen as having &amp;lt;strong&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;similar&amp;lt;/strong&amp;gt; properties as UNIX or Linux file (Modes) permissions they are just represented differently. For example, you are probably used to having permissions represented as 644/666 755/777, instead of being described in the terms above. So, when you are quoted to use 644 this equates to:&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; The owner of this file can read and write to it.&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; The owner&#039;s group can read the file.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; Everyone else can read the file.&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;* Note: &amp;lt;/font&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;font face=&amp;quot;Times New Roman&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Windows and Unix permissions (Access Control Lists) do not equate exactly, as Windows does not use &amp;quot;Groups&amp;quot; mechanism in the same manner, but for this discussion and in regards to the Web-Hosting environment they can be summarily equated.&amp;lt;/em&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font face=&amp;quot;Times New Roman&amp;quot;&amp;gt;&amp;lt;em&amp;gt;&amp;lt;strong&amp;gt;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;font face=&amp;quot;Times New Roman&amp;quot;&amp;gt;&amp;lt;em&amp;gt;&amp;lt;strong&amp;gt;Ah but&amp;lt;/strong&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/font&amp;gt;,&amp;amp;nbsp; in windows &amp;quot;&amp;lt;em&amp;gt;&amp;lt;strong&amp;gt;Groups&amp;lt;/strong&amp;gt;&amp;lt;/em&amp;gt;&amp;quot; are not used and &amp;quot;&amp;lt;em&amp;gt;&amp;lt;strong&amp;gt;Everyone&amp;lt;/strong&amp;gt;&amp;lt;/em&amp;gt;&amp;quot; should have been removed.....&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;So this is where Windows and Unix do not quite equate, but what can be done is to &amp;quot;match&amp;quot; or &amp;quot;correlate&amp;quot; equivalent meanings. So this outline is not really going to provide you with a Windows or an NTFS specific permissions guide but more of an understanding of how the commonly quoted numbered UNIX/Linux style permissions correlate on a machine with an NTFS file system. &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;amp;nbsp; &amp;lt;br&amp;gt;&lt;br /&gt;
The files that are placed in the www or public_html root folder, or whatever directory your site (www.domain.com.au or localhost) points to on your hard drive should be owned by your user account, but only if that user is not what is considered as a privileged user like &amp;quot;Administrator&amp;quot; on Windows or &amp;quot;root&amp;quot; on UNIX/Linux. These accounts should not be used for everyday use.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Best Practices =====&lt;br /&gt;
Commonly used security practices suggest that all &amp;lt;strong&amp;gt;FILES&amp;lt;/strong&amp;gt; should have the following permissions.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;strong&amp;gt;Owner&amp;amp;nbsp; :&amp;lt;/strong&amp;gt;&amp;amp;nbsp; Read &amp;amp;amp; Write&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;strong&amp;gt;Group&amp;amp;nbsp;&amp;amp;nbsp; :&amp;lt;/strong&amp;gt;&amp;amp;nbsp; Read Only &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;strong&amp;gt;Others :&amp;lt;/strong&amp;gt; Read Only&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;strong&amp;gt;All DIRECTORIES/FOLDERS&amp;lt;/strong&amp;gt; should have the following permissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;strong&amp;gt;Owner&amp;amp;nbsp; :&amp;lt;/strong&amp;gt; Read, Write &amp;amp;amp; Execute&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;strong&amp;gt;Group&amp;amp;nbsp;&amp;amp;nbsp; :&amp;lt;/strong&amp;gt; Read &amp;amp;amp; Execute&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;strong&amp;gt;Others :&amp;lt;/strong&amp;gt; Read &amp;amp;amp; Execute&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;em&amp;gt;Arguably, this is not necessarily &amp;quot;optimum&amp;quot; security, but a balance must be struck between security, functionality and maintainability.&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Windows, unlike Unix, does not maintain a single ACL for &amp;quot;Execute&amp;quot;, but simply provides &amp;quot;Read &amp;amp;amp; Execute&amp;quot; combined, which does not imply &amp;quot;Write&amp;quot;. The &amp;quot;Read &amp;amp;amp; Execute&amp;quot; ACL does however also implies &amp;quot;List Directory Contents&amp;quot;. Therefore, if you have only Read &amp;amp;amp; Write permissions on a directory but no &amp;quot;Execute&amp;quot; you will not be able to see the contents of the directory and may also have problems when attempting you run the file through a Web-Browser.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Unfortunately a little understanding of UNIX/Linux permissions is required to fully equate/correlate in to Windows permissions, the following &amp;quot;cheat-sheet&amp;quot; should assist;&amp;lt;/p&amp;gt;&amp;lt;p align=&amp;quot;center&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
{|  style=&amp;quot;border-collapse: collapse&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; bordercolor=&amp;quot;#000000&amp;quot; height=&amp;quot;283&amp;quot; width=&amp;quot;659&amp;quot; &lt;br /&gt;
|  align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#cccccc&amp;quot; width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Unix Mode&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  bgcolor=&amp;quot;#cccccc&amp;quot; width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Windows ACL&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  bgcolor=&amp;quot;#cccccc&amp;quot; width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Comments&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;7&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;&amp;amp;nbsp;Modify&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;em&amp;gt;Read, Write &amp;amp;amp; Execute, you should be the owner of this file &amp;lt;br&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;6&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;&amp;amp;nbsp;Read &amp;amp;amp; Write&amp;lt;br&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;em&amp;gt;&amp;amp;nbsp;&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;5&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;&amp;amp;nbsp;Read &amp;amp;amp; Execute&amp;lt;br&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;em&amp;gt;used for most applications &amp;lt;br&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;4&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;&amp;amp;nbsp;Read Only&amp;lt;br&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;em&amp;gt;security through obscurity is not a good practice &amp;lt;br&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;3&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;&amp;amp;nbsp;Write &amp;amp;amp; Execute&amp;lt;br&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;em&amp;gt;not available through windows, unless &amp;quot;Special&amp;quot; Permissions is used, not commonly used &amp;lt;br&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;2&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;&amp;amp;nbsp;Write Only&amp;lt;br&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;em&amp;gt;not available through windows, unless &amp;quot;Special&amp;quot; Permissions is used, not commonly used &amp;lt;br&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;1&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;&amp;amp;nbsp;Execute Only&amp;lt;br&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|  width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;p&amp;gt;&amp;lt;em&amp;gt;(not available through windows, unless &amp;quot;Special&amp;quot; Permissions is used, not commonly used) &amp;lt;br&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;So as a comparison example to Unix Modes, when you are quoted something like 644, you would now need to break that in to three entities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;6&amp;lt;/strong&amp;gt;&amp;lt;/font&amp;gt;&amp;amp;nbsp; :&amp;amp;nbsp; &amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;4&amp;lt;/strong&amp;gt;&amp;lt;/font&amp;gt;&amp;amp;nbsp; : &amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;4&amp;lt;/strong&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; The first number represents the &amp;quot;&amp;lt;strong&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;Owners&amp;lt;/font&amp;gt;&amp;lt;/strong&amp;gt;&amp;quot; permissions, the second represents the &amp;quot;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Group&amp;lt;/strong&amp;gt;&amp;lt;/font&amp;gt;&amp;quot; permissions and the third, the &amp;quot;&amp;lt;strong&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;Other&amp;lt;/font&amp;gt;&amp;lt;/strong&amp;gt;&amp;quot; permissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
So the Windows equivalent would be something like;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp; &amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Owner&amp;lt;/strong&amp;gt;&amp;lt;/font&amp;gt; (6) : &amp;lt;strong&amp;gt;Read &amp;amp;amp; Write&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp; &amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Group&amp;lt;/strong&amp;gt;&amp;lt;/font&amp;gt; (4) : &amp;lt;strong&amp;gt;Read Only&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp; &amp;lt;strong&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;Others &amp;lt;/font&amp;gt;&amp;lt;/strong&amp;gt;(4) : &amp;lt;strong&amp;gt;Read Only&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt; Hopefully, this example provides some insight in to the how to correlate Unix Modes/Permissions in to Windows Permissions/ACL&#039;s. this document does not include more complex subjects such as &amp;quot;effective&amp;quot;. &amp;quot;Inherited&amp;quot; or &amp;quot;Special&amp;quot; permissions, despite Windows ease of use, Microsofts&#039; Permissions and ACL&#039;s mechanisms are actually reasonably complex and very extensive, but this might just give you a quick reference to try and elevate some of the confusion surrounding Unix and Windows Permissions translations.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76268</id>
		<title>Security Checklist/Where can you learn more about file permissions?</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76268"/>
		<updated>2012-10-08T23:40:36Z</updated>

		<summary type="html">&lt;p&gt;Phild: added local link to Using phpSuExec replacing external link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{underconstruction}}&lt;br /&gt;
&lt;br /&gt;
* [[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
* [[Using phpSuExec]]&lt;br /&gt;
* Windows Permissions Primer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Installation FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=How_do_phpSuExec_file_permissions_work%3F&amp;diff=76267</id>
		<title>How do phpSuExec file permissions work?</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=How_do_phpSuExec_file_permissions_work%3F&amp;diff=76267"/>
		<updated>2012-10-08T23:39:06Z</updated>

		<summary type="html">&lt;p&gt;Phild: initial page commit/creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Permissions under phpsuexec ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
==== What is phpSuExec? ====&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
On most Apache servers, PHP runs as an Apache module. This is the default method of installation. Many hosts have this setup because it is default and potentially they do not realize that it is also possible to configure PHP as a CGI. Running PHP as a CGI can be more secure whilst also avoiding file and directory ownership issues.&lt;br /&gt;
&lt;br /&gt;
PHPSuExec provides the facility to have all scripts running the relevant user account instead of under the Web Servers account. This facility allows the server Administrators to isolate and manage malicious or runaway script usage very quickly, avoiding unwanted or un-authorised scripts from running for a lengthy period of time.&lt;br /&gt;
&lt;br /&gt;
==== What does phpSuExec Do? ====&lt;br /&gt;
&lt;br /&gt;
===== 777 Permissions =====&lt;br /&gt;
With non- phpSuExec configurations, PHP runs as an Apache Module it executes as the user/group of the webserver which is usually &amp;quot;nobody&amp;quot;, &amp;quot;httpd&amp;quot; or &amp;quot;apache&amp;quot;. Under this mode, files or directories that you require your php scripts to be able to write to need 777 permissions (read/write/execute at user/group/world level). This is not very secure because it allows the webserver to write to the file, it also allows anyone else to read or write to the file.&lt;br /&gt;
&lt;br /&gt;
Under phpSuExec configurations, PHP running as a CGI with &amp;quot;suexec&amp;quot; enabled (su = switch user, allowing one user to &amp;quot;switch&amp;quot; to another if authorised)  - Your php scripts now execute under your own  user/group level. Files or directories that you require your php scripts to be able to write to no longer need to have 777 permissions. In fact, 777 permissions are no longer allowed, having 777 permissions on your scripts or the directories they reside in will not run and will instead cause a &amp;quot;500 internal server error&amp;quot; when attempting to execute them, this is done to protect you from someone abusing your scripts. Your scripts and directories can now, only have a maximum of 755 permissions (read/write/execute by you, read/execute by everyone else).&lt;br /&gt;
&lt;br /&gt;
===== Goodbye &amp;quot;.htaccess&amp;quot; and Welcome &amp;quot;.ini&amp;quot; =====&lt;br /&gt;
Under the old Apache Module mode it was possible to manipulate the PHP settings from within a &amp;quot;.htaccess&amp;quot; file placed in the script&#039;s top-level directory, this was also recursively applied to all other directories below it.&lt;br /&gt;
&lt;br /&gt;
  For example you could turn on the php setting &amp;quot;magic_quotes_gpc&amp;quot; with this line in .htaccess:&lt;br /&gt;
&lt;br /&gt;
    php_value magic_quotes_gpc on&lt;br /&gt;
&lt;br /&gt;
Now, when PHP is running as a CGI and phpSuExec protected, manipulating the PHP settings is still possible however you can no longer make use of a &amp;quot;.htaccess&amp;quot; file. Using .htaccess with the required PHP prefix of &amp;quot;php_value&amp;quot; will cause a &amp;quot;500 internal server error&amp;quot; when attempting to access the scripts. This is due to php no longer running as an Apache module, thus Apache is unable to handle those directives any longer.&lt;br /&gt;
&lt;br /&gt;
If your host has, or is, implementing phpSuExec, ALL php values should be removed from your .htaccess files to avoid the 500 internal server error. Instead, you will now be creating and using your own &amp;quot;Local php.ini&amp;quot; file to manipulate the desired php settings.&lt;br /&gt;
&lt;br /&gt;
===== What is a php.ini file? =====&lt;br /&gt;
The php.ini file is a configuration file that the server looks at to see what PHP options have been made available to the server or what their setting are, if different from the server&#039;s default php.ini. While the name may seem advanced to those unfamiliar with it, it is in essence a simple text file with the name php.ini&lt;br /&gt;
&lt;br /&gt;
===== How to create a php.ini file =====&lt;br /&gt;
To create a php.ini file, just open up a text editor, add in the lines you need and save the file. You can name the file whatever you wish when saving, to ensure the correct FTP transfer mode is used, you might wish to name it &amp;quot;php.ini.txt&amp;quot;. Once you have configured all your settings, upload the file to the directory where your script is located and then rename it back to php.ini&lt;br /&gt;
&lt;br /&gt;
  For example you can turn on the php setting &amp;quot;magic_quotes_gpc&amp;quot; with this line in php.ini:&lt;br /&gt;
&lt;br /&gt;
    magic_quotes_gpc = on&lt;br /&gt;
&lt;br /&gt;
In many cases, you might need to have multiple copies of the same php.ini file in different directories, unlike .htaccess files, php.ini files are not applied recursively to lower directories. If you need the same functionality across all lower directries also, you will then need to copy the php.ini file each directory in turn that will have .php scripts running from within them.&lt;br /&gt;
&lt;br /&gt;
===== Troubleshooting, something went wrong =====&lt;br /&gt;
My php script doesn&#039;t work or I have an error message.&lt;br /&gt;
&lt;br /&gt;
    1. Check that the php script that you are attempting to execute has permissions of no more than 755. &amp;lt;br&amp;gt;      644 will work just fine normally, this is not something that will need to be changed in most cases.&lt;br /&gt;
&lt;br /&gt;
    2. Check that the directory permissions that the script resides within is set to a maximum of 755. &amp;lt;br&amp;gt;      This also includes directories that the script would need to have access to also.&lt;br /&gt;
&lt;br /&gt;
    3. Check that you do not have a .htaccess file with php_values within it. &amp;lt;br&amp;gt;      They will cause a 500 Internal server error, when attempting to execute the script. &amp;lt;br&amp;gt;      The php_values will need to be removed from your .htaccess file and a php.ini put in its place, &amp;lt;br&amp;gt;      containing the php directives as explained above.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===== My script requires 777 =====&lt;br /&gt;
So what about php scripts that say they require 777 permissions on some of their directory or files to work, such as a Joomla!, Forums, photo galleries and alike? Due to the transparent nature of phpSuExec this is solved very simply, any directories stated as requiring to be &amp;quot;writable&amp;quot; or &amp;quot;777&amp;quot; can safely be set to 755 (the maximum recommended) or 700 (the minimum that will normally work) instead. This is because, now that the web server runs under your own user account, only your own user account needs full write and execute permissions.&lt;br /&gt;
&lt;br /&gt;
These rules have been applied to .cgi and .pl files historically and are now being applied php files also.&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76266</id>
		<title>Talk:Security Checklist/Where can you learn more about file permissions?</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76266"/>
		<updated>2012-10-08T23:16:08Z</updated>

		<summary type="html">&lt;p&gt;Phild: Added Release Statment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Release Statement.&lt;br /&gt;
Please feel free to make use of documents produced by myself in any format (electronic, hardcopy or public presentation) as required for the Joomla! project. All copyright is released to the Joomla! Project to re-use or publish the content of these posts under any license, as suits the projects needs.&lt;br /&gt;
&lt;br /&gt;
Regards,&lt;br /&gt;
Russ Winter&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_and_Performance_FAQs&amp;diff=76265</id>
		<title>Security and Performance FAQs</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_and_Performance_FAQs&amp;diff=76265"/>
		<updated>2012-10-08T23:05:42Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Where can I learn more about file permissions? */ added internal link replacing external link (same content)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Is GNU and Open Source software worth the costs and risks?==&lt;br /&gt;
&lt;br /&gt;
It&#039;s difficult, if not impossible, to argue against the value proposition of GNU and Open Source software, although [http://www.catb.org/~esr/halloween/ some have tried]. Due to zero licensing fees, lower administrative overhead, high-quality code, security releases that are distributed in minutes or hours rather than months or marketing cycles, and free online support from thousands of like-minded developers and users, GNU and Open Source offerings are often the best solution. The math is really quite compelling: &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;Applications&#039;&#039;&#039; !! &#039;&#039;&#039;Industry Leader&#039;&#039;&#039; !! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;Cost&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GNU/Linux&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Apache Web Server&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| MySQL Relational Database&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| PHP Scripting Language&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Content Management System&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Thousands of Joomla Extensions&lt;br /&gt;
| Varies&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Support&#039;&#039;&#039; !! &#039;&#039;&#039;Relative Quality&#039;&#039;&#039; !! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;Cost&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Project Leadership Team&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Forge&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Online Forums&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Documentation&lt;br /&gt;
| Medium&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Thousands of Online Volunteers&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Paid Professional Support&lt;br /&gt;
| Widely Available&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;Total&#039;&#039;&#039; !! &amp;amp;nbsp; !! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==What is the Joomla! Administrator&#039;s Security Checklist?==&lt;br /&gt;
&lt;br /&gt;
The [[Security Checklist 1 - Getting Started|Security Checklist]] is a concise selection of the best tips and tricks from the many contributors in the Joomla Security Forums. Review this list BEFORE you install Joomla for the first time.&lt;br /&gt;
&lt;br /&gt;
==What are the top 10 stupidest Joomla! security tricks?==&lt;br /&gt;
A very good question, and sadly one that many did not ask in time. We proudly present the [[Top 10 Stupidest Administrator Tricks]].&lt;br /&gt;
&lt;br /&gt;
==How do I choose a quality hosting provider?==&lt;br /&gt;
&lt;br /&gt;
The following is a short list of security-related requirements. Depending on your specific needs, you may have many other security requirements such as shell access, cron access, SSL server, etc.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Choose *NIX:&#039;&#039;&#039; Joomla! requires at least PHP and MySQL to run. Because Apache/PHP/MySQL run best on UNIX or GNU/LINUX servers, choose a host that offers these options. &lt;br /&gt;
* &#039;&#039;&#039;Use Secure FTP:&#039;&#039;&#039; Choose a host that requires SFTP (Secure FTP) for transferring files. This prevents others from snooping your user name and password from packets as they travel over the Internet.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Set PHP register_globals OFF:&#039;&#039;&#039; The most security conscious hosts turn PHP&#039;s Register Globals directive OFF by default. The next best allow you to turn it off in local .htaccess or php.ini files. A host that requires you to run a site with Register Globals ON should be avoided. This is true for any PHP enabled site, whether or not you are running Joomla!. There is a legitimate argument to be made by hosts for keeping Register Globals ON for PHP4 sites. This is that it would break too much legacy code. This argument should not be accepted for a PHP5 installation. Beginning with PHP5, the official PHP recommendation was to keep Register Globals is OFF. Note that beginning with PHP6, there will not even be a Register Globals setting, so don&#039;t get caught in a Register Globals backwater. Modify your code to work without Register Globals, and choose a host that encourages such practices.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Stay up-to-date:&#039;&#039;&#039; Choose a host that stays up-to-date with the latest stable versions of core applications, including the operating system, database, and [http://www.php.net/ PHP].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Avoid cheap shared servers:&#039;&#039;&#039; Be sure users on your shared server can&#039;t view each others files and databases, for example through shell accounts and cpanels.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proactive server management:&#039;&#039;&#039; Choose a host that provides real information about security compromises, rather than simply shutting your site down. Check their user forums for evidence of how they&#039;ve responded to cracks in the past. A good host may for example, inform you immediately that a security breach has occurred and will quarantine the problem file for you, while leaving it there for further investigation. A poor host will shut your site down and provide very limited information on why. Watch out! All too many do this.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Require raw log access:&#039;&#039;&#039; Be sure you have access to raw server logs. Reading these logs is a vital part of site security and recovery.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Performance matters:&#039;&#039;&#039; Choose a host that limits the number of users per machine and the average CPU load per machine to some reasonable number (depending on hardware). Be sure they proactively move user sites as needed to balance load. Check the number of domains on a server using reverse IP lookup.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Data center:&#039;&#039;&#039; Choose a host that manages it&#039;s own data center. Check the data center infrastructure, such as redundant Internet access, hot swappable backups, full daily backups, environment and access controls, emergency generators, etc.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Know your neighbors:&#039;&#039;&#039; Check that your host is not at risk of having its IP addresses blocked because it hosts SPAM sites.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Visit the Joomla Resources Directory (JRD) [http://resources.joomla.org/directory/support-services/hosting.html hosting section]:&#039;&#039;&#039;  If you are looking for a Joomla Host, please ensure you make your own investigations as to the services offered and whether they suit your needs or not.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Grow with your site:&#039;&#039;&#039; As sites grow in complexity, resource requirements, and security requirements, they may need to be moved off of a shared server environment. At that point, good options include, 1) &#039;&#039;&#039;dedicated servers&#039;&#039;&#039; offer the best possible security and performance, but at the highest expense, 2) &#039;&#039;&#039;virtual servers&#039;&#039;&#039; offer almost all the advantages of a dedicated server, but the hardware and configuration cost is shared among multiple virtual servers.&lt;br /&gt;
&lt;br /&gt;
==What are the best practices for site backups?==&lt;br /&gt;
&lt;br /&gt;
: There are three traditional backup types--full, cumulative and differential.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full Backups&#039;&#039;&#039; &lt;br /&gt;
: A complete backup of all associated files and database at a known point in time.&lt;br /&gt;
&lt;br /&gt;
: Both of these are considered Incremental backups, they can be used independently of each other or in conjunction with each other but always relate back to a FULL backup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cumulative Backups&#039;&#039;&#039; &lt;br /&gt;
: This is a backup of the differences since the last FULL backup, so each cumulative backup gets bigger each cycle as it is also backing up data previously backup, since the last FULL backup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Incremental Backups&#039;&#039;&#039; &lt;br /&gt;
: This is a backup of the changes since the previous backup of any type, i.e., full, cumulative, or incremental.&lt;br /&gt;
&lt;br /&gt;
: If you site is not too large, then FULL backups are the way to go, once a week at least. If your content changes quite regularly or more importantly cannot be recreated or is too costly to recreate, once a night or more may be more effective.&lt;br /&gt;
&lt;br /&gt;
: If time, server resources, or the rate of data change is too high to successfully obtain a FULL backup every night then the incremental backups are needed.&lt;br /&gt;
&lt;br /&gt;
: If you choose to use a cumulative backup following a weekly full, the backups each night will run quicker than a full backup, however as the week progresses, each nightly cumulative backup will increase in size and time, due to not only backing up the changes since last night&#039;s backup, but it also backing up all changes each night and previous nights since the last full backup was made. The benefit of this type of backup, in conjunction with full backups is the speed of restoration. To restore, you now only need to recover the most recent full and cumulative backups to fully recover all information.&lt;br /&gt;
&lt;br /&gt;
: If time or server resources are paramount or data change overwhelms cumulative backups, turn to differential backups, this style of backup when used in conjunction with a full backup will provide a very similar level of protection, but restoration will be slower. Differential backups will only backup changed data since the last backup of any type, not since the last full backup, as with a cumulative backup. Thus, when restoring data, you will need to recover the full backup, then each differential backup in turn (oldest first) in order to fully recover all information. This method also has the drawback of recovering any legitimately deleted files, potentially &amp;quot;over-filling&amp;quot; the file-system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data Protection Best Practice says&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# You should be able to completely recover from a catastrophic failure from at least two previous full backups. Just in case the most recent full backup is damaged, lost, or corrupt.&lt;br /&gt;
# A good backup regime should contain at least one full backup within a chosen cycle, normally weekly.&lt;br /&gt;
# A good backup practice is to store backups away from the current data location, preferably off site.&lt;br /&gt;
# Dynamic data should be backed up &#039;&#039;offline&#039;&#039; or &#039;&#039;hot&#039;&#039; to avoid &#039;&#039;fuzzy&#039;&#039; backups (data is changing as you back it up, potentially leading to related information not being in sync when backed up.&lt;br /&gt;
&lt;br /&gt;
: For the average Web site, a daily or weekly full backup of both site files and database records is normally more than enough. Keeping a number of backups for a period of time is always a good plan, maybe keep each weekly backup for one month. This allows you to recover an old site in the case of emergencies or if for some reason you have local backup file corruption.&lt;br /&gt;
&lt;br /&gt;
: There are many PHP and Perl scripts on the Web that can be automated through CRONTAB and can either email (if small enough) or FTP the backup files to an off- or cross- server location. Remember that to some degree with Joomla! you already have an instant backup of the core files, if you haven&#039;t modified core, the Joomla! distribution files can be easily restored. Then you need only worry about backing up changed files and the database.&lt;br /&gt;
&lt;br /&gt;
==Where can I learn about vulnerable extensions?==&lt;br /&gt;
* See the [http://docs.joomla.org/Vulnerable_Extensions_List Vulnerable Extensions List]&lt;br /&gt;
&lt;br /&gt;
==Where can I learn more about file permissions?==&lt;br /&gt;
{{underconstruction}}&lt;br /&gt;
&lt;br /&gt;
* [[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
*  Windows Permissions Primer]&lt;br /&gt;
*  Using phpSuExec]&lt;br /&gt;
&lt;br /&gt;
==How do I setup a powerful password scheme?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Most users may not need more than 3 levels of passwords and webmasters no more than 5. Each level must be completely unrelated to the others in terms of which ids and passwords are used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 5 (Public)&#039;&#039;&#039; - is the password you use on public sites. It is not imperative that you use a different password on every site. In fact it&#039;s more effective to use a different username on every site than it is to use a different password truth be told! Knowing the username allows easy hacking...half the work is done! knowing the password is useless unless you know what account it goes to!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 4 (Webmaster)&#039;&#039;&#039; - Reserved for SQL Only. this is a password that would only be used by SQL and limited to a specific database in SQL. The best way to protect SQL is by limiting each account to just being able to do the minimum that DB requires. In some cases it is even wise to have a read only account for display and a separate write account that the backend write functions use. But that doesn&#039;t apply to J! at all... for J! the best practice is to set up an individual account (not root for sure) that only has read and write access to the J! DB nothing else.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 3 (Webmaster)&#039;&#039;&#039; - FTP and Server Access. these can be the same user:pass combo since both if compromised can do the most damage. doesn&#039;t matter if the backend or Cpanel is safe if the FTP is not and the same goes the other way!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 2 (Personal Data Access)&#039;&#039;&#039; - This password should be used for any sites or locations that contain personal data with the exception of Banking (see level 1). these sites are often used for social engineering data such as medical records, service accounts and any financial records not directly related to banking! You want these to be secure but also different from the real threat of security...your money!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 1 (Banking!)&#039;&#039;&#039; - this needs to be the most secure in fact if you have two different banks it actually pays to have a different user:pass for each just to be sure!&lt;br /&gt;
&lt;br /&gt;
= Joomla! Core =&lt;br /&gt;
&lt;br /&gt;
==How can I check my Joomla! installation&#039;s overall security and health?==&lt;br /&gt;
&lt;br /&gt;
: 1. Use the free Joomla extension, Joomla! Tools Suite (JTS), which is a Joomla! environment audit, maintenance and diagnostic application written in PHP. The JTS suite of tools can diagnose, report and advise on common installation, health and security issues, including performing several common performance and recovery actions.&lt;br /&gt;
&lt;br /&gt;
: Project Home: http:// joomlacode. org/gf/project/jts/ (gone away)&lt;br /&gt;
&lt;br /&gt;
==How can I add the Joomla! Security Announcements Feed to the Admin Control Panel?==&lt;br /&gt;
&lt;br /&gt;
# Login to your Joomla! sites Administration site&lt;br /&gt;
# From the menu, select Extensions -&amp;gt; Module Manager&lt;br /&gt;
# From within the Module Manager, select Administrator&lt;br /&gt;
# From the Icon Menu (top right), select New&lt;br /&gt;
# From the choices available, select Feeds Display&lt;br /&gt;
# At the Feed Module configuration page, enter the appropriate details (Title (EG: Security Announcements) and Feed as a minimum)&lt;br /&gt;
# Enter http://feeds.joomla.org/JoomlaSecurityNews in the Feed URL&lt;br /&gt;
# Select cpanel as the position&lt;br /&gt;
# Optional Select Apply from the Icon Menu (top right) and place the feed in the order where you want to see it in the Admin Control Panel&lt;br /&gt;
# Select Save from the Icon Menu (top right)&lt;br /&gt;
# Go back to your Admin Site main page (Site -&amp;gt; Control Panel) and you should see your newly built Security Feed.&lt;br /&gt;
&lt;br /&gt;
: You can also use this technique to deliver your own &amp;quot;Customer Updates&amp;quot; to sites that you build for others. It&#039;s a great way to communicate with your customers after handing over the site to them. Every time they log in to the Back End, they&#039;ll see your latest news.&lt;br /&gt;
&lt;br /&gt;
==Why should I immediately change the name of the default admin user after a new install?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: All new Joomla installations start with a Super Administrator account called, &#039;admin&#039;. During the installation process, you will be asked to give this account a password. That&#039;s great as far as it goes, but because the user name of this highly-confidential account is generally well known, 50% of the security of the username/password combination is already exposed. Now all anyone needs to do is guess the password and they&#039;re in.&lt;br /&gt;
&lt;br /&gt;
: By changing the user name to something more difficult to guess, you greatly increase the difficulty of accessing the account. An attacker must correctly guess both the user name and password at the same time to gain access. This is several magnitudes more difficult than simply guessing the right password.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Log into the Back End&lt;br /&gt;
# Select User Manager&lt;br /&gt;
# Select the &#039;admin&#039; user record&lt;br /&gt;
# Change the value in username. (Good user names contain a mix of letters and numbers.)&lt;br /&gt;
# Save&lt;br /&gt;
# Remember the new username!&lt;br /&gt;
&lt;br /&gt;
== Why does the Back-End session stay alive even though I set it to expire? ==&lt;br /&gt;
&lt;br /&gt;
: When you edit an item from the Back-End, there is a keep-alive script running that keeps the session active. This is a great convenience in most cases, as it prevents you from losing all your edits if you wait too long to submit the content. However, there are a few potential security issues to be aware of:&lt;br /&gt;
&lt;br /&gt;
# If you walk away from your computer while you are editing content, someone else can use your computer to attack the site.&lt;br /&gt;
# Due to the risk of Cross-Site Request Forgery attacks ([http://en.wikipedia.org/wiki/Cross-site_request_forgery CSRF]) it&#039;s never a good idea to browse the Internet in another window or tab while an open Joomla! Administrator session is active. Joomla! has been hardened against such attacks, but it&#039;s remotely possible that an as yet unknown vulnerability exists in the Joomla! core, a third-party extension, or the browser itself.&lt;br /&gt;
&lt;br /&gt;
==How do I turn off RG_EMULATION? {{JVer|1.0}}==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: PHP&#039;s &#039;&#039;register_globals&#039;&#039; option was a terrible idea from a security point of view. It encouraged lazy programming and exposed many scripts to needless risk. This is because RG allows variables passed by the user to be automatically passed to the script. This breaks a cardinal rule: Never trust user input. &lt;br /&gt;
&lt;br /&gt;
: Register Globals has been officially deprecated in PHP5, and beginning with PHP6 will no longer even exist. Good riddance! &lt;br /&gt;
&lt;br /&gt;
: Joomla 1.0.x uses RG_Emulation functions which are somewhat safer than standard PHP &#039;&#039;register_globals&#039;&#039;, but it&#039;s still best not to allow any form of automatic variable assignments. Note that poorly-written extensions may fail with &#039;&#039;register_globals&#039;&#039; turned off. Such failure is a sign that the extension does not check user input correctly. Best advise: Don&#039;t use such extensions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Joomla! 1.0.13&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Beginning with the 1.0.13 release, Register Globals Emulation has been moved to the main configuration file and can be adjusting in the Back-end Administrator interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Joomla! 1.0.12 and earlier&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Edit the file, &#039;&#039;globals.php&#039;&#039;, found in the root directory of your Joomla! site. At about line 23 change:&lt;br /&gt;
&lt;br /&gt;
 define(&#039;RG_EMULATION&#039;,1)&lt;br /&gt;
&lt;br /&gt;
: to&lt;br /&gt;
&lt;br /&gt;
 define(&#039;RG_EMULATION&#039;,0)&lt;br /&gt;
&lt;br /&gt;
==What do Error 1, Error 2, and Error 3 mean?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Error 1 = FATAL ERROR: MySQL not supported...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You need to compile MySQL support into PHP or the MySQL server is down.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Error 2 = FATAL ERROR: Connection to database ...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Joomla! cannot talk to the database, most likly you have a typo in the username or password settings in &#039;&#039;configuration.php&#039;&#039;, or you are trying to access a database table with the wrong table prefix.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Error 3 = FATAL ERROR: Database not found...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The database cannot be found. Check the database settings in &#039;&#039;configuration.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The MySQL variables in &#039;&#039;configuration.php&#039;&#039; (found in Joomla!&#039;s root directory) can be modified to correct these problems.&lt;br /&gt;
&lt;br /&gt;
For Joomla! 1.0.xx&lt;br /&gt;
 $mosConfig_host = &#039;localhost&#039;;&lt;br /&gt;
 $mosConfig_user = &#039;accountname__username&#039;;&lt;br /&gt;
 $mosConfig_password = &#039;userpassword&#039;;&lt;br /&gt;
 $mosConfig_db = &#039;accountname_dbName&#039;;&lt;br /&gt;
 $mosConfig_dbprefix = &#039;jos_&#039;;&lt;br /&gt;
&lt;br /&gt;
Modifying the &#039;&#039;$mosConfig_host&#039;&#039; to an IP Address of a remote host works for hosts that have separate MySQL servers from the client hosting servers.&lt;br /&gt;
&lt;br /&gt;
==How do UNIX file permissions work?==&lt;br /&gt;
&lt;br /&gt;
Unix/Linux file permissions can be confusing. The basic UNIX permissions come in three flavors;&lt;br /&gt;
&lt;br /&gt;
 Owner Permissions : Control your own access to files.&lt;br /&gt;
 Group Permissions : Control access for you and anyone in your group.&lt;br /&gt;
 Other Permissions : Control access for all others.&lt;br /&gt;
&lt;br /&gt;
In Unix, when permissions are configured the server allows you to define different permissions for each of these three categories of users. In a Web server environment permissions are used to control which Web site owners can access which directories and files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What do Unix permissions look like?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When viewing your files through an FTP client or from the servers command line;&lt;br /&gt;
&lt;br /&gt;
 filename.php username usergroup rwx r-x r-x&lt;br /&gt;
&lt;br /&gt;
The first entry is the name of the file, the next entry is your username on the server, the second entry is the group that you are a member of and the last entry is the permissions assigned to that this file (or directory). If you notice, I have intentionally spaced out the permissions section, I have grouped the 9 characters into 3 sets of 3. This separation is key to how the permissions system works. The first set of 3 permissions (rwx) relate to the username seen above, the second set of 3 permissions (r-x) relate to the usergroup seen above and the final set of 3 permissions (r-x) relate to anyone else who is not associated with the username or groupname.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Owner (User) relates to username&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Owner (User) is normally you, these permissions will be enforced on your hosting account name.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Group relates to usergroup&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Group permissions will be enforced on other people that are in the same group as you, within a hosting environment, there is very rarely other people in the same group as you. This protects your files and directories from being made available to anybody else who may also have a hosting account on the same server as you.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other relates to everyone else&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Other permissions, these will be enforced on anybody else on the server that is either not you or not in your group. So in a Web Serving environment, remembering that no-one else is normally in your group, then this is everybody else accessing the server except for you. Each of the three sets of permissions are defined in the following manner;&lt;br /&gt;
&lt;br /&gt;
 r = Read permissions&lt;br /&gt;
 w = Write permissions&lt;br /&gt;
 x = Execute permissions&lt;br /&gt;
&lt;br /&gt;
 Owner Group Other&lt;br /&gt;
 r w x r w x r w x&lt;br /&gt;
&lt;br /&gt;
As many of you already know, permissions are normally expressed as a numeric value, something like 755 or 644. so, how does this relate to what we have discussed above? Each character of the permissions are assigned a numeric value, this is assigned in each set of three, so we only need to use three values and reuse them for each set.&lt;br /&gt;
&lt;br /&gt;
 Owner Group Other&lt;br /&gt;
 r w x r w x r w x&lt;br /&gt;
 4 2 1 4 2 1 4 2 1&lt;br /&gt;
&lt;br /&gt;
Now that we have a value that represents each permission, we can express them in numeric terms. The values are simply added together in the respective sets of 3, which will in turn give us just three numbers that will tell us what permissions are being set. If we are told that a file has the permissions of 777, this would mean that the following was true.&lt;br /&gt;
&lt;br /&gt;
 Owner Group Other&lt;br /&gt;
 r w x r w x r w x&lt;br /&gt;
 4 2 1 4 2 1 4 2 1&lt;br /&gt;
&lt;br /&gt;
Thus...&lt;br /&gt;
&lt;br /&gt;
   4+2+1 4+2+1 4+2+1&lt;br /&gt;
 =   7     7     7&lt;br /&gt;
&lt;br /&gt;
The Owner of the file would have full Read, Write and Execute permissions, the group would also have full Read, Write and Execute permissions, and the rest of the world can also Read, Write and Execute the file. The standard, default permissions that get assigned to files and directories by the server are normally;&lt;br /&gt;
&lt;br /&gt;
 Files = 644&lt;br /&gt;
 Directories = 755&lt;br /&gt;
&lt;br /&gt;
These permissions would allow, for files;&lt;br /&gt;
&lt;br /&gt;
 644 = rw- r-- r--&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read only&lt;br /&gt;
 Other has Read only&lt;br /&gt;
&lt;br /&gt;
and for directories;&lt;br /&gt;
&lt;br /&gt;
 755 = rwx r-x r-x&lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute only&lt;br /&gt;
 Other has Read and Execute only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, things can get a little complicated when we start talking about shared Web Servers, the Web Server software will be running with its own username and groupname, most servers are configured for them to use either &amp;quot;apache&amp;quot; and &amp;quot;apache&amp;quot; or &amp;quot;nobody&amp;quot; and &amp;quot;nobody&amp;quot; as username and groupname. Here is the problem. Your Web Server runs as its own user, and this user is not you or in your group, so the first two sets of permissions do not apply to it. Only the world (other) permissions apply. Therefore, if you configure a permissions set similar to 640 on your website files, your Web Server will not be able to run your website files.&lt;br /&gt;
&lt;br /&gt;
 640 = rw- r-- ---&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read only&lt;br /&gt;
 Other has no rights&lt;br /&gt;
&lt;br /&gt;
The Web server is assigned no permissions at all and cannot Execute, Write or more importantly, even Read the file to delivery its content to a website visitors browser. If a directory was to be assigned 750 permissions, this would have the same effect, because the WebServer does not even have permissions to read files in the directory, even if the files inside that directory had favorable permissions.&lt;br /&gt;
&lt;br /&gt;
 750 = rw- r-x ---&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read and Execute&lt;br /&gt;
 Other has no rights&lt;br /&gt;
&lt;br /&gt;
Directories have an extra quirk, if a directory does not have the Execute permission set in the World set then even if Read and Write are set, if the program is not run as the user or group, it will still not be able to access the files within the directory. The Execute setting allows the program to &amp;quot;Execute&amp;quot; commands in the directory, so without it being on the program(in our case a Web Server) cannot execute the &amp;quot;Read&amp;quot; command, thus cannot deliver your file to the users web browser.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How Does this Relate to Joomla?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Good question, well in the first instance this would be important during the Web-Installer process.&lt;br /&gt;
If you can remember back to when you ran the Joomla! Web-Installer, we were looking for specific directories to be designated as writable. We see quite a numbers of posts either stating that there were problems during the install with permissions or asking what permissions are recommended. Some even consider the message, asking for &amp;quot;Writable&amp;quot; permissions to be too vague.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, as the Web-Installer does not know how your server is configured, then it cannot be more specific, however, once you understand the permissions settings and you know a little about Web Serving environments, you will actually find that the term &#039;&#039;writable&#039;&#039; is actually very specific and a more than adequate description of what Joomla! needs. Thinking back to the above information, you may remember that there are three places where &#039;&#039;write&#039;&#039; permissions maybe set;&lt;br /&gt;
&lt;br /&gt;
 Owner Writable&lt;br /&gt;
 Group Writable&lt;br /&gt;
 Other Writable&lt;br /&gt;
&lt;br /&gt;
Also remembering that the Web Server generally doesn&#039;t run as your own user or in the same group. When you run the Web Installer from a browser, it is the Web Server trying to access the files, thus it is the &amp;quot;Other&amp;quot; permissions that will apply to it. If the &amp;quot;Other&amp;quot; permissions do not allow the Web Server to Read, Write or Execute commands in the Joomla! directories, you will receive the message saying that the directories are not &#039;&#039;writable&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In this case, you will need to configure the Other permissions to be &amp;quot;7&amp;quot; on the directories listed in the Web Installer.&lt;br /&gt;
So your total permissions might be something like 757, in the worse case you might need to set 777. These very open permissions&lt;br /&gt;
maybe reset back to 755 after the installer runs to assist in the security of your directories and files.&lt;br /&gt;
&lt;br /&gt;
 757 = rwx r-x rwx&lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute&lt;br /&gt;
 Other has Read, Write and Execute&lt;br /&gt;
&lt;br /&gt;
Just to make things even more confusing, many hosting firms make use of software called phpsuExec or suExec, these tools change the way the Web Server runs, where the Web Server would not normally run as your username, in this case, it does. The use of the &#039;&#039;other&#039;&#039; permissions, may not be required, now you may only need to configure directories to be &#039;&#039;writable&#039;&#039; to your own username and groupname, this allows directory permissions to be set as 755 or 775 instead of 757 or 777.&lt;br /&gt;
&lt;br /&gt;
 755 = rwx r-x r-x&lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute&lt;br /&gt;
 Other has Read and Execute&lt;br /&gt;
&lt;br /&gt;
 775 = rwx rwx r-x &lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read, Write and Execute&lt;br /&gt;
 Other has Read and Execute&lt;br /&gt;
&lt;br /&gt;
The Web Server will still need to Execute set for the username and Read, Execute groupname permissions set so that it can Execute the Read command on files inside the directory. Again, these permissions may be demoted back to 755 after the Web Installer completes. Thats the basics for directories covered, what about files? This is where things get a little simpler. Most of the files that Joomla! makes use of will be quite happy with the 644 default permissions.&lt;br /&gt;
&lt;br /&gt;
 644 = rw- r-- r-- &lt;br /&gt;
 Owner has Read, Write&lt;br /&gt;
 Group has Read&lt;br /&gt;
 Other has Read&lt;br /&gt;
&lt;br /&gt;
This is valid if you do not have a need to Write to the files from the Web Server, the same rules apply as for directories if you do have this need. One file that you may like to have &amp;quot;Writable&amp;quot; to the Web Server is your configuration.php file. This is the Joomla! configuration file, if you plan on changing configuration through the Web Admin interface, then this file will need to be Writable to the Web Server.&lt;br /&gt;
&lt;br /&gt;
If your server needed directory permissions to be set to &amp;quot;Other&amp;quot; Writable for the install then this file will probably also need to be 757 or 777. Leaving this file as 757 or 777 is dangerous though, as you are letting everyone have &amp;quot;Write&amp;quot; access, many Web Site exploits take advantage of this fact, so in general it is not recommended to leave this file with these permissions.&lt;br /&gt;
&lt;br /&gt;
If your Web Server has one of the SU tools installed and you only needed to configure 755 on directories for the installation, then you will probably also only need to set 755 or 775 on this file to allow editing through the Admin interface, and these permissions are generally accepted as more secure than 757 or 777.&lt;br /&gt;
&lt;br /&gt;
In conclusion, what permissions should be set for the Joomla! installation? Well, as you can see, it depends!&lt;br /&gt;
&lt;br /&gt;
I know this isn&#039;t as helpful as you would have liked and it certainly is not a definitive answer, but in general, after the installation, any insecure &amp;quot;7&amp;quot; settings can be reset back to something more secure. For example: &lt;br /&gt;
 Files = 644&lt;br /&gt;
 Directories = 755&lt;br /&gt;
&lt;br /&gt;
These permissions would allow, for files;&lt;br /&gt;
&lt;br /&gt;
 644 = rw- r-- r--&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read only&lt;br /&gt;
 Other has Read only&lt;br /&gt;
&lt;br /&gt;
and for directories,&lt;br /&gt;
&lt;br /&gt;
 755 = rwx r-x r-x &lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute only&lt;br /&gt;
 Other has Read and Execute only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have SSH shell access the following commands can be run from the command line to reset all files and directories back to the server defaults of 755 and 644. Change directories to the top directory (&amp;quot; / &amp;quot;) of your Joomla! installation, then run: &lt;br /&gt;
&lt;br /&gt;
 find . -type f -exec chmod 644 {} \;&lt;br /&gt;
 find . -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
If you only have FTP access, this can be a very time consuming job, however, unless you changed more directories during the installation that was requested, you should only need to reset about 10 directories and the &#039;&#039;configuration.php&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that to install any extensions or templates after the actual Joomla! installation you may need to elevate the default permissions again on the appropriate directories just for the installation period, you may then demote them again after the add-on is installed.&lt;br /&gt;
&lt;br /&gt;
If you decide to use &#039;&#039;caching&#039;&#039; the cache directory will need to be &#039;&#039;writable&#039;&#039; by the Web server user to allow it to write its temporary files.&lt;br /&gt;
&lt;br /&gt;
==What are the recommended file and directory permissions?==&lt;br /&gt;
&lt;br /&gt;
Depending on the security configuration of your Web server the recommended default permissions of 755 for directories and 644 for files should be reasonably secure.&lt;br /&gt;
&lt;br /&gt;
==How can I avoid using chmod 0777 to enable installs?==&lt;br /&gt;
&lt;br /&gt;
On a private server with a small, controlled set of users, there is no need to use a chmod 777 to make the Joomla! folders writable in order to perform installs. You can set the server up so that both Apache and FTP have control of site files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Edit the Apache user.conf file and tell apache to run under the FTP account.&lt;br /&gt;
# chmod the entire site to 644 or 744. Apache should be able to run just fine that way.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# chgrp the entire web space to the FTP group so that only those with FTP access can write to the server.&lt;br /&gt;
# chmod the entire web space to 764 or 664 will be possible giving other users write access as well&lt;br /&gt;
&lt;br /&gt;
==Isn&#039;t locating all Joomla! files inside public_html a security risk?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Short answer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Potentially, yes. Your site can be secure, but you must be careful and vigilant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Long answer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A common security principle is to create various security levels and then grant access at each level only as required. On UNIX servers this is done by setting the user, group, and world permissions on directories and files.&lt;br /&gt;
&lt;br /&gt;
Typically, the most insecure directory on a UNIX server is the one serving Web files, usually called public_html. This is because it is publicly accessible, world-readable, and in the case of a CMS-powered site, possibly even world-writable. That status is the very definition of officially, totally, and utterly insecure.&lt;br /&gt;
&lt;br /&gt;
As long as you want the entire world to view your public_html directory there is no problem. After all, that&#039;s exactly what it&#039;s designed to do. But if you want to hide anything, the plot thickens. If public_html contains configuration files with secret data, or scripts that write to databases, or scripts that modify other files, or scripts that append to logs, or scripts that store temporary data in caches, or scripts that support file and graphic uploads, or scripts that process form input, or scripts that process financial and personal data, this read-only directory becomes a world-accessible, read-write application.&lt;br /&gt;
&lt;br /&gt;
If there are ANY vulnerabilities in ANY files in the public_html directory, the entire server is potentially vulnerable, and not just your Web site but possibly every Web site on your server. Such vulnerabilities give attackers access to the scripting engines used to run your site. PHP, Perl and other Web scripting languages are powerful and easy to use. If programming vulnerabilities allow an attacker to call arbitrary commands, your entire server could be toast.&lt;br /&gt;
&lt;br /&gt;
One good way to block attackers, is to keep potential vulnerabilities behind a secure fence. For this reason, it is often recommended to only place files that require direct access from the Web in public_html. Other files should be loaded into applications using such functions as include and require. To access such files, attackers must first penetrate your server, such as by discovering a root username/password.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The incredible lightness of living outside the fence&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To provide incredibly easy installation, Joomla! follows a different security model. It is possible to perform a complete Joomla! installation using nothing more than a Web browser pointed at the world-readable installation directory. An additional level of security is provided by requiring that you remove this installation directory after completing the install.&lt;br /&gt;
&lt;br /&gt;
Granting a world-accessible installer the ability to write to files outside of public_html would be a huge security hole. Thus, by default every Joomla! file ends up in the world-accessible public_html directory. Not coincidentally, this is also the directory in which an angry planetful of would-be attackers are hoping to find your files.&lt;br /&gt;
&lt;br /&gt;
Currently, most Joomla extensions also have limited support for file locations outside of public_html. This is a legacy of the Joomla! 1.0.x installation model.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Joomla! defense&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Despite it&#039;s apparently vulnerable location, Joomla! uses various effective methods for blocking exploits. Chief among them is to add a line of code at the top of any PHP file that requires extra protection. This method is very effective as long as each and every file requiring such protection, has it. One vulnerable file exposes the whole site.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The challenge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The practice of placing everything in public_html, and then building a little fence inside each file can become an administrative nightmare. One vulnerable file exposes the entire server. This is a glaring example of an allow, then deny security model.&lt;br /&gt;
&lt;br /&gt;
This model requires very careful upgrades, constant log reviews, and proactive plugging of new vulnerabilities as soon as they become known. (Since you have to beat the attackers, you&#039;ll be in a hurry, and may inadvertently do something stupid, potentially creating other vulnerabilities.)&lt;br /&gt;
&lt;br /&gt;
During installations and upgrades, you must verify (or trust someone else to verify) every line of code, of every new file, for every known vulnerability. And because scripts can have unintended consequences on each other, you cannot forget to test, test, test. Of course this is generally true for all software, but placing the entire application in public_html makes the issue extremely critical.&lt;br /&gt;
&lt;br /&gt;
The recent wave of URL injection attacks against poorly-written third party extensions would have been much less successful if those files had been stored outside of public_html, and thus simply unavailable through URLs. Note that in many cases the actual vulnerabilities could still exist within the files, but being inside the fence (outside of public_html) they would not be exposed to URL injections.&lt;br /&gt;
&lt;br /&gt;
 To (Deny, then Allow), or (Allow, then Deny)?&lt;br /&gt;
&lt;br /&gt;
The real problem with the above &amp;quot;all known&amp;quot; qualifier is that it is an allow, then deny model. In other words, we first give everyone access to every file and then deny access to specific files by adding a line of code.&lt;br /&gt;
&lt;br /&gt;
Consider the logic for a password authentication script. We have essentially two choices:&lt;br /&gt;
# First allow all access, then deny any username/password combination that DOES NOT match the approved list.&lt;br /&gt;
# First deny all access, then allow any username/password combination that DOES match the approved list.&lt;br /&gt;
&lt;br /&gt;
Obviously the second method is better. A passing familiarity with regular expressions shows that the first method is much more difficult to write securely. It fails anew each time a new variation of some attack is developed, and tends to require constant revisions. Over time, such revisions become so complex that the authentication system itself becomes a source of vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Conceptually, the second method is an example of building a strong fence around your site (deny), and then granting access using a limited and well-defined set of criteria (then allow). If the script fails, the most likely result is that someone who should have access is blocked. That may be highly inconvenient, but it&#039;s not usually a security breach.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The good news&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# In Joomla! 1.0.x, some extensions, and the Joomla! framework, give you the option of locating critical directories outside of public_html after you have completed the installation. Whenever possible you should do this.&lt;br /&gt;
# Joomla! 1.5 goes far in the right direction. It provides several new constants for specifying the location of particularly sensitive directories, including configuration, administrator, libraries, and installation. &lt;br /&gt;
# Joomla! 1.5 is able to run as an FTP account. This provides another method for protecting files on a file by file and directory by directory basis.&lt;br /&gt;
&lt;br /&gt;
==How do I adjust Joomla 1.5 defines {{JVer|1.5}}==&lt;br /&gt;
&lt;br /&gt;
There are two defines files that will generally need to be edited.  /includes/defines.php file is for the front end and /administrator/includes/defines.php is for the Joomla administrator end. Below is the relevant code.&lt;br /&gt;
&lt;br /&gt;
 define( &#039;JPATH_ROOT&#039; , implode( DS, $parts ) );&lt;br /&gt;
 define( &#039;JPATH_SITE&#039; , JPATH_ROOT );&lt;br /&gt;
 define( &#039;JPATH_CONFIGURATION&#039;, JPATH_ROOT );&lt;br /&gt;
 define( &#039;JPATH_ADMINISTRATOR&#039;, JPATH_ROOT . DS . &#039;administrator&#039; );&lt;br /&gt;
 define( &#039;JPATH_LIBRARIES&#039; , JPATH_ROOT . DS . &#039;libraries&#039; );&lt;br /&gt;
 define( &#039;JPATH_INSTALLATION&#039; , JPATH_ROOT . DS . &#039;installation&#039; );&lt;br /&gt;
&lt;br /&gt;
.DS. = Directory Seperator&lt;br /&gt;
&lt;br /&gt;
==Moving sensitive files outside the web root==&lt;br /&gt;
{{:Moving sensitive files outside the web root}}&lt;br /&gt;
&lt;br /&gt;
Moving sensitive files is now documented at: http://docs.joomla.org/Moving_sensitive_files_outside_the_web_root&lt;br /&gt;
&lt;br /&gt;
==How do I block direct access to critical files using .htaccess?==&lt;br /&gt;
# Make a backup copy of your .htaccess file. Use your backup file to recover if the following fails. Be sure to delete the backup file once you  are finished.&lt;br /&gt;
# Add the following to your .htaccess file. This example will protect both the configurtation.php and .htaccess files.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Files .htaccess&amp;gt;&lt;br /&gt;
 order allow,deny&lt;br /&gt;
 deny from all&lt;br /&gt;
 &amp;lt;/Files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FilesMatch &amp;quot;configuration.php&amp;quot;&amp;gt;&lt;br /&gt;
 Order allow,deny&lt;br /&gt;
 Deny from all&lt;br /&gt;
 &amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also protect a lot of file extensions in one single rule. Exemple (the file names between &#039; &#039;&#039;&#039;(&#039;&#039;&#039; &#039; and &#039; &#039;&#039;&#039;)&#039;&#039;&#039; &#039; in this rule are the file extensions to protect ):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FilesMatch &amp;quot;\.(htaccess|htpasswd|ini|phps|log|sh|conf)$&amp;quot;&amp;gt;&lt;br /&gt;
 Order allow,deny&lt;br /&gt;
 Deny from all&lt;br /&gt;
 &amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How do I recursively adjust file and directory permissions?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using Joomla! Administration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the Back-end, go to Site --&amp;gt; Global Configuration --&amp;gt; Server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using the UNIX shell&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The find command automatically assumes that it should start from the current directory. To be safe, go to your public_html directory and specify a path as the first argument. Some shells, such as bash on Apple OS X, must have a path specified in the find command.&lt;br /&gt;
&lt;br /&gt;
 find . -type f -exec chmod 644 {} \;&lt;br /&gt;
 find . -type d -exec chmod 755 {} \;&lt;br /&gt;
 chmod 707 images&lt;br /&gt;
 chmod 707 images/stories&lt;br /&gt;
 chown apache:apache cache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
# Test all third party extensions after changing permissions.&lt;br /&gt;
# You may need to reset write permissions to install more extensions.&lt;br /&gt;
&lt;br /&gt;
==How can I set the administrator directory to use an SSL server (https)? {{JVer|1.0}}==&lt;br /&gt;
&lt;br /&gt;
Use Joomla version 1.5 or newer&lt;br /&gt;
&lt;br /&gt;
A standard Joomla! 1.0.x installation does not support SSL for individual directories, however there are various (elegant and not so elegant) hacks posted in the forums.&lt;br /&gt;
&lt;br /&gt;
Note that earlier techniques involving the variable $mosConfig_live_site are deprecated, and will not work with current Joomla! versions due to increased security enhancements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More Help&#039;&#039;&#039;&lt;br /&gt;
# [http://www.netshinesoftware.com/security/using-an-ssl-certificate-with-your-joomla-website.html Netshine Software, Ltd: Using an SSL Certificate with your Joomla Website]&lt;br /&gt;
&lt;br /&gt;
==Why isn&#039;t restricting access by IP recommended?==&lt;br /&gt;
&lt;br /&gt;
Restricting site access by IP address is not particularly effective longterm as many exploits are enacted from hijacked machines or via proxies, masking the real attacker&#039;s actual IP Address. Attackers can attack from many different compromised machines. Blocking them will block the legitimate owners of that IP, but may not block the attackers.&lt;br /&gt;
&lt;br /&gt;
= Joomla! Extensions =&lt;br /&gt;
&lt;br /&gt;
==Why are there vulnerable extensions?==&lt;br /&gt;
&lt;br /&gt;
A list of currently known [http://docs.joomla.org/Vulnerable_Extensions_List vulnerable extensions]. &lt;br /&gt;
&lt;br /&gt;
: Anyone may write and distribute a Joomla! extension. As a service to the global community, this freedom is actively encouraged and supported by the Joomla! Core team. Due to the openness and popularity of the Joomla! project, there are a wide variety of extensions offering a vast array of features. The quality and breadth of Joomla! extensions is one of the main advantages of Joomla.&lt;br /&gt;
&lt;br /&gt;
: However this freedom comes with a price. It requires individual responsibility, and can survive only where a majority of participants act responsibly. Joomla&#039;s success has led to unwanted attention from malicious types, such as script kiddies who run simple, automated scripts in an effort to find and deface others&#039; Web sites.&lt;br /&gt;
&lt;br /&gt;
: It is important to note that, script kiddies unintentionally perform a valuable service. They help us identify vulnerable extensions and poorly configured servers that might otherwise remain open to more serious threats.&lt;br /&gt;
&lt;br /&gt;
==What is a vulnerable extension?==&lt;br /&gt;
&lt;br /&gt;
A vulnerable extension is one that has been found to contain (or contribute to) a security vulnerability.&lt;br /&gt;
&lt;br /&gt;
Vulnerable extensions are not necessarily poorly-coded. As the Web evolves, technical requirements and commonly accepted coding practices change. Active projects release new versions of their extensions as requirements change. For this reason, it is important to:&lt;br /&gt;
&lt;br /&gt;
# Know the version numbers of all installed extensions.&lt;br /&gt;
# Use only the latest stable version of all extensions.&lt;br /&gt;
# Completely remove all files of insecure or unused extensions.&lt;br /&gt;
&lt;br /&gt;
==How do I choose secure extensions?==&lt;br /&gt;
&lt;br /&gt;
: The most important thing anyone can do is make good decisions regarding the extensions they choose to use on a site. Once an insecure or malicious extension is installed you should consider your entire site compromised. There is NO POSSIBLE WAY to protect or stop a component from accessing database tables it should not be accessing. There is no possible way to stop a component from sending all of the information it found back to a cracker website. Once an insecure or malicious component is installed, your entire site is insecure.&lt;br /&gt;
&lt;br /&gt;
: With all of that said, here are some pretty easy tips for making good choices regarding the extensions you install:&lt;br /&gt;
&lt;br /&gt;
1. When was the last version released?&lt;br /&gt;
&lt;br /&gt;
: If it has been over a year, consider the project abandoned and find something else. Do not install old components.&lt;br /&gt;
&lt;br /&gt;
2. What kind of release is it? (Stable, Release Candidate (RC), Beta, Alpha)&lt;br /&gt;
&lt;br /&gt;
: For production sites you should be sticking to Stable releases as much as possible. If you cannot wait until a Stable release has been made available, Release Candidates are the only other option you should consider. I would not suggest anyone install any Beta or Alpha extensions on a production site. This means they still have bugs, they have not been tested enough, and could have any number of inconvenient bugs or security issues that have not been fixed or worse, found.&lt;br /&gt;
&lt;br /&gt;
3. Does the extension have a history of good security practices?&lt;br /&gt;
&lt;br /&gt;
: This is obviously a bit more subjective but it is still a very valid gauge of future trustworthiness. It requires a bit of investigation and research. Look around their download pages and archives, are there many security release or patches? Are there a lot of reports of cracking activity through this extension? Are the developers experienced and security conscious? What do other community members think of this extension? One example that comes to mind that has little to do with Joomla itself (which makes it a fair example) is phpBB. This script has had more security issues than I could get my head around and there routinely seems to be newly disclosed issues. Because of this, I would never use phpBB. In my opinion its is not trustworthy and there is a high probability that there will be more major security issues.&lt;br /&gt;
&lt;br /&gt;
4. Is there a support community for this extension?&lt;br /&gt;
&lt;br /&gt;
: This is very important for usability and security awareness. If there is a support community for an extension there is a better chance of security issues being known and dealt with. A support community means that people would like to continue using the extension and that they care about the extension. This furthers the chance that security issues will be found, disclosed, and dealt with promptly.&lt;br /&gt;
&lt;br /&gt;
5. Is there only a Mambo version of this extension?&lt;br /&gt;
&lt;br /&gt;
: While this does not in itself make an extension insecure but is rather a gauge of support, how recently the last realease was, and future support. There is a pretty narrow chance that Mambo components will be supported in 1.5 so save yourself the trouble and find a component made to work with Joomla. It will make your life easier.&lt;br /&gt;
&lt;br /&gt;
6. Is the extension generally bug free?&lt;br /&gt;
&lt;br /&gt;
: I hinted on this a little bit in number three but I think it is worth discussing in more depth. While it is almost impossible for an extension to be completely bug free, the smaller the number of bugs, the better. If there are bugs in the software it means there are mistakes in the software. The more mistakes, the higher risk of usability issues and security issues. Security issues are often a result of not one bug, but several bugs or bad practices. For example, the recent 3rd party vulnerabilities that allow for remote file inclusion are a result of:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bad Practices:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Having PHP&#039;s Register Globals enabled.&lt;br /&gt;
# Using out of date or abandoned extension.&lt;br /&gt;
# No other security checks enabled for PHP. (url_fopen off, open_basedir restrictions, disabled PHP functions)&lt;br /&gt;
# Poorly configured file permissions.&lt;br /&gt;
# No request filtering or software &amp;quot;firewall&amp;quot;. (such as mod_rewrite rules or mod_security Apache modules)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bugs:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Not including defined(&#039;_VALID_MOS&#039;) or die... statements&lt;br /&gt;
# Poorly constructed include() statements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Although the Joomla! core is secure when configured correctly, third party extensions come in all flavors of age and quality. Unless you absolutely trust the extension developer, always review the code should before installing. The following is a list of typical areas of concern.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. How complex is the extension? &lt;br /&gt;
&lt;br /&gt;
: The larger it is, the more likely it is to have problems, and the more carefully you should review it. If you can&#039;t tell what it&#039;s doing, you should not trust it.&lt;br /&gt;
&lt;br /&gt;
2. Does the extension read or write files to your server? &lt;br /&gt;
&lt;br /&gt;
: Programs that read files may inadvertently violate access restrictions you&#039;ve set up, or pass sensitive system information to crackers. Programs that write files have the potential to modify or damage existing files, or introduce trojan horses.&lt;br /&gt;
&lt;br /&gt;
3. Does the extension interact with other programs on your system? &lt;br /&gt;
&lt;br /&gt;
: For example, many extensions send e-mail in response to a form input by opening a connection with the sendmail program. Is it doing this in a safe way?&lt;br /&gt;
&lt;br /&gt;
4. Does the extension run with suid (set-user-id) privileges? &lt;br /&gt;
&lt;br /&gt;
: In general this is very dangerous; extensions need an excellent reasons for doing this.&lt;br /&gt;
&lt;br /&gt;
5. Does the extension validate all user input, such as in form fields and in the URL?&lt;br /&gt;
&lt;br /&gt;
6. Does the extension use explicit path names when invoking external programs? &lt;br /&gt;
&lt;br /&gt;
: Relying on the PATH environment variable to resolve partial path names is a dangerous practice.&lt;br /&gt;
&lt;br /&gt;
7. Is the extension secure against direct access throught the URL? &lt;br /&gt;
&lt;br /&gt;
: For example: www.yoursite.com/components/com_bad_extension.php?lots_of_bad_code_here&lt;br /&gt;
&lt;br /&gt;
8. Is the extension secure against remote file inclusions?&lt;br /&gt;
&lt;br /&gt;
9. Is the extension secure against SQL injections?&lt;br /&gt;
&lt;br /&gt;
10. Is the extension secure against Cross Site Scripting (XSS)?&lt;br /&gt;
&lt;br /&gt;
11. Does the extension need PHP register_globals ON, or Joomla! RG Emulation ON? &lt;br /&gt;
&lt;br /&gt;
: If so, then it is probably violating number 7 above.&lt;br /&gt;
&lt;br /&gt;
12. Does the extension provide higher database access to less privileged users? &lt;br /&gt;
&lt;br /&gt;
: For example does it allow guests or registered users to view data that only publishers or administrators should be able to see?&lt;br /&gt;
&lt;br /&gt;
==Why does the Extensions site include insecure extensions?==&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Joomla! Extensions site exists as a free service to the community. Anyone can post extensions there and extensions exist at all levels of quality and maturity.&lt;br /&gt;
&lt;br /&gt;
If an extension is found to contain vulnerabilities, it will be removed from the site until a safer version is released, but there is no guarantee that the vulnerabilities of every extension have been discovered or reported.&lt;br /&gt;
&lt;br /&gt;
To be safe, you must verify the security of every extension you install.&lt;br /&gt;
&lt;br /&gt;
Below is the text of the Joomla! Extensions site disclaimer. Ignore it at your peril. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disclaimer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: The extensions and reviews listed in this area have been submitted by the community and their listing does not constitute or imply endorsement, recommendation, or favouring by Joomla!/OSM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: This content is provided as a free service to our visitors, and, as such, Joomla!/OSM cannot be held liable for the accuracy of the information. Visitors wishing to verify that the information is correct should contact the parties responsible for authoring the content and/or development of the extension.&lt;br /&gt;
&lt;br /&gt;
==Why is there a warning in the extensions install screen?==&lt;br /&gt;
&lt;br /&gt;
It&#039;s just a warning! You are of course free to install any extension you want onto your own site, but remember that &#039;&#039;&#039;YOU&#039;&#039;&#039; are responsible for the safety of your site and the quality of the applications you install.&lt;br /&gt;
&lt;br /&gt;
The vast majority of reported Joomla! vulnerabilities are through poorly-written or obsolete versions of third party extensions that should not have been left on the server. Therefore, before installing anything carefully evaluate the quality of the extension&#039;s code.&lt;br /&gt;
&lt;br /&gt;
The [[Vulnerable Extensions List]] is a valuable source of information on what &#039;&#039;&#039;NOT&#039;&#039;&#039; to install.&lt;br /&gt;
&lt;br /&gt;
==Why isn&#039;t un-publishing a vulnerable extension enough to protect my site?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Simply removing the menu links to an extension, or unpublishing a module is NOT enough to protect your site! As long as the extension&#039;s files exist on your server, you are vulnerable. Note how in the following examples an attacker can bypass the Joomla! index file to directly target any file, of any extension.&lt;br /&gt;
&lt;br /&gt;
 www.your_site.org/components/com_bad_component/vulnerable_file.php&lt;br /&gt;
 www.your_site.org/modules/mod_bad_module/vulnerable_file.php&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions for removing a vulnerable extension&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Make a list of files to remove&lt;br /&gt;
&lt;br /&gt;
: If you can locate it, read the extension&#039;s xml file to determine exactly which directories, files, and database tables were added to your system. The xml file is in the original zip archive used during the extension install process. For example, the zip archive for an extension called mod_vulnerable, would contain an xml file called, mod_vulnerable.xml, and might contain a list of files such as the following:&lt;br /&gt;
&lt;br /&gt;
 mod_vulnerable.php&lt;br /&gt;
 mod_vulnerable/vulnerable_file.txt&lt;br /&gt;
 mod_vulnerable/another_vulnerable_file.txt&lt;br /&gt;
 mod_vulnerable/yet_another_vulnerable_file.txt&lt;br /&gt;
 mod_vulnerable/index.html&lt;br /&gt;
&lt;br /&gt;
2. Uninstall via the Joomla Installer:&lt;br /&gt;
&lt;br /&gt;
: Using the Installer in the Joomla! Administrator backend, uninstall the vulnerable extension. You may also need to uninstall related modules, components, or plugins.&lt;br /&gt;
&lt;br /&gt;
3. Check that the uninstall process was complete:&lt;br /&gt;
&lt;br /&gt;
: Don&#039;t trust the extension to safely remove all of it&#039;s files. Compare directories and files on your system to the extension&#039;s xml list to ensure that all related files were actually removed.&lt;br /&gt;
&lt;br /&gt;
4. Optionally, remove related database tables:&lt;br /&gt;
&lt;br /&gt;
: Check your database and remove any tables created by the extension. To ease the upgrade process to new versions, many uninstall scripts do not remove related database tables. You can find the list of tables in each extension&#039;s xml file. (If you plan on installing a safer, compatible version of the same extension and you want to reuse existing data, you can usually leave the database tables as they are.)&lt;br /&gt;
&lt;br /&gt;
= Apache =&lt;br /&gt;
&#039;&#039;&#039;Covers information on Apache Web server, Apache modules, .htaccess files, etc.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is Apache modSecurity?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ModSecurity is an Apache module that functions as an embeddable web application firewall. It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring and real-time analysis with no changes to existing infrastructure. It is also an open source project that aims to make web application firewall technology available to everyone.&lt;br /&gt;
&lt;br /&gt;
When configuring ModSecurity, it is important to know that it is not only the Joomla! application that may require unique rules, but also the data that the application processes.&lt;br /&gt;
&lt;br /&gt;
Quality hosting providers customize mod_security rules to suit each customer. &lt;br /&gt;
&lt;br /&gt;
If you have a conflict between Joomla and ModSecurity, it is often third party components, and sometimes even contact form submissions that trigger the problem. Joomla out of the box &#039;&#039;usually&#039;&#039; works with typical ModSecurity settings, but this is dependent on each hosting provider&#039;s unique configuration. &lt;br /&gt;
&lt;br /&gt;
Overall, mod_security is a excellent tool, but this is really something your host should manage.&lt;br /&gt;
&lt;br /&gt;
One specific error is the failure of file uploads, this is often caused by SecFilterScanPOST being enabled. If you get an internal server error while using the flash upload in the Media Manager this is a good place to start. You can disable this setting by adding &#039;&#039;&#039;SecFilterScanPOST Off&#039;&#039;&#039; to your .htaccess file.&lt;br /&gt;
&lt;br /&gt;
ModSecurity configurations are far too varied and complex to describe here. To learn more, see the following resources:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# [http://www.modsecurity.org/ Official ModSecurity Site]&lt;br /&gt;
# [http://www.modsecurity.org/projects/modsecurity/apache/index.html ModSecurity and Apache]&lt;br /&gt;
&lt;br /&gt;
== How do I block directory scans using  .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add one of the following Apache rewrite rules to your .htaccess file. The first example will internally rewrite all attempts to access files with names starting with &amp;quot;phpMyAdmin&amp;quot; to index.php. Be wary of using this as it allows a seemingly valid duplicate URL for your homepage. The second rule is more safe. It simply returns a 403 response.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sample Apache Rewrite Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 RewriteRule ^phpMyAdmin /index.php [L]&lt;br /&gt;
 RewriteRule ^phpMyAdmin - [F]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Some Regular Expression Tips&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ^ Means start of pattern&lt;br /&gt;
 . Means any character other than newlines&lt;br /&gt;
 + Means one or more of the previous character&lt;br /&gt;
 * Means zero or more of the previous character&lt;br /&gt;
 $ Means end of pattern&lt;br /&gt;
 \.  Literal periods must be escaped with a leading \&lt;br /&gt;
&lt;br /&gt;
==How can I change PHP settings using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This FAQ explains how to set boolean PHP configuration directives using php_flag. The format for php_flag is: php_flag name on|off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Open the .htaccess file located in your site&#039;s home directory, or if you don&#039;t have one, create a blank one now. Note the period character (.) at the beginning of the file name.&lt;br /&gt;
&lt;br /&gt;
2. Add any of the following code samples to your .htaccess file, each on it&#039;s own line. These sample commands will prevent common global variable injection attacks, cross site scripting (XSS) sttacks, and code injection attacks.&lt;br /&gt;
&lt;br /&gt;
 php_flag register_globals off&lt;br /&gt;
&lt;br /&gt;
 php_flag allow_url_fopen off&lt;br /&gt;
&lt;br /&gt;
 php_flag magic_quotes_gpc on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that although the magic_quotes_gpc directive adds a layer of security, for performance reasons it is not considered a best practice. If you have verified that your site correctly filters and validates all user data (and every production site really should), then there is no need to add this directive. If you have any doubt, add it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3. Save the .htaccess file in your site&#039;s home directory.&lt;br /&gt;
&lt;br /&gt;
4. Test your site&#039;s front end and back end.&lt;br /&gt;
&lt;br /&gt;
==How does FastCGI effect Joomla?==&lt;br /&gt;
&lt;br /&gt;
When PHP runs from FastCGI, your server runs the PHP interpreter like an Apache module, but with the rights of your user account. Usually, the PHP interpreter is either running as the user of the webserver (which is fast, but insecure, since everyone&#039;s scripts run with the same rights), or as a CGI program, which is slow. Thus, FastCGI is a good solution for shared hosting.&lt;br /&gt;
&lt;br /&gt;
Since the PHP interpreter runs as a single instance, it does (AFAIK) not parse the .htaccess or php.ini files per directory. To change php.ini settings, your host must offer you a method to set up or modify your own php.ini, or at least parts of it. Here is how one of host does this: it parses one php.ini file (which the user can modify) once an hour, and puts some well-defined settings into the web server&#039;s main php.ini file. Thus, users are able to change some settings for their site only, such as turning register_globals off, switching between PHP4 and PHP5.&lt;br /&gt;
&lt;br /&gt;
If your server uses FastCGI, you can ask them to enable a method such as the above example, or you may be able to ask them adjust some settings for you.&lt;br /&gt;
&lt;br /&gt;
==How can I check if mod_rewrite is enabled?==&lt;br /&gt;
&lt;br /&gt;
Many problems with search engine optimization (SEO) arise from the fact that a host has not enabled mod_rewrite on the server.&lt;br /&gt;
&lt;br /&gt;
1. Enable SEO in your administrator! (administrator &amp;gt; SEO &amp;gt; Enable &amp;gt; Save)&lt;br /&gt;
&lt;br /&gt;
2. Rename your htaccess.txt to .htaccess, or use your existing .htaccess file.&lt;br /&gt;
&lt;br /&gt;
3. Place ONLY the following lines in your .htaccess file in the domain root folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;      Options +FollowSymLinks&lt;br /&gt;
      RewriteEngine On&lt;br /&gt;
      RewriteRule ^joomla\.html http://www.joomla.org/ [R=301,L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Point your browser to: http://www.example.com/joomla.html&lt;br /&gt;
&lt;br /&gt;
(Replace &#039;example.com&#039; with your site&#039;s actual URL.)&lt;br /&gt;
&lt;br /&gt;
5. If you are redirected to www.joomla.org, mod_rewrite is working. If you get an error, mod_rewrite is not working.&lt;br /&gt;
&lt;br /&gt;
6. Note: if your site is located in a folder, for example &amp;quot;test&amp;quot; you will need to modify the .htaccess file as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;      Options +FollowSymLinks&lt;br /&gt;
      RewriteEngine On&lt;br /&gt;
      RewriteRule ^test/joomla\.html http://www.joomla.org/ [R=301,L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How do I switch to PHP5 using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Many shared server environments currently run .php scripts using the PHP4 interpreter and .php5 code using the PHP5 interpreter. Rather than changing all your file extensions, and perhaps breaking many links, use a .htaccess file to dynamically map one extension to the other.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT CAVEAT:&#039;&#039;&#039; One common reason for doing this is that hosts leave PHP4 configured with register_globals ON in order to support legacy code while offering PHP5 with register_globals OFF. If you are on a shared server at a host that has configured register_globals ON server wide, you should be very worried!&lt;br /&gt;
&lt;br /&gt;
Turning register globals OFF via a local php.ini or a .htaccess file will NOT offer you any extra protection. Another exploited account on your server can simple hack yours. For server security, and since php 4.2, register globals is OFF server wide by default (php default). Any host overriding this is inviting trouble. If you need register globals ON for a specific site, simple use a .htaccess file for that specific directory, and server wide security will not be compromised. Of course, if you do this be sure all effected scripts fully sanitize input data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Your Apache server must be configured to use .htaccess files. If not, you may be able to request this from your host.&lt;br /&gt;
2. Your Apache configuration must allow the following setting. If not, you may be able to request this from your host.&lt;br /&gt;
3. Your host must have configured the .php and .php5 file extensions as described above. If not, they may possibly have chosen other extensions. Check with your host.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Check to be sure your site is configured to use .htaccess files.&lt;br /&gt;
&lt;br /&gt;
2. Make a backup of the .htaccess file in your root public_http directory. If you don&#039;t have a .htaccess file at this location, create one now.&lt;br /&gt;
&lt;br /&gt;
3. There are various ways to set the comman, depending on your server configuration. One of the following will probably work. Add ONE the following lines at the end of your .htaccess file. If unsure which to use, check with your hosting provider on which version works best for your configuration.&lt;br /&gt;
&lt;br /&gt;
 AddType x-mapp-php5 .php&lt;br /&gt;
 AddHandler application/x-httpd-php5 .php&lt;br /&gt;
 AddHandler cgi-php5 .php&lt;br /&gt;
&lt;br /&gt;
4. Carefully test.&lt;br /&gt;
&lt;br /&gt;
5. Delete the backup .htaccess file. Don&#039;t leave backups of .htaccess files in public directories.&lt;br /&gt;
&lt;br /&gt;
==How do I password protect directories using .htaccess?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This FAQ explains how to protect the Joomla! /administrator/ directory on Apache servers using the htpasswd utility. You can easily adapt these instructions to protect other directories. If you need help finding or creating your .htaccess file, start here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Caveat (From Apache.org)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Basic authentication should not be considered secure for any particularly rigorous definition of secure.&lt;br /&gt;
Although the password is stored on the server in encrypted format, it is passed from the client to the server in plain text across the network. Anyone listening with any variety of packet sniffer will be able to read the username and password in the clear as it goes across.&lt;br /&gt;
&lt;br /&gt;
Not only that, but remember that the username and password are passed with every request, not just when the user first types them in. So the packet sniffer need not be listening at a particularly strategic time, but just for long enough to see any single request come across the wire.&lt;br /&gt;
&lt;br /&gt;
And, in addition to that, the content itself is also going across the network in the clear, and so if the web site contains sensitive information, the same packet sniffer would have access to that information as it went past, even if the username and password were not used to gain direct access to the web site.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use basic authentication for anything that requires real security. It is a detriment for most users, since very few people will take the trouble, or have the necessary software and/or equipment, to find out passwords. However, if someone had a desire to get in, it would take very little for them to do so.&lt;br /&gt;
&lt;br /&gt;
Basic authentication across an SSL connection, however, will be secure, since everything is going to be encrypted, including the username and password.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. If you are unfamiliar with the Apache htpasswd utility, you may want to read the following link first.&lt;br /&gt;
Apache Authentication, Authorization, and Access Control&lt;br /&gt;
&lt;br /&gt;
2. Check to be sure your site is configured to use .htaccess files. If not sure, ask your host.&lt;br /&gt;
&lt;br /&gt;
3. Decide where to put your .htaccess file. Because Apache recursively searches all directories in a path for .htaccess files, the higher in your directory structure you place this file, the more directories it will control. If there is already an .htaccess file in the directory you choose, it&#039;s probably best to add the new code to it.&lt;br /&gt;
&lt;br /&gt;
4. Decide where to store your.htpasswd and .htgroups files. These files should NEVER be publicly accessable through the Web. Below is an example directory structure showing good locations for each file. Note that the /auth/ directory in this example is NOT accessible from the Web.&lt;br /&gt;
&lt;br /&gt;
 /home/mysite/public_html/.htaccess&lt;br /&gt;
 /home/mysite/auth/.htpasswd/&lt;br /&gt;
 /home/mysite/auth/.htgroups/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Create the .htpasswd and .htgroups files as explained in the official Apache HowTo, referenced above. (Since you&#039;ve read the always current and official documentation at Apache.org, we&#039;ll spare you the trouble of displaying it again here.)&lt;br /&gt;
&lt;br /&gt;
6. If a .htaccess file already exists in the directory you have chosen, make a backup copy. If the file does not exist, create a new file with that name now. (Don&#039;t forget the dot at the beginning of the name.)&lt;br /&gt;
&lt;br /&gt;
7. Add the following code to the .htaccess file. Adjust the example paths (marked in red) as needed for your server. Adjust the group name that you created in step 5 if it differs from the below example.&lt;br /&gt;
&lt;br /&gt;
 AuthUserFile /home/auth/.htpasswd&lt;br /&gt;
 AuthGroupFile /home/auth/.htgroups&lt;br /&gt;
 AuthType Basic&lt;br /&gt;
 AuthName &amp;quot;LWS&amp;quot;&lt;br /&gt;
 require group admins&lt;br /&gt;
&lt;br /&gt;
8. Test carefully.&lt;br /&gt;
&lt;br /&gt;
9. Remove all backup .htaccess files from public_http directories.&lt;br /&gt;
&lt;br /&gt;
10. If you cannot use the Apache htpasswd utility, here&#039;s a free, online script that creates the necessary files for you. You&#039;ll need to know the user name, password, and path. The script does the rest for you. Note that for more advanced configuration, such as the use of groups, you&#039;ll need to edit the resulting files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.htaccess Generator:&#039;&#039;&#039; http://www.webmaster-toolkit.com/htaccess-generator.shtml&lt;br /&gt;
&lt;br /&gt;
== How do I restrict directory access by IP address using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This can be a very effective way to protect your Joomla! administrator directory. Any other directory in public_html can be protected in the same way. This method only works if you have a static IP address assigned to you. Anyone attempting to browse such directories using a different IP Address will get a 403 Forbidden error.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
# In the directory you wish to protect, open (or create) a file called, .htaccess. (Note the dot at the beginning of the file name.)&lt;br /&gt;
# Add the following code to this file, replacing 100.100.100.100 in this example with the static IP address you plan to allow:&lt;br /&gt;
&lt;br /&gt;
 Order Deny,Allow&lt;br /&gt;
 Deny from all&lt;br /&gt;
 Allow from 100.100.100.100&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Optional: You can enter partial IP Addresses, such as, 100.100.100. This allows access to a range of addresses.&lt;br /&gt;
&lt;br /&gt;
* Optional: You can add multiple addresses by separating them with comma&#039;s.&lt;br /&gt;
&lt;br /&gt;
 100.100.100.101, 100.100.100.102&lt;br /&gt;
&lt;br /&gt;
==How do I convert an htaccess.txt file into a .htaccess file?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When using PHP as an Apache module, you can change the configuration settings using directives in Apache configuration files (e.g. httpd.conf and .htaccess files). You will need &amp;quot;AllowOverride Options&amp;quot; or &amp;quot;AllowOverride All&amp;quot; privileges to do so. If you control your own Apache configuration, you can and should use httpd.conf. If you do not control your Apache configuration (such as on a shared server), you must use .htaccess files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# First look for the file, htaccess.txt in your root directory. It should have been installed during the Joomla! installation. (Note that this file name does not begin with a dot.) Open and carefully read htaccess.txt. It contains important suggestions on how to protect your site.&lt;br /&gt;
# Make any adjustments to this file as appropriate for your site, and then save it in your site&#039;s home directory as, .htaccess (including the dot).&lt;br /&gt;
# Test your site&#039;s front end and back end. If it produces errors, rename the file back to htaccess.txt, and troubleshoot your edits. If you are unable to get this working, you may have to leave the file named htaccess.txt.&lt;br /&gt;
# Use phpinfo() to ensure that all configurations set as you intended. Note: Web-accessible files that include phpinfo() are potential security risks they offer attackers lots of useful information about your server. Always remove such files after use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More Information&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://us2.php.net/configuration.changes Official PHP Manual: How to change configuration settings]&lt;br /&gt;
* [http://us2.php.net/manual/en/ini.php#ini.list Official PHP Manual: List of PHP INI directives]&lt;br /&gt;
&lt;br /&gt;
== How do I block direct hot linking to image files using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Caveats&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Your server must allow .htaccess files for this technique to work.&lt;br /&gt;
# If you do not have a .htaccess file in your root directory, see the related FAQ first.&lt;br /&gt;
# Do not use this method to redirect image hot links to HTML pages or to servers that are not your own.&lt;br /&gt;
# Hot linked images can only be replaced by other images, not with HTML pages.&lt;br /&gt;
# As with any .htaccess rewrite, you may block legitimate traffic, such as users behind proxies or firewalls.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Create a jpeg image called no_hot_link.jpe. Note that the odd file extention (.jpe) is intentional and important. Place this file in your images directory.&lt;br /&gt;
# Place the following code in the .htaccess file of your root directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt; RewriteEngine On&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)*your_site\.com/ [NC]&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} !^$&lt;br /&gt;
 RewriteRule \.(jpe?g|gif|bmp|png)$ /images/no_hot_link.jpe [L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Explanation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first line begins the Apache rewrite rule. The second line matches any requests from your own site, here called your_site.com url. The [NC] flag means &amp;quot;aNy Case&amp;quot;, which means, match any and all upper and lower case characters. The third line allows empty referrals such as when a user is behind a caching proxy. The last line matches any files ending with the extension jpeg, jpg, gif, bmp, or png. This is then replaced by the no_hot_link.jpe file in your images directory. This JPEG file uses the extension jpe instead of jpg to prevent these rules from blocking your replacement image.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block hot linking from specific domains&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To stop hotlinking from specific domains only, such as myspace.com, blogspot.com and livejournal.com, while allowing other web sites to hotlink to your images, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt; RewriteEngine On&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} ^http://([^.]+\.)*myspace\.com/ [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} ^http://([^.]+\.)*blogspot\.com/ [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} ^http://([^.]+\.)*livejournal\.com/ [NC]&lt;br /&gt;
 RewriteRule \.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpe [L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can add as many different domains as you want. Every RewriteCond line except the last one should end with the [NC,OR] flags. NC means to ignore case. OR means &amp;quot;Or Next&amp;quot;, as in, match this line OR the next line. The last RewriteCond omits the OR flag to stop matching after the last RewriteCond.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display a 403 forbidden code&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can display a 403 Forbidden error code. Replace the last line of the previous examples with this line:&lt;br /&gt;
&lt;br /&gt;
 RewriteRule \.(jpe?g|gif|bmp|png)$ - [F]&lt;br /&gt;
&lt;br /&gt;
= PHP =&lt;br /&gt;
&lt;br /&gt;
== Why is Joomla! written in PHP? ==&lt;br /&gt;
&lt;br /&gt;
: Might as well get it from the horse&#039;s mouth. In [http://www.oracle.com/technology/pub/articles/php_experts/rasmus_php.html Do you PHP?], Rasmus Lerdorf, the originator of PHP, sums up how and why PHP developed as it did.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&amp;quot;What it all boils down to is that PHP was never meant to win any beauty contests. It wasn&#039;t designed to introduce any new revolutionary programming paradigms. It was designed to solve a single problem: the Web problem. That problem can get quite ugly, and sometimes you need an ugly tool to solve your ugly problem. Although a pretty tool may, in fact, be able to solve the problem as well, chances are that an ugly PHP solution can be implemented much quicker and with many fewer resources. That generally sums up PHP&#039;s stubborness.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== What is the latest stable release of PHP? ==&lt;br /&gt;
&lt;br /&gt;
Check the [http://www.php.net/downloads.php official PHP download page] for information on the latest PHP release.&lt;br /&gt;
&lt;br /&gt;
== How do I tune for speed with PHP5 and MySQL5? ==&lt;br /&gt;
&lt;br /&gt;
: This is just a point by point summary of how I&#039;ve been tuning and tweaking our Joomla sites to get them running as quickly as possible. For reference, we run all our sites off a Rackspace dedicated server, with 1Gb RAM, a 2Ghz dual core Athlon, running Apache 2.0.x (current revision), PHP 5.0.x (current revision) and MySQL 5.0.18.&lt;br /&gt;
&lt;br /&gt;
: These are listed in terms of apparent speed increase - that is, not the sheer speed for the full page, but the speed before the page is usable to view content, even if not all features are loaded.&lt;br /&gt;
&lt;br /&gt;
# PHP caching. I had been running eAccelerator, but switched to APC today, and it has made the system even faster than before, and eAccelerator was a big boost over uncached PHP. Joomla is a big complex system, so using precompiled code is a big time saver. I use a 128Mb in-memory cache, which is plenty for our needs.&lt;br /&gt;
# MySQL Query Caching. This one will vary depending on how dynamic your site is, and you can really kill the benefits by using the wrong extensions (any date/time based will need checking), but if you are serving pretty much the same queries each page load, it will drop the load times noticably.&lt;br /&gt;
# Template Image optimisation - template images really slow down the initial page load for first time visitors, so optimising the hell out of them makes sense. Remember that your template is probably not going to change as often as your story content, so you can afford to spend more time on optimising the images for it that you would otherwise. I recommend Irfanview, with the pngout plugin active for PNG images, and it isn&#039;t bad for JPG and GIF images either. Don&#039;t forget to ramp up the compression level of PNGs, and, if possible, reducing them to indexed pallettes.&lt;br /&gt;
# CSS compression. Easy one this - put a little script to output a gzipped version of your CSS file(s) and point your index.php at it. Example script below - I didn&#039;t write it, but it&#039;s short, to the point, and works.&lt;br /&gt;
&lt;br /&gt;
              ob_start (&amp;quot;ob_gzhandler&amp;quot;);&lt;br /&gt;
              header(&amp;quot;Content-type: text/css&amp;quot;);&lt;br /&gt;
              header(&amp;quot;Cache-Control: must-revalidate&amp;quot;);&lt;br /&gt;
              $offset = 60 * 60 ;&lt;br /&gt;
              $ExpStr = &amp;quot;Expires: &amp;quot; .&lt;br /&gt;
              gmdate(&amp;quot;D, d M Y H:i:s&amp;quot;,&lt;br /&gt;
              time() + $offset) . &amp;quot; GMT&amp;quot;;&lt;br /&gt;
              header($ExpStr);&lt;br /&gt;
&lt;br /&gt;
# Strip unneeded modules, components, mambots from Joomla. If you haven&#039;t used them, the impact on your loading time is minimal, but with more components/modules active, there are more points of failure, and Apache errors are slow!&lt;br /&gt;
# Scrutinise the Apache error log. It is amazing how many errors can crop up even with a fairly minimal Joomla install, and they don&#039;t necessarily affect the appearance of the page. Check your error log, especially if you are using custom components/modules, or any non-standard config settings. Once you&#039;ve noticed any problems, it&#039;s time to fix the code creating them, and test thoroughly before uploading the fixed versions.&lt;br /&gt;
# Keep rechecking as you add/remove features, redesign or change any server configuration options. Even things like adding virtual servers in Apache can affect speed of the server, as a missed config setting can cause general Apache delays.&lt;br /&gt;
&lt;br /&gt;
== Should PHP run as a CGI script or as an Apache module? ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to configure Apache to use PHP: &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Configure Apache to load the PHP interpreter as an &amp;lt;i&amp;gt;Apache module&amp;lt;/i&amp;gt;&lt;br /&gt;
# Configure Apache to run the PHP interpreter as a &amp;lt;i&amp;gt;CGI binary&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;(PS: Windows IIS normaly configures as CGI by the way)&amp;lt;/span&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
It is the intention of this post to provide you information relating to &lt;br /&gt;
the configuration and recognition of each method. &amp;quot;In general&amp;quot;&lt;br /&gt;
historically only one method or the other has been implemented,&lt;br /&gt;
however, with the architectural changes made to PHP starting with PHP5,&lt;br /&gt;
it has been quite common for hosting firms to configure for both. One&lt;br /&gt;
version running as CGI and one version running as a Module. It is&lt;br /&gt;
generally accepted more recently that running PHP as a CGI is more&lt;br /&gt;
secure, however, running PHP as an Apache Module does have a slight&lt;br /&gt;
performance gain and is generally how most pre-configured systems will&lt;br /&gt;
be delivered out of the box.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;What is the difference between CGI and apache Module Mode?&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An &amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Apache module&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
is compiled into the Apache binary, so the PHP interpreter runs in the&lt;br /&gt;
Apache process, meaning that when Apache spawns a child, each process&lt;br /&gt;
already contains a binary image of PHP. A CGI is executed as a single&lt;br /&gt;
process for each request, and must make an exec() or fork() call to the&lt;br /&gt;
PHP executable, meaning that each request will create a new process of&lt;br /&gt;
the PHP interpreter.  Apache is much more efficient in it&#039;s ability to&lt;br /&gt;
handle requests, and maaging resources, making the Apache module&lt;br /&gt;
slightly faster than the CGI (as well as more stable under load).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;CGI Mode&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
on the other hand, is more secure because the server now manages and&lt;br /&gt;
controls access to the binaries. PHP can now run as your own user&lt;br /&gt;
rather than the generic Apache user. This means you can put your&lt;br /&gt;
database passwords in a file readable only by you and your php scripts&lt;br /&gt;
can still access it! The &amp;quot;Group&amp;quot; and &amp;quot;Other&amp;quot; permissions ( refer &amp;lt;a href=&amp;quot;component/option,com_easyfaq/task,view/id,73/Itemid,268/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Permissions FAQ&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
can now be more restrictive. CGI mode is also claimed to be more&lt;br /&gt;
flexible in many respects as you should now not see, with phpSuExec (&lt;br /&gt;
refer [http://www.joomlatutorials.com/joomla-tips-and-tricks/40-miscellaneous-joomla-tips/114-how-to-troubleshoot-a-joomla-installation.html&amp;quot; target=&amp;quot;_blank Permissions under phpSuExec]&lt;br /&gt;
issues with file ownership being taken over by the Apache user,&lt;br /&gt;
therefore you should no-longer have problems under FTP when trying to&lt;br /&gt;
access or modify files that have been uploaded through a PHP interface,&lt;br /&gt;
such as Joomla! upload options.&lt;br /&gt;
&lt;br /&gt;
If your server is&lt;br /&gt;
configured to run PHP as an Apache module, then you will have the&lt;br /&gt;
choice of using either php.ini or Apache .htaccess files, however, if&lt;br /&gt;
your server runs PHP in CGI mode then you will only have the choice of&lt;br /&gt;
using php.ini files locally to change settings, as Apache is no longer&lt;br /&gt;
in complete control of PHP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Testing and Reviewing Your PHP Installation&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Also known as &amp;quot;Everything you ever wanted and didn&#039;t want to know about PHP&amp;quot;&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To&lt;br /&gt;
find out the PHP interpreter mode and to generally test your PHP&lt;br /&gt;
installation and to find out a vast amount of information about your&lt;br /&gt;
PHP environment, supported utilities, applications and settings, you&lt;br /&gt;
create a single PHP file containing &amp;lt;i&amp;gt;only&amp;lt;/i&amp;gt; the following lines;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 phpinfo();&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This single line of code outputs an amazing amount of information, be warned.... &amp;lt;img src=&amp;quot;http://forum.joomla.org/Smileys/joomla/wink.gif&amp;quot; alt=&amp;quot;Wink&amp;quot; border=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the file as any filename you wish, but with the &amp;quot;.php&amp;quot; extension. FTP it to your server and open it in a browser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Other useful information&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following are PHP functions, that when run from a PHP File can provide some useful information, &amp;lt;i&amp;gt;(less than the above option)&amp;lt;/i&amp;gt; many should run on most hosts, however many hosts disable some of these functions for security. No Guarantee&#039;s offered...&lt;br /&gt;
&lt;br /&gt;
Again,&lt;br /&gt;
as above, make a file, name it anything you wish but make sure it has&lt;br /&gt;
the &amp;quot;.php&amp;quot; extension, copy and paste the following lines in to it and&lt;br /&gt;
FTP to your server.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?&amp;lt;br /&amp;gt;echo &amp;quot;Hostname: &amp;quot;. @php_uname(n) .&amp;quot;&amp;quot;;&lt;br /&gt;
 if (function_exists( &#039;shell_exec&#039; )) { echo &amp;quot;Hostname: &amp;quot;.&lt;br /&gt;
 @gethostbyname(trim(`hostname`)); } else { echo &amp;quot;Server IP: &amp;quot;.&lt;br /&gt;
 $_SERVER[&#039;SERVER_ADDR&#039;] .&amp;quot;&amp;quot;; }&lt;br /&gt;
 echo &amp;quot;Platform: &amp;quot;. @php_uname(s) .&amp;quot; &amp;quot;. @php_uname(r) .&amp;quot; &amp;quot;. @php_uname(v) .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Architecture: &amp;quot;. @php_uname(m) .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Username: &amp;quot;. get_current_user () .&amp;quot; ( UiD: &amp;quot;. getmyuid() .&amp;quot;, GiD: &amp;quot;. getmygid() .&amp;quot; )&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Curent Path: &amp;quot;. getcwd () .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Type: &amp;quot;. $_SERVER[&#039;SERVER_SOFTWARE&#039;] . &amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Admin: &amp;quot;. $_SERVER[&#039;SERVER_ADMIN&#039;] . &amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Signature: &amp;quot;. $_SERVER[&#039;SERVER_SIGNATURE&#039;] .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Protocol: &amp;quot;. $_SERVER[&#039;SERVER_PROTOCOL&#039;] .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Mode: &amp;quot;. $_SERVER[&#039;GATEWAY_INTERFACE&#039;] .&amp;quot;&amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
 ?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Joomla! HISA&amp;lt;/span&amp;gt; or &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Joomla! Tools Suite&amp;lt;/span&amp;gt; can also assist to determine which mode your server in running in, also&lt;br /&gt;
providing a large amount of other related  information including recommendations on configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Joomla! Tools Suite&amp;lt;/b&amp;gt; (JTS) is a complete suite of Tools to help you troubleshoot and maintain Joomla! and include the &amp;quot;HISA&amp;quot; script. [http://joomlacode.org/gf/project/jts/ Download JTS Here]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Joomla! Health, Installation and Security Audit&amp;lt;/b&amp;gt; (HISA) is a single standalone script that provides purely configuration information. [http://joomlacode.org/gf/project/hisa/ Download HISA Here]&lt;br /&gt;
&lt;br /&gt;
*[http://forum.joomla.org/viewtopic.php?t=136328 Forum Discussion Here] (Project is [http://forum.joomla.org/viewtopic.php?p=1804483#p1804483 &#039;&#039;Dormant&#039;&#039;] since August 2010)&lt;br /&gt;
&lt;br /&gt;
*[http://www.joomlatutorials.com/joomla-tips-and-tricks/40-miscellaneous-joomla-tips/114-how-to-troubleshoot-a-joomla-installation.html How to TroubleShoot A Joomla! Installation]&lt;br /&gt;
&lt;br /&gt;
Another &amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;Indirect method&amp;lt;/span&amp;gt;, and possibly not 100% reliable, is that if you are unable to make use of .htaccess on Linux hosting and Apache based servers then you are either running in CGI mode or your host has disabled the use of .htaccess even if your server is running PHP as an Apache Module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color: maroon&amp;quot;&amp;gt;Remove these files immediately after use, the information contained in their output is extensive and explicit regarding your PHP and server configurations, it will help those wishing to cause your site harm&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;For those wishing to know more about &amp;quot;How To...&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Running PHP as an Apache module&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
To configure Apache to load PHP as a module to &amp;lt;i&amp;gt;&#039;parse&#039;&amp;lt;/i&amp;gt; your PHP scripts, the httpd.conf needs to be modified, typically found in &amp;quot;c:\Program Files\Apache Group\Apache\conf\&amp;quot; or &amp;quot;/etc/httpd/conf/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Search for the section of the file that has a series of commented out &amp;quot;LoadModule&amp;quot; statements. (Statements prefixed by the hash &amp;quot;#&amp;quot; sign are regarded as having been commented out.) If PHP is running in &amp;quot;Apache Module&amp;quot; Mode you should see something very similar to the following;&lt;br /&gt;
&lt;br /&gt;
LoadModule php4_module &amp;quot;c:/php/php4apache.dll&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;Apache 1.x&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP5&amp;lt;/b&amp;gt;&lt;br /&gt;
 LoadModule php5_module     C:/php/php5apache2.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 LoadModule php5_module     /usr/lib/apache/libphp5.so&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP4&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php4_module libexec/libphp4.so&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LoadModule php4_module C:/php/php4apache.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;and&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
 AddModule mod_php4.c&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;or&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 AddModule mod_php5.c&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;Apache 2.x&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP5&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php5_module     C:/php/php5apache2.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php5_module     /usr/lib/apache/libphp5.so&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP4&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php4_module     libexec/libphp4.so&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
LoadModule php4_module     C:/php/php4apache.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;and&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
AddModule mod_php5.c&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;or&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
AddModule mod_php4.c    &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Don&#039;t worry that you can&#039;t find a &amp;quot;mod_php4.c&amp;quot; or &amp;quot;mod_php5.c&amp;quot; file anywhere on your system. That directive does not cause Apache to search for the file on your system. For the curious, it specifies the order in which the various modules are enabled by the Apache server.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;If you&#039;re using Apache 2.x, you do not have to insert the AddModule directive. It&#039;s no longer needed in that version. Apache 2.x has its own internal method of determining the correct order of loading the modules.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now find the &amp;quot;AddType&amp;quot; section in the file, and add the following line after the last &amp;quot;AddType&amp;quot; statement:&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-php .php&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to support other file types, like &amp;quot;.php3&amp;quot; and &amp;quot;.phtml&amp;quot;, simply add them to the list, like this:&amp;lt;&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-php .php3&amp;lt;br /&amp;gt;&lt;br /&gt;
 AddType application/x-httpd-php .phtml&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run a syntax check and if all is ok, restart Apache...&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Running PHP as a CGI binary&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
To configure PHP to run as a CGI, again you will need to configure the&lt;br /&gt;
httpd.conf, but confirm that the above settings are not also&lt;br /&gt;
configured, unless you now what you are doing you can generate yourself&lt;br /&gt;
&amp;quot;HTTP 500&amp;quot; errors. Search your Apache configuration file for the&lt;br /&gt;
&amp;quot;ScriptAlias&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
Add the following line below after the ScriptAlias for &amp;quot;cgi-bin&amp;quot;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The location will depend on where PHP is installed on your system, you&lt;br /&gt;
should substitute the appropriate path in place of &amp;quot;c:/php/&amp;quot; (for&lt;br /&gt;
example, &amp;quot;c:/Program Files/php/&amp;quot;).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ScriptAlias /php/ &amp;quot;c:/php/&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apache&lt;br /&gt;
again needs to be configured for the PHP MIME type. Search for the&lt;br /&gt;
&amp;quot;AddType&amp;quot; section, and add the following line after it:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AddType application/x-httpd-php .php&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As in the case of running PHP as an Apache module, you can add whatever extensions you want Apache to recognise as PHP scripts, such as:&lt;br /&gt;
&lt;br /&gt;
AddType application/x-httpd-php .php3&amp;lt;br /&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php .phtml&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, you will need to tell the server to execute the PHP executable each time it encounters a PHP script. Add the following below any existing entries in the &amp;quot;Action&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
Action application/x-httpd-php &amp;quot;/php/php.exe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you notice, we have used the &amp;quot;ScriptAlias&amp;quot; reference, &amp;quot;/php/&amp;quot; portion&lt;br /&gt;
will be recognised as the scriptAlias configured above, this is sort a path alias which will correlate to your PHP installation path configured previously. &amp;lt;i&amp;gt;In other words, don&#039;t put &amp;quot;c:/php/php.exe&amp;quot; or &amp;quot;c:/Program Files/php/php.exe&amp;quot; in that directive, put&lt;br /&gt;
&amp;quot;/php/php.exe&amp;quot;, Apache WILL work it out if correctly configured.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Configuring the Default Index Page&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
This section applies to all users, whether you are loading PHP as a module or running it as a CGI binary, and has been seen often enough to warrant a mention.&lt;br /&gt;
&lt;br /&gt;
If you want to make your PHP script execute as the default page for a directory, you have to add another line to the &amp;quot;httpd.conf&amp;quot;. Simply search for the line in the file that begins with a &amp;quot;DirectoryIndex&amp;quot; and add &amp;quot;index.php&amp;quot; to the list of files on&lt;br /&gt;
that line. For example, if the line used to be:&lt;br /&gt;
&lt;br /&gt;
DirectoryIndex index.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;change it to&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DirectoryIndex index.html index.php&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;If you still wish .html files to be executed before .php files&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;or&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
DirectoryIndex index.php index.html&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;If you wish .php files to be executed before .html files&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next time you access the site or a directory within a site without a&lt;br /&gt;
filename, Apache will &amp;quot;auto-magically&amp;quot; deliver &amp;quot;index.php&amp;quot; if&lt;br /&gt;
available, or &amp;quot;index.html&amp;quot; if &amp;quot;index.php&amp;quot; is not available.&lt;br /&gt;
&lt;br /&gt;
== Why shouldn&#039;t I use PHP safe_mode? ==&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
Enabling safe_mode is not needed if other reasonable security precautions are followed. Using safe_mode for web site security is a poor compromise in a bad situation. It may make sense in some situations, but there is almost always a better way. Because safe_mode in some sense only gives the illusion of safety, it will be removed from PHP starting with version 6.0.&lt;br /&gt;
&lt;br /&gt;
The Joomla! core works fine with or without PHP safe_mode. The one exception to this rule is the installation script. This is because safe_mode, by design, turns off the PHP functions that enable easy uploading via a Web browser. If you do use safe_mode, and need to perform installs via the Web browser, temporarily turn safe_mode OFF, and turn it back ON when finished.&lt;br /&gt;
&lt;br /&gt;
Some third-party extensions may require the specific PHP functions that are blocked by safe_mode. Such extensions should be carefully evaluated to be sure you understand exactly why they require such powerful and potentially dangerous functions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the official PHP site&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;The PHP safe mode is an attempt to solve the shared-server security problem. It is architecturally incorrect to try to solve this problem at the PHP level, but since the alternatives at the web server and OS levels aren&#039;t very realistic, many people, especially ISP&#039;s, use safe mode for now.&amp;quot;&#039;&#039; &lt;br /&gt;
&#039;&#039;&#039;More Information&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode Official PHP Manual: PHP Security and Safe Mode Configuration Directives]&lt;br /&gt;
# [http://us3.php.net/manual/en/features.safe-mode.functions.php Official PHP Manual: PHP Functions restricted/disabled by safe mode]&lt;br /&gt;
&lt;br /&gt;
= Development =&lt;br /&gt;
== How do I setup a secure demo site? ==&lt;br /&gt;
&lt;br /&gt;
In /includes/version.php look for:&lt;br /&gt;
&lt;br /&gt;
 /** @var string Whether site is a production = 1 or demo site = 0 */&lt;br /&gt;
 var $SITE = 1;&lt;br /&gt;
 /** @var string Whether site has restricted functionality mostly used for demo sites: 0 is default */&lt;br /&gt;
 var $RESTRICT = 0;&lt;br /&gt;
&lt;br /&gt;
For a demo site it is advised to following:&lt;br /&gt;
&lt;br /&gt;
 /** @var string Whether site is a production = 1 or demo site = 0 */&lt;br /&gt;
 var $SITE = 0;&lt;br /&gt;
 /** @var string Whether site has restricted functionality mostly used for demo sites: 0 is default */&lt;br /&gt;
 var $RESTRICT = 1;&lt;br /&gt;
&lt;br /&gt;
 $SITE = 0&lt;br /&gt;
 // Allows multiple user logins with only one account. By default Joomla! &lt;br /&gt;
 // allows only one active session per account as a security feature.&lt;br /&gt;
&lt;br /&gt;
 $RESTRICT = 1&lt;br /&gt;
 // Disables those logging in, both Front-end and Back-end from changing &lt;br /&gt;
 // user details - like password and username&lt;br /&gt;
&lt;br /&gt;
These settings are used on the official demo site http://demo.joomla.org&lt;br /&gt;
&lt;br /&gt;
You should also make all files and folders nonwriteable - especially the configuration.php file. Also recommend you setup an automatic cron job that refreshes the database at a set interval (in our case 60mins) from a db script.&lt;br /&gt;
&lt;br /&gt;
== How can I view a live site while developing, but hide it from others? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The method described below should be used for relatively minor modifications, such as adjusting menus or quickly reorganizing content sections. More complex tasks, such as installing new components or adjusting complex configuration settings should be performed and tested on a development server first. Not only does this keep your public site up and running, but it also lets you test at your leisure, thus reducing errors. One way to do it is to create a sub-domain (i. e., dev.yourdomain.com) and install Joomla! there just as it is installed on your public site.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Login to the administrator section, and choose: Site &amp;gt; Global Configuration.&lt;br /&gt;
&lt;br /&gt;
2. The first option you&#039;ll see is is to set the site offline. Choose &amp;quot;Yes&amp;quot; and press the Save button. This will hide prevent display of all site pages, and replace them with the following message:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;This site is down for maintenance. Please check back again soon. message instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3. While you are logged into the &amp;quot;back end&amp;quot; administrator system, you can still view the &amp;quot;front end,&amp;quot; by choosing Site &amp;gt; Template &amp;gt; Preview. This will display the site as it would appear to users along with a warning at the top that the site is down for maintenance.&lt;br /&gt;
&lt;br /&gt;
= Site Recovery =&lt;br /&gt;
&lt;br /&gt;
== Help! My site&#039;s been compromised. Now what? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Change all relevant passwords:&#039;&#039;&#039; Assume your passwords have been harvested and immediately change all critical passwords, including shell access, FTP access, Joomla! Administrator accounts, and the database account.&lt;br /&gt;
# &#039;&#039;&#039;Check raw logs:&#039;&#039;&#039; Identify when and how the attackers gained access to your site by carefully reviewing your raw server logs. Make careful note of the date/time and names of attacked files. Note that these logs may have been deleted or altered, so a lack of evidence does not prove a lack of activity.&lt;br /&gt;
# &#039;&#039;&#039;List recently modified files:&#039;&#039;&#039; Before making any changes to your site, generate a list of recently modified files. Here&#039;s a php script that will list the files for you. Remove this script as soon as you have your list and don&#039;t publish a link to it!&lt;br /&gt;
# &#039;&#039;&#039;Note suspicious newly-created files:&#039;&#039;&#039; Use this list to identify new files that don&#039;t belong. Pay particular attention to their creation and modification dates, and correlate them to the dates of attacks shown in your log files.&lt;br /&gt;
# &#039;&#039;&#039;Note suspicious recently-modified files:&#039;&#039;&#039; Check the modified files list for any files that were recently changed. Pay particular attention to the modification, and correlate them to the dates of attacks shown in your log files.&lt;br /&gt;
# &#039;&#039;&#039;Check for bogus CRON Jobs:&#039;&#039;&#039; Hacked cron jobs can be setup to reinfect your site over and over again.&lt;br /&gt;
# &#039;&#039;&#039;Coordinate with your host:&#039;&#039;&#039; If you have identified how you were cracked, report the method to your host. If you are on a shared server, you may habe been attacked through another vulnerable site on your server. Report this to your host. A reputable host will appreciate your efforts in this area.&lt;br /&gt;
# &#039;&#039;&#039;Delete the entire public_html directory:&#039;&#039;&#039; This is the best way to guarantee that every potential vulnerability in that site is removed.&lt;br /&gt;
# &#039;&#039;&#039;Delete related database records:&#039;&#039;&#039; This step may only be possible if you have good backups. Simple script kiddies, who are only trying to mark your index page, may not attack your database, but professionals are usually very interested in confidential data, such as passwords. They may pose as script kiddies to avoid suspicion while repeatedly harvesting confidential information from your database.&lt;br /&gt;
# &#039;&#039;&#039;Reinstall everything:&#039;&#039;&#039; Use pre-crack backups. If you don&#039;t have good backups, go on to step 10.&lt;br /&gt;
# &#039;&#039;&#039;Reset critical passwords again:&#039;&#039;&#039; You must reset your passwards again now that your server is finally cleaned of any possible, hidden trojan horses.&lt;br /&gt;
# &#039;&#039;&#039;Rebuild site:&#039;&#039;&#039; If you are unable to rebuild from clean backups, rebuild your entire site using original, pre-crack installs. Use only the latest stable versions of all software, and check the List of Vulnerable Extensions&lt;br /&gt;
# &#039;&#039;&#039;Review security processes:&#039;&#039;&#039; Follow standard security precautions for important settings in php.ini, globals.php, configuration.php, .htaccess, etc.&lt;br /&gt;
# &#039;&#039;&#039;Review backup processes:&#039;&#039;&#039; If you don&#039;t already have one, add a dependable backup process to your site administration practices.&lt;br /&gt;
# &#039;&#039;&#039;Stay watchful:&#039;&#039;&#039; Attackers often return repeatedly. Closely monitor your raw logs for suspicious activity.&lt;br /&gt;
&lt;br /&gt;
==How do I reset an administrator password?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; This method is for Joomla versions up to and including 1.0.12{{JVer|1.0}}. For later versions of Joomla and Joomla 1.5.xx versions please use this &#039;&#039;&#039;([[How_do_you_recover_your_admin_password%3F|FAQ]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Because passwords are stored using a one-way MD5 hash which prevents recovering the password, you cannot recover an existing password, but you can reset it to a new password by editing the password field in the database. In the following directions, you will set the password MD5 value to a known value and then log-in using the password that matches that value. Once logged in, you can change the password again using normal Joomla! user access screens.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhanced Password Encryption Note Joomla! 1.0.13+ and Joomla! 1.5.x&#039;&#039;&#039;&lt;br /&gt;
This method works with the new salt-enhanced passwords. This is because Joomla! will automatically update passwords in the earlier format.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Use a MySQL utility such as phpMyAdmin or MySQL Query Browser .&lt;br /&gt;
&lt;br /&gt;
2. Open the correct database and select the table, jos_users . (Change default table prefix, &#039;jos_&#039; to your table prefix if it is different.)&lt;br /&gt;
&lt;br /&gt;
3. Select the record (or table row) for your administrator account. (The default Super Administrator is user number 62.)&lt;br /&gt;
&lt;br /&gt;
4. Copy and paste a known MD5 hash into the password field. You can use one of the below examples.&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; You must paste the password&#039;s hash value, not the password itself. You can use any of the following hashs, or create your own using one of the MD5 tools listed below.&lt;br /&gt;
&lt;br /&gt;
 password = &amp;quot;MD5 hash of password&amp;quot;&lt;br /&gt;
 ------------------------------------------------------&lt;br /&gt;
 admin = 21232f297a57a5a743894a0e4a801fc3&lt;br /&gt;
 secret = 5ebe2294ecd0e0f08eab7690d2a6ee69&lt;br /&gt;
 OU812 = 7441de5382cf4fecbaa9a8c538e76783&lt;br /&gt;
&lt;br /&gt;
5. Save the user record.&lt;br /&gt;
&lt;br /&gt;
6. Point a browser to your site and log in using the Super Administrator account you just modified.&lt;br /&gt;
&lt;br /&gt;
7. &#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; Once logged in, use the Joomla interface to change the password to one that only you know. This step is vital as it will &#039;salt&#039; your new password, thus adding an additional level of security on top of the MD5 hash.&lt;br /&gt;
&lt;br /&gt;
Note: This technique can be used to modify any other accounts password. You can also use it to change Usernames.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generating your own MD5 hash from a password of your choice&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can set the password to a value of your own choice. Use tools, such as the following, to create your own strong hashed password. Use the above directions once you&#039;ve generated a hash with these tools.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Online MD5 hash creation tools&#039;&#039;&#039;&lt;br /&gt;
* JavaScript MD5 - http://pajhome.org.uk/crypt/md5/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free MD5 utilities for download&#039;&#039;&#039;&lt;br /&gt;
* MD5 &amp;amp; Hashing Utilities - http://www.digital-detective.co.uk/freetools/md5.asp&lt;br /&gt;
* SlavaSoft HashCalc - http://www.slavasoft.com/hashcalc/overview.htm&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other MD5 tools&#039;&#039;&#039;&lt;br /&gt;
* There are many free online and downloadable MD5 utilities. Google &amp;quot;MD5 hash tool&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== How do I find exploits using the *NIX shell? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Check the active processes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use the &amp;quot;ps&amp;quot; command to look for odd or unknown processes, if you aren&#039;t sure what to look for there, user &amp;quot;netstat -ae | grep irc&amp;quot; and/or &amp;quot;netstat -ea | grep 666&amp;quot; and look for ports 6666, 6667, 6668, 6669, these are common ports used for running IRC bots, they may have the name &amp;quot;irc&amp;quot; listed against them, or may have &amp;quot;httpd&amp;quot; or sometimes other regular services names.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Check crontab&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Check your crontab and see if there is a strange entry, these are used in many exploits to restart IRC bots, even when admins or automated process monitors are used to kill a rogue process.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Check for hidden files or directories&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Check for hidden files or directories you dont expect to see, those starting with &amp;quot;.&amp;quot; (dots) and also look for &amp;quot;. &amp;quot; (dot, space) often favored to try and catch searches for hidden directories.&lt;br /&gt;
&lt;br /&gt;
Other examples of searches that may help pin down exploits and/or unexpected files and folders:&lt;br /&gt;
&lt;br /&gt;
 find /home -type f | xargs grep -l MultiViews&lt;br /&gt;
 find . -type f | xargs grep -l base64_encode &amp;lt;&amp;lt;&amp;lt; this can produce false positives, it is valid in many mail/graphics scripts&lt;br /&gt;
 find . -type f | xargs grep -l error_reporting&lt;br /&gt;
 find / -name &amp;quot;[Bb]itch[xX]&amp;quot;&lt;br /&gt;
 find / -name &amp;quot;psy*&amp;quot;&lt;br /&gt;
 ls -lR | grep rwxrwxrwx &amp;gt; listing.txt&lt;br /&gt;
&lt;br /&gt;
== What are these strange (URL-Encoded) characters doing in my code? ==&lt;br /&gt;
&lt;br /&gt;
Overview&lt;br /&gt;
&lt;br /&gt;
Attackers sometimes hide code away from prying eyes by URL Encoding it.&lt;br /&gt;
&lt;br /&gt;
The purpose of URL Encoding is to allow non-URL compatible characters to be passed via the URL. There are many legitimate reasons for doing this, such as hiding email from spammers, dealing with spaces in file names. etc.&lt;br /&gt;
&lt;br /&gt;
However, if you find odd, URL-encoded text in your site&#039;s files, you should investigate immediately. URL encoded text is very easy to translate using PHP, javascript, or one of the many free, online translators.&lt;br /&gt;
&lt;br /&gt;
Here are some trivial, non-functioning examples of URL Encoded text:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Original&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;URL Encoded&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;this line has spaces&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;this%20line%20has%20spaces&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eval(evil_script(http://www.evilsite/?evilscript.pl&amp;quot;));&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;%65val%28%65%76il_%73cri%70t&lt;br /&gt;
%28%68tt%70%3A//%77%77%77.&lt;br /&gt;
%65%76il%73ite/%3F%65%76il%73&lt;br /&gt;
cript.%70l%22%29%29%3B&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# [http://www.linkedresources.com/tools/unescaper_v0.2b1.html Text Unescape Utility]&lt;br /&gt;
# [http://www.w3schools.com/tags/ref_urlencode.asp HTML URL-encoding Reference]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Security]]&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Security_FAQ]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76264</id>
		<title>Security Checklist/Where can you learn more about file permissions?</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76264"/>
		<updated>2012-10-08T23:04:05Z</updated>

		<summary type="html">&lt;p&gt;Phild: Added link to existing unix permission doc replacing external link.(same content)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{underconstruction}}&lt;br /&gt;
&lt;br /&gt;
* [[How do UNIX file permissions work?|Unix Permissions Primer]]&lt;br /&gt;
* Using phpSuExec&lt;br /&gt;
* Windows Permissions Primer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Installation FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_and_Performance_FAQs&amp;diff=76263</id>
		<title>Security and Performance FAQs</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_and_Performance_FAQs&amp;diff=76263"/>
		<updated>2012-10-08T23:01:22Z</updated>

		<summary type="html">&lt;p&gt;Phild: /* Where can I learn more about file permissions? */ removed external links in policy violation pending replacement&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Is GNU and Open Source software worth the costs and risks?==&lt;br /&gt;
&lt;br /&gt;
It&#039;s difficult, if not impossible, to argue against the value proposition of GNU and Open Source software, although [http://www.catb.org/~esr/halloween/ some have tried]. Due to zero licensing fees, lower administrative overhead, high-quality code, security releases that are distributed in minutes or hours rather than months or marketing cycles, and free online support from thousands of like-minded developers and users, GNU and Open Source offerings are often the best solution. The math is really quite compelling: &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;Applications&#039;&#039;&#039; !! &#039;&#039;&#039;Industry Leader&#039;&#039;&#039; !! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;Cost&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GNU/Linux&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Apache Web Server&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| MySQL Relational Database&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| PHP Scripting Language&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Content Management System&lt;br /&gt;
| Yes&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Thousands of Joomla Extensions&lt;br /&gt;
| Varies&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Support&#039;&#039;&#039; !! &#039;&#039;&#039;Relative Quality&#039;&#039;&#039; !! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;Cost&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Project Leadership Team&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Forge&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Online Forums&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Joomla! Documentation&lt;br /&gt;
| Medium&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Thousands of Online Volunteers&lt;br /&gt;
| High&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| Paid Professional Support&lt;br /&gt;
| Widely Available&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;Total&#039;&#039;&#039; !! &amp;amp;nbsp; !! align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==What is the Joomla! Administrator&#039;s Security Checklist?==&lt;br /&gt;
&lt;br /&gt;
The [[Security Checklist 1 - Getting Started|Security Checklist]] is a concise selection of the best tips and tricks from the many contributors in the Joomla Security Forums. Review this list BEFORE you install Joomla for the first time.&lt;br /&gt;
&lt;br /&gt;
==What are the top 10 stupidest Joomla! security tricks?==&lt;br /&gt;
A very good question, and sadly one that many did not ask in time. We proudly present the [[Top 10 Stupidest Administrator Tricks]].&lt;br /&gt;
&lt;br /&gt;
==How do I choose a quality hosting provider?==&lt;br /&gt;
&lt;br /&gt;
The following is a short list of security-related requirements. Depending on your specific needs, you may have many other security requirements such as shell access, cron access, SSL server, etc.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Choose *NIX:&#039;&#039;&#039; Joomla! requires at least PHP and MySQL to run. Because Apache/PHP/MySQL run best on UNIX or GNU/LINUX servers, choose a host that offers these options. &lt;br /&gt;
* &#039;&#039;&#039;Use Secure FTP:&#039;&#039;&#039; Choose a host that requires SFTP (Secure FTP) for transferring files. This prevents others from snooping your user name and password from packets as they travel over the Internet.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Set PHP register_globals OFF:&#039;&#039;&#039; The most security conscious hosts turn PHP&#039;s Register Globals directive OFF by default. The next best allow you to turn it off in local .htaccess or php.ini files. A host that requires you to run a site with Register Globals ON should be avoided. This is true for any PHP enabled site, whether or not you are running Joomla!. There is a legitimate argument to be made by hosts for keeping Register Globals ON for PHP4 sites. This is that it would break too much legacy code. This argument should not be accepted for a PHP5 installation. Beginning with PHP5, the official PHP recommendation was to keep Register Globals is OFF. Note that beginning with PHP6, there will not even be a Register Globals setting, so don&#039;t get caught in a Register Globals backwater. Modify your code to work without Register Globals, and choose a host that encourages such practices.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Stay up-to-date:&#039;&#039;&#039; Choose a host that stays up-to-date with the latest stable versions of core applications, including the operating system, database, and [http://www.php.net/ PHP].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Avoid cheap shared servers:&#039;&#039;&#039; Be sure users on your shared server can&#039;t view each others files and databases, for example through shell accounts and cpanels.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proactive server management:&#039;&#039;&#039; Choose a host that provides real information about security compromises, rather than simply shutting your site down. Check their user forums for evidence of how they&#039;ve responded to cracks in the past. A good host may for example, inform you immediately that a security breach has occurred and will quarantine the problem file for you, while leaving it there for further investigation. A poor host will shut your site down and provide very limited information on why. Watch out! All too many do this.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Require raw log access:&#039;&#039;&#039; Be sure you have access to raw server logs. Reading these logs is a vital part of site security and recovery.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Performance matters:&#039;&#039;&#039; Choose a host that limits the number of users per machine and the average CPU load per machine to some reasonable number (depending on hardware). Be sure they proactively move user sites as needed to balance load. Check the number of domains on a server using reverse IP lookup.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Data center:&#039;&#039;&#039; Choose a host that manages it&#039;s own data center. Check the data center infrastructure, such as redundant Internet access, hot swappable backups, full daily backups, environment and access controls, emergency generators, etc.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Know your neighbors:&#039;&#039;&#039; Check that your host is not at risk of having its IP addresses blocked because it hosts SPAM sites.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Visit the Joomla Resources Directory (JRD) [http://resources.joomla.org/directory/support-services/hosting.html hosting section]:&#039;&#039;&#039;  If you are looking for a Joomla Host, please ensure you make your own investigations as to the services offered and whether they suit your needs or not.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Grow with your site:&#039;&#039;&#039; As sites grow in complexity, resource requirements, and security requirements, they may need to be moved off of a shared server environment. At that point, good options include, 1) &#039;&#039;&#039;dedicated servers&#039;&#039;&#039; offer the best possible security and performance, but at the highest expense, 2) &#039;&#039;&#039;virtual servers&#039;&#039;&#039; offer almost all the advantages of a dedicated server, but the hardware and configuration cost is shared among multiple virtual servers.&lt;br /&gt;
&lt;br /&gt;
==What are the best practices for site backups?==&lt;br /&gt;
&lt;br /&gt;
: There are three traditional backup types--full, cumulative and differential.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full Backups&#039;&#039;&#039; &lt;br /&gt;
: A complete backup of all associated files and database at a known point in time.&lt;br /&gt;
&lt;br /&gt;
: Both of these are considered Incremental backups, they can be used independently of each other or in conjunction with each other but always relate back to a FULL backup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cumulative Backups&#039;&#039;&#039; &lt;br /&gt;
: This is a backup of the differences since the last FULL backup, so each cumulative backup gets bigger each cycle as it is also backing up data previously backup, since the last FULL backup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Incremental Backups&#039;&#039;&#039; &lt;br /&gt;
: This is a backup of the changes since the previous backup of any type, i.e., full, cumulative, or incremental.&lt;br /&gt;
&lt;br /&gt;
: If you site is not too large, then FULL backups are the way to go, once a week at least. If your content changes quite regularly or more importantly cannot be recreated or is too costly to recreate, once a night or more may be more effective.&lt;br /&gt;
&lt;br /&gt;
: If time, server resources, or the rate of data change is too high to successfully obtain a FULL backup every night then the incremental backups are needed.&lt;br /&gt;
&lt;br /&gt;
: If you choose to use a cumulative backup following a weekly full, the backups each night will run quicker than a full backup, however as the week progresses, each nightly cumulative backup will increase in size and time, due to not only backing up the changes since last night&#039;s backup, but it also backing up all changes each night and previous nights since the last full backup was made. The benefit of this type of backup, in conjunction with full backups is the speed of restoration. To restore, you now only need to recover the most recent full and cumulative backups to fully recover all information.&lt;br /&gt;
&lt;br /&gt;
: If time or server resources are paramount or data change overwhelms cumulative backups, turn to differential backups, this style of backup when used in conjunction with a full backup will provide a very similar level of protection, but restoration will be slower. Differential backups will only backup changed data since the last backup of any type, not since the last full backup, as with a cumulative backup. Thus, when restoring data, you will need to recover the full backup, then each differential backup in turn (oldest first) in order to fully recover all information. This method also has the drawback of recovering any legitimately deleted files, potentially &amp;quot;over-filling&amp;quot; the file-system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data Protection Best Practice says&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# You should be able to completely recover from a catastrophic failure from at least two previous full backups. Just in case the most recent full backup is damaged, lost, or corrupt.&lt;br /&gt;
# A good backup regime should contain at least one full backup within a chosen cycle, normally weekly.&lt;br /&gt;
# A good backup practice is to store backups away from the current data location, preferably off site.&lt;br /&gt;
# Dynamic data should be backed up &#039;&#039;offline&#039;&#039; or &#039;&#039;hot&#039;&#039; to avoid &#039;&#039;fuzzy&#039;&#039; backups (data is changing as you back it up, potentially leading to related information not being in sync when backed up.&lt;br /&gt;
&lt;br /&gt;
: For the average Web site, a daily or weekly full backup of both site files and database records is normally more than enough. Keeping a number of backups for a period of time is always a good plan, maybe keep each weekly backup for one month. This allows you to recover an old site in the case of emergencies or if for some reason you have local backup file corruption.&lt;br /&gt;
&lt;br /&gt;
: There are many PHP and Perl scripts on the Web that can be automated through CRONTAB and can either email (if small enough) or FTP the backup files to an off- or cross- server location. Remember that to some degree with Joomla! you already have an instant backup of the core files, if you haven&#039;t modified core, the Joomla! distribution files can be easily restored. Then you need only worry about backing up changed files and the database.&lt;br /&gt;
&lt;br /&gt;
==Where can I learn about vulnerable extensions?==&lt;br /&gt;
* See the [http://docs.joomla.org/Vulnerable_Extensions_List Vulnerable Extensions List]&lt;br /&gt;
&lt;br /&gt;
==Where can I learn more about file permissions?==&lt;br /&gt;
{{underconstruction}}&lt;br /&gt;
&lt;br /&gt;
*  Unix Permissions Primer&lt;br /&gt;
*  Windows Permissions Primer]&lt;br /&gt;
*  Using phpSuExec]&lt;br /&gt;
&lt;br /&gt;
==How do I setup a powerful password scheme?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Most users may not need more than 3 levels of passwords and webmasters no more than 5. Each level must be completely unrelated to the others in terms of which ids and passwords are used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 5 (Public)&#039;&#039;&#039; - is the password you use on public sites. It is not imperative that you use a different password on every site. In fact it&#039;s more effective to use a different username on every site than it is to use a different password truth be told! Knowing the username allows easy hacking...half the work is done! knowing the password is useless unless you know what account it goes to!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 4 (Webmaster)&#039;&#039;&#039; - Reserved for SQL Only. this is a password that would only be used by SQL and limited to a specific database in SQL. The best way to protect SQL is by limiting each account to just being able to do the minimum that DB requires. In some cases it is even wise to have a read only account for display and a separate write account that the backend write functions use. But that doesn&#039;t apply to J! at all... for J! the best practice is to set up an individual account (not root for sure) that only has read and write access to the J! DB nothing else.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 3 (Webmaster)&#039;&#039;&#039; - FTP and Server Access. these can be the same user:pass combo since both if compromised can do the most damage. doesn&#039;t matter if the backend or Cpanel is safe if the FTP is not and the same goes the other way!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 2 (Personal Data Access)&#039;&#039;&#039; - This password should be used for any sites or locations that contain personal data with the exception of Banking (see level 1). these sites are often used for social engineering data such as medical records, service accounts and any financial records not directly related to banking! You want these to be secure but also different from the real threat of security...your money!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Level 1 (Banking!)&#039;&#039;&#039; - this needs to be the most secure in fact if you have two different banks it actually pays to have a different user:pass for each just to be sure!&lt;br /&gt;
&lt;br /&gt;
= Joomla! Core =&lt;br /&gt;
&lt;br /&gt;
==How can I check my Joomla! installation&#039;s overall security and health?==&lt;br /&gt;
&lt;br /&gt;
: 1. Use the free Joomla extension, Joomla! Tools Suite (JTS), which is a Joomla! environment audit, maintenance and diagnostic application written in PHP. The JTS suite of tools can diagnose, report and advise on common installation, health and security issues, including performing several common performance and recovery actions.&lt;br /&gt;
&lt;br /&gt;
: Project Home: http:// joomlacode. org/gf/project/jts/ (gone away)&lt;br /&gt;
&lt;br /&gt;
==How can I add the Joomla! Security Announcements Feed to the Admin Control Panel?==&lt;br /&gt;
&lt;br /&gt;
# Login to your Joomla! sites Administration site&lt;br /&gt;
# From the menu, select Extensions -&amp;gt; Module Manager&lt;br /&gt;
# From within the Module Manager, select Administrator&lt;br /&gt;
# From the Icon Menu (top right), select New&lt;br /&gt;
# From the choices available, select Feeds Display&lt;br /&gt;
# At the Feed Module configuration page, enter the appropriate details (Title (EG: Security Announcements) and Feed as a minimum)&lt;br /&gt;
# Enter http://feeds.joomla.org/JoomlaSecurityNews in the Feed URL&lt;br /&gt;
# Select cpanel as the position&lt;br /&gt;
# Optional Select Apply from the Icon Menu (top right) and place the feed in the order where you want to see it in the Admin Control Panel&lt;br /&gt;
# Select Save from the Icon Menu (top right)&lt;br /&gt;
# Go back to your Admin Site main page (Site -&amp;gt; Control Panel) and you should see your newly built Security Feed.&lt;br /&gt;
&lt;br /&gt;
: You can also use this technique to deliver your own &amp;quot;Customer Updates&amp;quot; to sites that you build for others. It&#039;s a great way to communicate with your customers after handing over the site to them. Every time they log in to the Back End, they&#039;ll see your latest news.&lt;br /&gt;
&lt;br /&gt;
==Why should I immediately change the name of the default admin user after a new install?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: All new Joomla installations start with a Super Administrator account called, &#039;admin&#039;. During the installation process, you will be asked to give this account a password. That&#039;s great as far as it goes, but because the user name of this highly-confidential account is generally well known, 50% of the security of the username/password combination is already exposed. Now all anyone needs to do is guess the password and they&#039;re in.&lt;br /&gt;
&lt;br /&gt;
: By changing the user name to something more difficult to guess, you greatly increase the difficulty of accessing the account. An attacker must correctly guess both the user name and password at the same time to gain access. This is several magnitudes more difficult than simply guessing the right password.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Log into the Back End&lt;br /&gt;
# Select User Manager&lt;br /&gt;
# Select the &#039;admin&#039; user record&lt;br /&gt;
# Change the value in username. (Good user names contain a mix of letters and numbers.)&lt;br /&gt;
# Save&lt;br /&gt;
# Remember the new username!&lt;br /&gt;
&lt;br /&gt;
== Why does the Back-End session stay alive even though I set it to expire? ==&lt;br /&gt;
&lt;br /&gt;
: When you edit an item from the Back-End, there is a keep-alive script running that keeps the session active. This is a great convenience in most cases, as it prevents you from losing all your edits if you wait too long to submit the content. However, there are a few potential security issues to be aware of:&lt;br /&gt;
&lt;br /&gt;
# If you walk away from your computer while you are editing content, someone else can use your computer to attack the site.&lt;br /&gt;
# Due to the risk of Cross-Site Request Forgery attacks ([http://en.wikipedia.org/wiki/Cross-site_request_forgery CSRF]) it&#039;s never a good idea to browse the Internet in another window or tab while an open Joomla! Administrator session is active. Joomla! has been hardened against such attacks, but it&#039;s remotely possible that an as yet unknown vulnerability exists in the Joomla! core, a third-party extension, or the browser itself.&lt;br /&gt;
&lt;br /&gt;
==How do I turn off RG_EMULATION? {{JVer|1.0}}==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: PHP&#039;s &#039;&#039;register_globals&#039;&#039; option was a terrible idea from a security point of view. It encouraged lazy programming and exposed many scripts to needless risk. This is because RG allows variables passed by the user to be automatically passed to the script. This breaks a cardinal rule: Never trust user input. &lt;br /&gt;
&lt;br /&gt;
: Register Globals has been officially deprecated in PHP5, and beginning with PHP6 will no longer even exist. Good riddance! &lt;br /&gt;
&lt;br /&gt;
: Joomla 1.0.x uses RG_Emulation functions which are somewhat safer than standard PHP &#039;&#039;register_globals&#039;&#039;, but it&#039;s still best not to allow any form of automatic variable assignments. Note that poorly-written extensions may fail with &#039;&#039;register_globals&#039;&#039; turned off. Such failure is a sign that the extension does not check user input correctly. Best advise: Don&#039;t use such extensions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Joomla! 1.0.13&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Beginning with the 1.0.13 release, Register Globals Emulation has been moved to the main configuration file and can be adjusting in the Back-end Administrator interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Joomla! 1.0.12 and earlier&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Edit the file, &#039;&#039;globals.php&#039;&#039;, found in the root directory of your Joomla! site. At about line 23 change:&lt;br /&gt;
&lt;br /&gt;
 define(&#039;RG_EMULATION&#039;,1)&lt;br /&gt;
&lt;br /&gt;
: to&lt;br /&gt;
&lt;br /&gt;
 define(&#039;RG_EMULATION&#039;,0)&lt;br /&gt;
&lt;br /&gt;
==What do Error 1, Error 2, and Error 3 mean?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Error 1 = FATAL ERROR: MySQL not supported...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You need to compile MySQL support into PHP or the MySQL server is down.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Error 2 = FATAL ERROR: Connection to database ...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Joomla! cannot talk to the database, most likly you have a typo in the username or password settings in &#039;&#039;configuration.php&#039;&#039;, or you are trying to access a database table with the wrong table prefix.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Error 3 = FATAL ERROR: Database not found...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The database cannot be found. Check the database settings in &#039;&#039;configuration.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The MySQL variables in &#039;&#039;configuration.php&#039;&#039; (found in Joomla!&#039;s root directory) can be modified to correct these problems.&lt;br /&gt;
&lt;br /&gt;
For Joomla! 1.0.xx&lt;br /&gt;
 $mosConfig_host = &#039;localhost&#039;;&lt;br /&gt;
 $mosConfig_user = &#039;accountname__username&#039;;&lt;br /&gt;
 $mosConfig_password = &#039;userpassword&#039;;&lt;br /&gt;
 $mosConfig_db = &#039;accountname_dbName&#039;;&lt;br /&gt;
 $mosConfig_dbprefix = &#039;jos_&#039;;&lt;br /&gt;
&lt;br /&gt;
Modifying the &#039;&#039;$mosConfig_host&#039;&#039; to an IP Address of a remote host works for hosts that have separate MySQL servers from the client hosting servers.&lt;br /&gt;
&lt;br /&gt;
==How do UNIX file permissions work?==&lt;br /&gt;
&lt;br /&gt;
Unix/Linux file permissions can be confusing. The basic UNIX permissions come in three flavors;&lt;br /&gt;
&lt;br /&gt;
 Owner Permissions : Control your own access to files.&lt;br /&gt;
 Group Permissions : Control access for you and anyone in your group.&lt;br /&gt;
 Other Permissions : Control access for all others.&lt;br /&gt;
&lt;br /&gt;
In Unix, when permissions are configured the server allows you to define different permissions for each of these three categories of users. In a Web server environment permissions are used to control which Web site owners can access which directories and files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What do Unix permissions look like?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When viewing your files through an FTP client or from the servers command line;&lt;br /&gt;
&lt;br /&gt;
 filename.php username usergroup rwx r-x r-x&lt;br /&gt;
&lt;br /&gt;
The first entry is the name of the file, the next entry is your username on the server, the second entry is the group that you are a member of and the last entry is the permissions assigned to that this file (or directory). If you notice, I have intentionally spaced out the permissions section, I have grouped the 9 characters into 3 sets of 3. This separation is key to how the permissions system works. The first set of 3 permissions (rwx) relate to the username seen above, the second set of 3 permissions (r-x) relate to the usergroup seen above and the final set of 3 permissions (r-x) relate to anyone else who is not associated with the username or groupname.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Owner (User) relates to username&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Owner (User) is normally you, these permissions will be enforced on your hosting account name.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Group relates to usergroup&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Group permissions will be enforced on other people that are in the same group as you, within a hosting environment, there is very rarely other people in the same group as you. This protects your files and directories from being made available to anybody else who may also have a hosting account on the same server as you.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other relates to everyone else&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Other permissions, these will be enforced on anybody else on the server that is either not you or not in your group. So in a Web Serving environment, remembering that no-one else is normally in your group, then this is everybody else accessing the server except for you. Each of the three sets of permissions are defined in the following manner;&lt;br /&gt;
&lt;br /&gt;
 r = Read permissions&lt;br /&gt;
 w = Write permissions&lt;br /&gt;
 x = Execute permissions&lt;br /&gt;
&lt;br /&gt;
 Owner Group Other&lt;br /&gt;
 r w x r w x r w x&lt;br /&gt;
&lt;br /&gt;
As many of you already know, permissions are normally expressed as a numeric value, something like 755 or 644. so, how does this relate to what we have discussed above? Each character of the permissions are assigned a numeric value, this is assigned in each set of three, so we only need to use three values and reuse them for each set.&lt;br /&gt;
&lt;br /&gt;
 Owner Group Other&lt;br /&gt;
 r w x r w x r w x&lt;br /&gt;
 4 2 1 4 2 1 4 2 1&lt;br /&gt;
&lt;br /&gt;
Now that we have a value that represents each permission, we can express them in numeric terms. The values are simply added together in the respective sets of 3, which will in turn give us just three numbers that will tell us what permissions are being set. If we are told that a file has the permissions of 777, this would mean that the following was true.&lt;br /&gt;
&lt;br /&gt;
 Owner Group Other&lt;br /&gt;
 r w x r w x r w x&lt;br /&gt;
 4 2 1 4 2 1 4 2 1&lt;br /&gt;
&lt;br /&gt;
Thus...&lt;br /&gt;
&lt;br /&gt;
   4+2+1 4+2+1 4+2+1&lt;br /&gt;
 =   7     7     7&lt;br /&gt;
&lt;br /&gt;
The Owner of the file would have full Read, Write and Execute permissions, the group would also have full Read, Write and Execute permissions, and the rest of the world can also Read, Write and Execute the file. The standard, default permissions that get assigned to files and directories by the server are normally;&lt;br /&gt;
&lt;br /&gt;
 Files = 644&lt;br /&gt;
 Directories = 755&lt;br /&gt;
&lt;br /&gt;
These permissions would allow, for files;&lt;br /&gt;
&lt;br /&gt;
 644 = rw- r-- r--&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read only&lt;br /&gt;
 Other has Read only&lt;br /&gt;
&lt;br /&gt;
and for directories;&lt;br /&gt;
&lt;br /&gt;
 755 = rwx r-x r-x&lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute only&lt;br /&gt;
 Other has Read and Execute only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, things can get a little complicated when we start talking about shared Web Servers, the Web Server software will be running with its own username and groupname, most servers are configured for them to use either &amp;quot;apache&amp;quot; and &amp;quot;apache&amp;quot; or &amp;quot;nobody&amp;quot; and &amp;quot;nobody&amp;quot; as username and groupname. Here is the problem. Your Web Server runs as its own user, and this user is not you or in your group, so the first two sets of permissions do not apply to it. Only the world (other) permissions apply. Therefore, if you configure a permissions set similar to 640 on your website files, your Web Server will not be able to run your website files.&lt;br /&gt;
&lt;br /&gt;
 640 = rw- r-- ---&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read only&lt;br /&gt;
 Other has no rights&lt;br /&gt;
&lt;br /&gt;
The Web server is assigned no permissions at all and cannot Execute, Write or more importantly, even Read the file to delivery its content to a website visitors browser. If a directory was to be assigned 750 permissions, this would have the same effect, because the WebServer does not even have permissions to read files in the directory, even if the files inside that directory had favorable permissions.&lt;br /&gt;
&lt;br /&gt;
 750 = rw- r-x ---&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read and Execute&lt;br /&gt;
 Other has no rights&lt;br /&gt;
&lt;br /&gt;
Directories have an extra quirk, if a directory does not have the Execute permission set in the World set then even if Read and Write are set, if the program is not run as the user or group, it will still not be able to access the files within the directory. The Execute setting allows the program to &amp;quot;Execute&amp;quot; commands in the directory, so without it being on the program(in our case a Web Server) cannot execute the &amp;quot;Read&amp;quot; command, thus cannot deliver your file to the users web browser.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How Does this Relate to Joomla?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Good question, well in the first instance this would be important during the Web-Installer process.&lt;br /&gt;
If you can remember back to when you ran the Joomla! Web-Installer, we were looking for specific directories to be designated as writable. We see quite a numbers of posts either stating that there were problems during the install with permissions or asking what permissions are recommended. Some even consider the message, asking for &amp;quot;Writable&amp;quot; permissions to be too vague.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, as the Web-Installer does not know how your server is configured, then it cannot be more specific, however, once you understand the permissions settings and you know a little about Web Serving environments, you will actually find that the term &#039;&#039;writable&#039;&#039; is actually very specific and a more than adequate description of what Joomla! needs. Thinking back to the above information, you may remember that there are three places where &#039;&#039;write&#039;&#039; permissions maybe set;&lt;br /&gt;
&lt;br /&gt;
 Owner Writable&lt;br /&gt;
 Group Writable&lt;br /&gt;
 Other Writable&lt;br /&gt;
&lt;br /&gt;
Also remembering that the Web Server generally doesn&#039;t run as your own user or in the same group. When you run the Web Installer from a browser, it is the Web Server trying to access the files, thus it is the &amp;quot;Other&amp;quot; permissions that will apply to it. If the &amp;quot;Other&amp;quot; permissions do not allow the Web Server to Read, Write or Execute commands in the Joomla! directories, you will receive the message saying that the directories are not &#039;&#039;writable&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In this case, you will need to configure the Other permissions to be &amp;quot;7&amp;quot; on the directories listed in the Web Installer.&lt;br /&gt;
So your total permissions might be something like 757, in the worse case you might need to set 777. These very open permissions&lt;br /&gt;
maybe reset back to 755 after the installer runs to assist in the security of your directories and files.&lt;br /&gt;
&lt;br /&gt;
 757 = rwx r-x rwx&lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute&lt;br /&gt;
 Other has Read, Write and Execute&lt;br /&gt;
&lt;br /&gt;
Just to make things even more confusing, many hosting firms make use of software called phpsuExec or suExec, these tools change the way the Web Server runs, where the Web Server would not normally run as your username, in this case, it does. The use of the &#039;&#039;other&#039;&#039; permissions, may not be required, now you may only need to configure directories to be &#039;&#039;writable&#039;&#039; to your own username and groupname, this allows directory permissions to be set as 755 or 775 instead of 757 or 777.&lt;br /&gt;
&lt;br /&gt;
 755 = rwx r-x r-x&lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute&lt;br /&gt;
 Other has Read and Execute&lt;br /&gt;
&lt;br /&gt;
 775 = rwx rwx r-x &lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read, Write and Execute&lt;br /&gt;
 Other has Read and Execute&lt;br /&gt;
&lt;br /&gt;
The Web Server will still need to Execute set for the username and Read, Execute groupname permissions set so that it can Execute the Read command on files inside the directory. Again, these permissions may be demoted back to 755 after the Web Installer completes. Thats the basics for directories covered, what about files? This is where things get a little simpler. Most of the files that Joomla! makes use of will be quite happy with the 644 default permissions.&lt;br /&gt;
&lt;br /&gt;
 644 = rw- r-- r-- &lt;br /&gt;
 Owner has Read, Write&lt;br /&gt;
 Group has Read&lt;br /&gt;
 Other has Read&lt;br /&gt;
&lt;br /&gt;
This is valid if you do not have a need to Write to the files from the Web Server, the same rules apply as for directories if you do have this need. One file that you may like to have &amp;quot;Writable&amp;quot; to the Web Server is your configuration.php file. This is the Joomla! configuration file, if you plan on changing configuration through the Web Admin interface, then this file will need to be Writable to the Web Server.&lt;br /&gt;
&lt;br /&gt;
If your server needed directory permissions to be set to &amp;quot;Other&amp;quot; Writable for the install then this file will probably also need to be 757 or 777. Leaving this file as 757 or 777 is dangerous though, as you are letting everyone have &amp;quot;Write&amp;quot; access, many Web Site exploits take advantage of this fact, so in general it is not recommended to leave this file with these permissions.&lt;br /&gt;
&lt;br /&gt;
If your Web Server has one of the SU tools installed and you only needed to configure 755 on directories for the installation, then you will probably also only need to set 755 or 775 on this file to allow editing through the Admin interface, and these permissions are generally accepted as more secure than 757 or 777.&lt;br /&gt;
&lt;br /&gt;
In conclusion, what permissions should be set for the Joomla! installation? Well, as you can see, it depends!&lt;br /&gt;
&lt;br /&gt;
I know this isn&#039;t as helpful as you would have liked and it certainly is not a definitive answer, but in general, after the installation, any insecure &amp;quot;7&amp;quot; settings can be reset back to something more secure. For example: &lt;br /&gt;
 Files = 644&lt;br /&gt;
 Directories = 755&lt;br /&gt;
&lt;br /&gt;
These permissions would allow, for files;&lt;br /&gt;
&lt;br /&gt;
 644 = rw- r-- r--&lt;br /&gt;
 Owner has Read and Write&lt;br /&gt;
 Group has Read only&lt;br /&gt;
 Other has Read only&lt;br /&gt;
&lt;br /&gt;
and for directories,&lt;br /&gt;
&lt;br /&gt;
 755 = rwx r-x r-x &lt;br /&gt;
 Owner has Read, Write and Execute&lt;br /&gt;
 Group has Read and Execute only&lt;br /&gt;
 Other has Read and Execute only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have SSH shell access the following commands can be run from the command line to reset all files and directories back to the server defaults of 755 and 644. Change directories to the top directory (&amp;quot; / &amp;quot;) of your Joomla! installation, then run: &lt;br /&gt;
&lt;br /&gt;
 find . -type f -exec chmod 644 {} \;&lt;br /&gt;
 find . -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
If you only have FTP access, this can be a very time consuming job, however, unless you changed more directories during the installation that was requested, you should only need to reset about 10 directories and the &#039;&#039;configuration.php&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that to install any extensions or templates after the actual Joomla! installation you may need to elevate the default permissions again on the appropriate directories just for the installation period, you may then demote them again after the add-on is installed.&lt;br /&gt;
&lt;br /&gt;
If you decide to use &#039;&#039;caching&#039;&#039; the cache directory will need to be &#039;&#039;writable&#039;&#039; by the Web server user to allow it to write its temporary files.&lt;br /&gt;
&lt;br /&gt;
==What are the recommended file and directory permissions?==&lt;br /&gt;
&lt;br /&gt;
Depending on the security configuration of your Web server the recommended default permissions of 755 for directories and 644 for files should be reasonably secure.&lt;br /&gt;
&lt;br /&gt;
==How can I avoid using chmod 0777 to enable installs?==&lt;br /&gt;
&lt;br /&gt;
On a private server with a small, controlled set of users, there is no need to use a chmod 777 to make the Joomla! folders writable in order to perform installs. You can set the server up so that both Apache and FTP have control of site files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Edit the Apache user.conf file and tell apache to run under the FTP account.&lt;br /&gt;
# chmod the entire site to 644 or 744. Apache should be able to run just fine that way.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# chgrp the entire web space to the FTP group so that only those with FTP access can write to the server.&lt;br /&gt;
# chmod the entire web space to 764 or 664 will be possible giving other users write access as well&lt;br /&gt;
&lt;br /&gt;
==Isn&#039;t locating all Joomla! files inside public_html a security risk?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Short answer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Potentially, yes. Your site can be secure, but you must be careful and vigilant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Long answer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A common security principle is to create various security levels and then grant access at each level only as required. On UNIX servers this is done by setting the user, group, and world permissions on directories and files.&lt;br /&gt;
&lt;br /&gt;
Typically, the most insecure directory on a UNIX server is the one serving Web files, usually called public_html. This is because it is publicly accessible, world-readable, and in the case of a CMS-powered site, possibly even world-writable. That status is the very definition of officially, totally, and utterly insecure.&lt;br /&gt;
&lt;br /&gt;
As long as you want the entire world to view your public_html directory there is no problem. After all, that&#039;s exactly what it&#039;s designed to do. But if you want to hide anything, the plot thickens. If public_html contains configuration files with secret data, or scripts that write to databases, or scripts that modify other files, or scripts that append to logs, or scripts that store temporary data in caches, or scripts that support file and graphic uploads, or scripts that process form input, or scripts that process financial and personal data, this read-only directory becomes a world-accessible, read-write application.&lt;br /&gt;
&lt;br /&gt;
If there are ANY vulnerabilities in ANY files in the public_html directory, the entire server is potentially vulnerable, and not just your Web site but possibly every Web site on your server. Such vulnerabilities give attackers access to the scripting engines used to run your site. PHP, Perl and other Web scripting languages are powerful and easy to use. If programming vulnerabilities allow an attacker to call arbitrary commands, your entire server could be toast.&lt;br /&gt;
&lt;br /&gt;
One good way to block attackers, is to keep potential vulnerabilities behind a secure fence. For this reason, it is often recommended to only place files that require direct access from the Web in public_html. Other files should be loaded into applications using such functions as include and require. To access such files, attackers must first penetrate your server, such as by discovering a root username/password.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The incredible lightness of living outside the fence&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To provide incredibly easy installation, Joomla! follows a different security model. It is possible to perform a complete Joomla! installation using nothing more than a Web browser pointed at the world-readable installation directory. An additional level of security is provided by requiring that you remove this installation directory after completing the install.&lt;br /&gt;
&lt;br /&gt;
Granting a world-accessible installer the ability to write to files outside of public_html would be a huge security hole. Thus, by default every Joomla! file ends up in the world-accessible public_html directory. Not coincidentally, this is also the directory in which an angry planetful of would-be attackers are hoping to find your files.&lt;br /&gt;
&lt;br /&gt;
Currently, most Joomla extensions also have limited support for file locations outside of public_html. This is a legacy of the Joomla! 1.0.x installation model.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Joomla! defense&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Despite it&#039;s apparently vulnerable location, Joomla! uses various effective methods for blocking exploits. Chief among them is to add a line of code at the top of any PHP file that requires extra protection. This method is very effective as long as each and every file requiring such protection, has it. One vulnerable file exposes the whole site.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The challenge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The practice of placing everything in public_html, and then building a little fence inside each file can become an administrative nightmare. One vulnerable file exposes the entire server. This is a glaring example of an allow, then deny security model.&lt;br /&gt;
&lt;br /&gt;
This model requires very careful upgrades, constant log reviews, and proactive plugging of new vulnerabilities as soon as they become known. (Since you have to beat the attackers, you&#039;ll be in a hurry, and may inadvertently do something stupid, potentially creating other vulnerabilities.)&lt;br /&gt;
&lt;br /&gt;
During installations and upgrades, you must verify (or trust someone else to verify) every line of code, of every new file, for every known vulnerability. And because scripts can have unintended consequences on each other, you cannot forget to test, test, test. Of course this is generally true for all software, but placing the entire application in public_html makes the issue extremely critical.&lt;br /&gt;
&lt;br /&gt;
The recent wave of URL injection attacks against poorly-written third party extensions would have been much less successful if those files had been stored outside of public_html, and thus simply unavailable through URLs. Note that in many cases the actual vulnerabilities could still exist within the files, but being inside the fence (outside of public_html) they would not be exposed to URL injections.&lt;br /&gt;
&lt;br /&gt;
 To (Deny, then Allow), or (Allow, then Deny)?&lt;br /&gt;
&lt;br /&gt;
The real problem with the above &amp;quot;all known&amp;quot; qualifier is that it is an allow, then deny model. In other words, we first give everyone access to every file and then deny access to specific files by adding a line of code.&lt;br /&gt;
&lt;br /&gt;
Consider the logic for a password authentication script. We have essentially two choices:&lt;br /&gt;
# First allow all access, then deny any username/password combination that DOES NOT match the approved list.&lt;br /&gt;
# First deny all access, then allow any username/password combination that DOES match the approved list.&lt;br /&gt;
&lt;br /&gt;
Obviously the second method is better. A passing familiarity with regular expressions shows that the first method is much more difficult to write securely. It fails anew each time a new variation of some attack is developed, and tends to require constant revisions. Over time, such revisions become so complex that the authentication system itself becomes a source of vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Conceptually, the second method is an example of building a strong fence around your site (deny), and then granting access using a limited and well-defined set of criteria (then allow). If the script fails, the most likely result is that someone who should have access is blocked. That may be highly inconvenient, but it&#039;s not usually a security breach.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The good news&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# In Joomla! 1.0.x, some extensions, and the Joomla! framework, give you the option of locating critical directories outside of public_html after you have completed the installation. Whenever possible you should do this.&lt;br /&gt;
# Joomla! 1.5 goes far in the right direction. It provides several new constants for specifying the location of particularly sensitive directories, including configuration, administrator, libraries, and installation. &lt;br /&gt;
# Joomla! 1.5 is able to run as an FTP account. This provides another method for protecting files on a file by file and directory by directory basis.&lt;br /&gt;
&lt;br /&gt;
==How do I adjust Joomla 1.5 defines {{JVer|1.5}}==&lt;br /&gt;
&lt;br /&gt;
There are two defines files that will generally need to be edited.  /includes/defines.php file is for the front end and /administrator/includes/defines.php is for the Joomla administrator end. Below is the relevant code.&lt;br /&gt;
&lt;br /&gt;
 define( &#039;JPATH_ROOT&#039; , implode( DS, $parts ) );&lt;br /&gt;
 define( &#039;JPATH_SITE&#039; , JPATH_ROOT );&lt;br /&gt;
 define( &#039;JPATH_CONFIGURATION&#039;, JPATH_ROOT );&lt;br /&gt;
 define( &#039;JPATH_ADMINISTRATOR&#039;, JPATH_ROOT . DS . &#039;administrator&#039; );&lt;br /&gt;
 define( &#039;JPATH_LIBRARIES&#039; , JPATH_ROOT . DS . &#039;libraries&#039; );&lt;br /&gt;
 define( &#039;JPATH_INSTALLATION&#039; , JPATH_ROOT . DS . &#039;installation&#039; );&lt;br /&gt;
&lt;br /&gt;
.DS. = Directory Seperator&lt;br /&gt;
&lt;br /&gt;
==Moving sensitive files outside the web root==&lt;br /&gt;
{{:Moving sensitive files outside the web root}}&lt;br /&gt;
&lt;br /&gt;
Moving sensitive files is now documented at: http://docs.joomla.org/Moving_sensitive_files_outside_the_web_root&lt;br /&gt;
&lt;br /&gt;
==How do I block direct access to critical files using .htaccess?==&lt;br /&gt;
# Make a backup copy of your .htaccess file. Use your backup file to recover if the following fails. Be sure to delete the backup file once you  are finished.&lt;br /&gt;
# Add the following to your .htaccess file. This example will protect both the configurtation.php and .htaccess files.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Files .htaccess&amp;gt;&lt;br /&gt;
 order allow,deny&lt;br /&gt;
 deny from all&lt;br /&gt;
 &amp;lt;/Files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FilesMatch &amp;quot;configuration.php&amp;quot;&amp;gt;&lt;br /&gt;
 Order allow,deny&lt;br /&gt;
 Deny from all&lt;br /&gt;
 &amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also protect a lot of file extensions in one single rule. Exemple (the file names between &#039; &#039;&#039;&#039;(&#039;&#039;&#039; &#039; and &#039; &#039;&#039;&#039;)&#039;&#039;&#039; &#039; in this rule are the file extensions to protect ):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FilesMatch &amp;quot;\.(htaccess|htpasswd|ini|phps|log|sh|conf)$&amp;quot;&amp;gt;&lt;br /&gt;
 Order allow,deny&lt;br /&gt;
 Deny from all&lt;br /&gt;
 &amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How do I recursively adjust file and directory permissions?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using Joomla! Administration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the Back-end, go to Site --&amp;gt; Global Configuration --&amp;gt; Server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using the UNIX shell&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The find command automatically assumes that it should start from the current directory. To be safe, go to your public_html directory and specify a path as the first argument. Some shells, such as bash on Apple OS X, must have a path specified in the find command.&lt;br /&gt;
&lt;br /&gt;
 find . -type f -exec chmod 644 {} \;&lt;br /&gt;
 find . -type d -exec chmod 755 {} \;&lt;br /&gt;
 chmod 707 images&lt;br /&gt;
 chmod 707 images/stories&lt;br /&gt;
 chown apache:apache cache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
# Test all third party extensions after changing permissions.&lt;br /&gt;
# You may need to reset write permissions to install more extensions.&lt;br /&gt;
&lt;br /&gt;
==How can I set the administrator directory to use an SSL server (https)? {{JVer|1.0}}==&lt;br /&gt;
&lt;br /&gt;
Use Joomla version 1.5 or newer&lt;br /&gt;
&lt;br /&gt;
A standard Joomla! 1.0.x installation does not support SSL for individual directories, however there are various (elegant and not so elegant) hacks posted in the forums.&lt;br /&gt;
&lt;br /&gt;
Note that earlier techniques involving the variable $mosConfig_live_site are deprecated, and will not work with current Joomla! versions due to increased security enhancements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More Help&#039;&#039;&#039;&lt;br /&gt;
# [http://www.netshinesoftware.com/security/using-an-ssl-certificate-with-your-joomla-website.html Netshine Software, Ltd: Using an SSL Certificate with your Joomla Website]&lt;br /&gt;
&lt;br /&gt;
==Why isn&#039;t restricting access by IP recommended?==&lt;br /&gt;
&lt;br /&gt;
Restricting site access by IP address is not particularly effective longterm as many exploits are enacted from hijacked machines or via proxies, masking the real attacker&#039;s actual IP Address. Attackers can attack from many different compromised machines. Blocking them will block the legitimate owners of that IP, but may not block the attackers.&lt;br /&gt;
&lt;br /&gt;
= Joomla! Extensions =&lt;br /&gt;
&lt;br /&gt;
==Why are there vulnerable extensions?==&lt;br /&gt;
&lt;br /&gt;
A list of currently known [http://docs.joomla.org/Vulnerable_Extensions_List vulnerable extensions]. &lt;br /&gt;
&lt;br /&gt;
: Anyone may write and distribute a Joomla! extension. As a service to the global community, this freedom is actively encouraged and supported by the Joomla! Core team. Due to the openness and popularity of the Joomla! project, there are a wide variety of extensions offering a vast array of features. The quality and breadth of Joomla! extensions is one of the main advantages of Joomla.&lt;br /&gt;
&lt;br /&gt;
: However this freedom comes with a price. It requires individual responsibility, and can survive only where a majority of participants act responsibly. Joomla&#039;s success has led to unwanted attention from malicious types, such as script kiddies who run simple, automated scripts in an effort to find and deface others&#039; Web sites.&lt;br /&gt;
&lt;br /&gt;
: It is important to note that, script kiddies unintentionally perform a valuable service. They help us identify vulnerable extensions and poorly configured servers that might otherwise remain open to more serious threats.&lt;br /&gt;
&lt;br /&gt;
==What is a vulnerable extension?==&lt;br /&gt;
&lt;br /&gt;
A vulnerable extension is one that has been found to contain (or contribute to) a security vulnerability.&lt;br /&gt;
&lt;br /&gt;
Vulnerable extensions are not necessarily poorly-coded. As the Web evolves, technical requirements and commonly accepted coding practices change. Active projects release new versions of their extensions as requirements change. For this reason, it is important to:&lt;br /&gt;
&lt;br /&gt;
# Know the version numbers of all installed extensions.&lt;br /&gt;
# Use only the latest stable version of all extensions.&lt;br /&gt;
# Completely remove all files of insecure or unused extensions.&lt;br /&gt;
&lt;br /&gt;
==How do I choose secure extensions?==&lt;br /&gt;
&lt;br /&gt;
: The most important thing anyone can do is make good decisions regarding the extensions they choose to use on a site. Once an insecure or malicious extension is installed you should consider your entire site compromised. There is NO POSSIBLE WAY to protect or stop a component from accessing database tables it should not be accessing. There is no possible way to stop a component from sending all of the information it found back to a cracker website. Once an insecure or malicious component is installed, your entire site is insecure.&lt;br /&gt;
&lt;br /&gt;
: With all of that said, here are some pretty easy tips for making good choices regarding the extensions you install:&lt;br /&gt;
&lt;br /&gt;
1. When was the last version released?&lt;br /&gt;
&lt;br /&gt;
: If it has been over a year, consider the project abandoned and find something else. Do not install old components.&lt;br /&gt;
&lt;br /&gt;
2. What kind of release is it? (Stable, Release Candidate (RC), Beta, Alpha)&lt;br /&gt;
&lt;br /&gt;
: For production sites you should be sticking to Stable releases as much as possible. If you cannot wait until a Stable release has been made available, Release Candidates are the only other option you should consider. I would not suggest anyone install any Beta or Alpha extensions on a production site. This means they still have bugs, they have not been tested enough, and could have any number of inconvenient bugs or security issues that have not been fixed or worse, found.&lt;br /&gt;
&lt;br /&gt;
3. Does the extension have a history of good security practices?&lt;br /&gt;
&lt;br /&gt;
: This is obviously a bit more subjective but it is still a very valid gauge of future trustworthiness. It requires a bit of investigation and research. Look around their download pages and archives, are there many security release or patches? Are there a lot of reports of cracking activity through this extension? Are the developers experienced and security conscious? What do other community members think of this extension? One example that comes to mind that has little to do with Joomla itself (which makes it a fair example) is phpBB. This script has had more security issues than I could get my head around and there routinely seems to be newly disclosed issues. Because of this, I would never use phpBB. In my opinion its is not trustworthy and there is a high probability that there will be more major security issues.&lt;br /&gt;
&lt;br /&gt;
4. Is there a support community for this extension?&lt;br /&gt;
&lt;br /&gt;
: This is very important for usability and security awareness. If there is a support community for an extension there is a better chance of security issues being known and dealt with. A support community means that people would like to continue using the extension and that they care about the extension. This furthers the chance that security issues will be found, disclosed, and dealt with promptly.&lt;br /&gt;
&lt;br /&gt;
5. Is there only a Mambo version of this extension?&lt;br /&gt;
&lt;br /&gt;
: While this does not in itself make an extension insecure but is rather a gauge of support, how recently the last realease was, and future support. There is a pretty narrow chance that Mambo components will be supported in 1.5 so save yourself the trouble and find a component made to work with Joomla. It will make your life easier.&lt;br /&gt;
&lt;br /&gt;
6. Is the extension generally bug free?&lt;br /&gt;
&lt;br /&gt;
: I hinted on this a little bit in number three but I think it is worth discussing in more depth. While it is almost impossible for an extension to be completely bug free, the smaller the number of bugs, the better. If there are bugs in the software it means there are mistakes in the software. The more mistakes, the higher risk of usability issues and security issues. Security issues are often a result of not one bug, but several bugs or bad practices. For example, the recent 3rd party vulnerabilities that allow for remote file inclusion are a result of:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bad Practices:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Having PHP&#039;s Register Globals enabled.&lt;br /&gt;
# Using out of date or abandoned extension.&lt;br /&gt;
# No other security checks enabled for PHP. (url_fopen off, open_basedir restrictions, disabled PHP functions)&lt;br /&gt;
# Poorly configured file permissions.&lt;br /&gt;
# No request filtering or software &amp;quot;firewall&amp;quot;. (such as mod_rewrite rules or mod_security Apache modules)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bugs:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Not including defined(&#039;_VALID_MOS&#039;) or die... statements&lt;br /&gt;
# Poorly constructed include() statements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Although the Joomla! core is secure when configured correctly, third party extensions come in all flavors of age and quality. Unless you absolutely trust the extension developer, always review the code should before installing. The following is a list of typical areas of concern.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. How complex is the extension? &lt;br /&gt;
&lt;br /&gt;
: The larger it is, the more likely it is to have problems, and the more carefully you should review it. If you can&#039;t tell what it&#039;s doing, you should not trust it.&lt;br /&gt;
&lt;br /&gt;
2. Does the extension read or write files to your server? &lt;br /&gt;
&lt;br /&gt;
: Programs that read files may inadvertently violate access restrictions you&#039;ve set up, or pass sensitive system information to crackers. Programs that write files have the potential to modify or damage existing files, or introduce trojan horses.&lt;br /&gt;
&lt;br /&gt;
3. Does the extension interact with other programs on your system? &lt;br /&gt;
&lt;br /&gt;
: For example, many extensions send e-mail in response to a form input by opening a connection with the sendmail program. Is it doing this in a safe way?&lt;br /&gt;
&lt;br /&gt;
4. Does the extension run with suid (set-user-id) privileges? &lt;br /&gt;
&lt;br /&gt;
: In general this is very dangerous; extensions need an excellent reasons for doing this.&lt;br /&gt;
&lt;br /&gt;
5. Does the extension validate all user input, such as in form fields and in the URL?&lt;br /&gt;
&lt;br /&gt;
6. Does the extension use explicit path names when invoking external programs? &lt;br /&gt;
&lt;br /&gt;
: Relying on the PATH environment variable to resolve partial path names is a dangerous practice.&lt;br /&gt;
&lt;br /&gt;
7. Is the extension secure against direct access throught the URL? &lt;br /&gt;
&lt;br /&gt;
: For example: www.yoursite.com/components/com_bad_extension.php?lots_of_bad_code_here&lt;br /&gt;
&lt;br /&gt;
8. Is the extension secure against remote file inclusions?&lt;br /&gt;
&lt;br /&gt;
9. Is the extension secure against SQL injections?&lt;br /&gt;
&lt;br /&gt;
10. Is the extension secure against Cross Site Scripting (XSS)?&lt;br /&gt;
&lt;br /&gt;
11. Does the extension need PHP register_globals ON, or Joomla! RG Emulation ON? &lt;br /&gt;
&lt;br /&gt;
: If so, then it is probably violating number 7 above.&lt;br /&gt;
&lt;br /&gt;
12. Does the extension provide higher database access to less privileged users? &lt;br /&gt;
&lt;br /&gt;
: For example does it allow guests or registered users to view data that only publishers or administrators should be able to see?&lt;br /&gt;
&lt;br /&gt;
==Why does the Extensions site include insecure extensions?==&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Joomla! Extensions site exists as a free service to the community. Anyone can post extensions there and extensions exist at all levels of quality and maturity.&lt;br /&gt;
&lt;br /&gt;
If an extension is found to contain vulnerabilities, it will be removed from the site until a safer version is released, but there is no guarantee that the vulnerabilities of every extension have been discovered or reported.&lt;br /&gt;
&lt;br /&gt;
To be safe, you must verify the security of every extension you install.&lt;br /&gt;
&lt;br /&gt;
Below is the text of the Joomla! Extensions site disclaimer. Ignore it at your peril. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disclaimer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: The extensions and reviews listed in this area have been submitted by the community and their listing does not constitute or imply endorsement, recommendation, or favouring by Joomla!/OSM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: This content is provided as a free service to our visitors, and, as such, Joomla!/OSM cannot be held liable for the accuracy of the information. Visitors wishing to verify that the information is correct should contact the parties responsible for authoring the content and/or development of the extension.&lt;br /&gt;
&lt;br /&gt;
==Why is there a warning in the extensions install screen?==&lt;br /&gt;
&lt;br /&gt;
It&#039;s just a warning! You are of course free to install any extension you want onto your own site, but remember that &#039;&#039;&#039;YOU&#039;&#039;&#039; are responsible for the safety of your site and the quality of the applications you install.&lt;br /&gt;
&lt;br /&gt;
The vast majority of reported Joomla! vulnerabilities are through poorly-written or obsolete versions of third party extensions that should not have been left on the server. Therefore, before installing anything carefully evaluate the quality of the extension&#039;s code.&lt;br /&gt;
&lt;br /&gt;
The [[Vulnerable Extensions List]] is a valuable source of information on what &#039;&#039;&#039;NOT&#039;&#039;&#039; to install.&lt;br /&gt;
&lt;br /&gt;
==Why isn&#039;t un-publishing a vulnerable extension enough to protect my site?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Simply removing the menu links to an extension, or unpublishing a module is NOT enough to protect your site! As long as the extension&#039;s files exist on your server, you are vulnerable. Note how in the following examples an attacker can bypass the Joomla! index file to directly target any file, of any extension.&lt;br /&gt;
&lt;br /&gt;
 www.your_site.org/components/com_bad_component/vulnerable_file.php&lt;br /&gt;
 www.your_site.org/modules/mod_bad_module/vulnerable_file.php&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions for removing a vulnerable extension&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Make a list of files to remove&lt;br /&gt;
&lt;br /&gt;
: If you can locate it, read the extension&#039;s xml file to determine exactly which directories, files, and database tables were added to your system. The xml file is in the original zip archive used during the extension install process. For example, the zip archive for an extension called mod_vulnerable, would contain an xml file called, mod_vulnerable.xml, and might contain a list of files such as the following:&lt;br /&gt;
&lt;br /&gt;
 mod_vulnerable.php&lt;br /&gt;
 mod_vulnerable/vulnerable_file.txt&lt;br /&gt;
 mod_vulnerable/another_vulnerable_file.txt&lt;br /&gt;
 mod_vulnerable/yet_another_vulnerable_file.txt&lt;br /&gt;
 mod_vulnerable/index.html&lt;br /&gt;
&lt;br /&gt;
2. Uninstall via the Joomla Installer:&lt;br /&gt;
&lt;br /&gt;
: Using the Installer in the Joomla! Administrator backend, uninstall the vulnerable extension. You may also need to uninstall related modules, components, or plugins.&lt;br /&gt;
&lt;br /&gt;
3. Check that the uninstall process was complete:&lt;br /&gt;
&lt;br /&gt;
: Don&#039;t trust the extension to safely remove all of it&#039;s files. Compare directories and files on your system to the extension&#039;s xml list to ensure that all related files were actually removed.&lt;br /&gt;
&lt;br /&gt;
4. Optionally, remove related database tables:&lt;br /&gt;
&lt;br /&gt;
: Check your database and remove any tables created by the extension. To ease the upgrade process to new versions, many uninstall scripts do not remove related database tables. You can find the list of tables in each extension&#039;s xml file. (If you plan on installing a safer, compatible version of the same extension and you want to reuse existing data, you can usually leave the database tables as they are.)&lt;br /&gt;
&lt;br /&gt;
= Apache =&lt;br /&gt;
&#039;&#039;&#039;Covers information on Apache Web server, Apache modules, .htaccess files, etc.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is Apache modSecurity?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ModSecurity is an Apache module that functions as an embeddable web application firewall. It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring and real-time analysis with no changes to existing infrastructure. It is also an open source project that aims to make web application firewall technology available to everyone.&lt;br /&gt;
&lt;br /&gt;
When configuring ModSecurity, it is important to know that it is not only the Joomla! application that may require unique rules, but also the data that the application processes.&lt;br /&gt;
&lt;br /&gt;
Quality hosting providers customize mod_security rules to suit each customer. &lt;br /&gt;
&lt;br /&gt;
If you have a conflict between Joomla and ModSecurity, it is often third party components, and sometimes even contact form submissions that trigger the problem. Joomla out of the box &#039;&#039;usually&#039;&#039; works with typical ModSecurity settings, but this is dependent on each hosting provider&#039;s unique configuration. &lt;br /&gt;
&lt;br /&gt;
Overall, mod_security is a excellent tool, but this is really something your host should manage.&lt;br /&gt;
&lt;br /&gt;
One specific error is the failure of file uploads, this is often caused by SecFilterScanPOST being enabled. If you get an internal server error while using the flash upload in the Media Manager this is a good place to start. You can disable this setting by adding &#039;&#039;&#039;SecFilterScanPOST Off&#039;&#039;&#039; to your .htaccess file.&lt;br /&gt;
&lt;br /&gt;
ModSecurity configurations are far too varied and complex to describe here. To learn more, see the following resources:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# [http://www.modsecurity.org/ Official ModSecurity Site]&lt;br /&gt;
# [http://www.modsecurity.org/projects/modsecurity/apache/index.html ModSecurity and Apache]&lt;br /&gt;
&lt;br /&gt;
== How do I block directory scans using  .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add one of the following Apache rewrite rules to your .htaccess file. The first example will internally rewrite all attempts to access files with names starting with &amp;quot;phpMyAdmin&amp;quot; to index.php. Be wary of using this as it allows a seemingly valid duplicate URL for your homepage. The second rule is more safe. It simply returns a 403 response.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sample Apache Rewrite Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 RewriteRule ^phpMyAdmin /index.php [L]&lt;br /&gt;
 RewriteRule ^phpMyAdmin - [F]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Some Regular Expression Tips&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ^ Means start of pattern&lt;br /&gt;
 . Means any character other than newlines&lt;br /&gt;
 + Means one or more of the previous character&lt;br /&gt;
 * Means zero or more of the previous character&lt;br /&gt;
 $ Means end of pattern&lt;br /&gt;
 \.  Literal periods must be escaped with a leading \&lt;br /&gt;
&lt;br /&gt;
==How can I change PHP settings using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This FAQ explains how to set boolean PHP configuration directives using php_flag. The format for php_flag is: php_flag name on|off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Open the .htaccess file located in your site&#039;s home directory, or if you don&#039;t have one, create a blank one now. Note the period character (.) at the beginning of the file name.&lt;br /&gt;
&lt;br /&gt;
2. Add any of the following code samples to your .htaccess file, each on it&#039;s own line. These sample commands will prevent common global variable injection attacks, cross site scripting (XSS) sttacks, and code injection attacks.&lt;br /&gt;
&lt;br /&gt;
 php_flag register_globals off&lt;br /&gt;
&lt;br /&gt;
 php_flag allow_url_fopen off&lt;br /&gt;
&lt;br /&gt;
 php_flag magic_quotes_gpc on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that although the magic_quotes_gpc directive adds a layer of security, for performance reasons it is not considered a best practice. If you have verified that your site correctly filters and validates all user data (and every production site really should), then there is no need to add this directive. If you have any doubt, add it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3. Save the .htaccess file in your site&#039;s home directory.&lt;br /&gt;
&lt;br /&gt;
4. Test your site&#039;s front end and back end.&lt;br /&gt;
&lt;br /&gt;
==How does FastCGI effect Joomla?==&lt;br /&gt;
&lt;br /&gt;
When PHP runs from FastCGI, your server runs the PHP interpreter like an Apache module, but with the rights of your user account. Usually, the PHP interpreter is either running as the user of the webserver (which is fast, but insecure, since everyone&#039;s scripts run with the same rights), or as a CGI program, which is slow. Thus, FastCGI is a good solution for shared hosting.&lt;br /&gt;
&lt;br /&gt;
Since the PHP interpreter runs as a single instance, it does (AFAIK) not parse the .htaccess or php.ini files per directory. To change php.ini settings, your host must offer you a method to set up or modify your own php.ini, or at least parts of it. Here is how one of host does this: it parses one php.ini file (which the user can modify) once an hour, and puts some well-defined settings into the web server&#039;s main php.ini file. Thus, users are able to change some settings for their site only, such as turning register_globals off, switching between PHP4 and PHP5.&lt;br /&gt;
&lt;br /&gt;
If your server uses FastCGI, you can ask them to enable a method such as the above example, or you may be able to ask them adjust some settings for you.&lt;br /&gt;
&lt;br /&gt;
==How can I check if mod_rewrite is enabled?==&lt;br /&gt;
&lt;br /&gt;
Many problems with search engine optimization (SEO) arise from the fact that a host has not enabled mod_rewrite on the server.&lt;br /&gt;
&lt;br /&gt;
1. Enable SEO in your administrator! (administrator &amp;gt; SEO &amp;gt; Enable &amp;gt; Save)&lt;br /&gt;
&lt;br /&gt;
2. Rename your htaccess.txt to .htaccess, or use your existing .htaccess file.&lt;br /&gt;
&lt;br /&gt;
3. Place ONLY the following lines in your .htaccess file in the domain root folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;      Options +FollowSymLinks&lt;br /&gt;
      RewriteEngine On&lt;br /&gt;
      RewriteRule ^joomla\.html http://www.joomla.org/ [R=301,L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Point your browser to: http://www.example.com/joomla.html&lt;br /&gt;
&lt;br /&gt;
(Replace &#039;example.com&#039; with your site&#039;s actual URL.)&lt;br /&gt;
&lt;br /&gt;
5. If you are redirected to www.joomla.org, mod_rewrite is working. If you get an error, mod_rewrite is not working.&lt;br /&gt;
&lt;br /&gt;
6. Note: if your site is located in a folder, for example &amp;quot;test&amp;quot; you will need to modify the .htaccess file as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;      Options +FollowSymLinks&lt;br /&gt;
      RewriteEngine On&lt;br /&gt;
      RewriteRule ^test/joomla\.html http://www.joomla.org/ [R=301,L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How do I switch to PHP5 using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Many shared server environments currently run .php scripts using the PHP4 interpreter and .php5 code using the PHP5 interpreter. Rather than changing all your file extensions, and perhaps breaking many links, use a .htaccess file to dynamically map one extension to the other.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT CAVEAT:&#039;&#039;&#039; One common reason for doing this is that hosts leave PHP4 configured with register_globals ON in order to support legacy code while offering PHP5 with register_globals OFF. If you are on a shared server at a host that has configured register_globals ON server wide, you should be very worried!&lt;br /&gt;
&lt;br /&gt;
Turning register globals OFF via a local php.ini or a .htaccess file will NOT offer you any extra protection. Another exploited account on your server can simple hack yours. For server security, and since php 4.2, register globals is OFF server wide by default (php default). Any host overriding this is inviting trouble. If you need register globals ON for a specific site, simple use a .htaccess file for that specific directory, and server wide security will not be compromised. Of course, if you do this be sure all effected scripts fully sanitize input data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Your Apache server must be configured to use .htaccess files. If not, you may be able to request this from your host.&lt;br /&gt;
2. Your Apache configuration must allow the following setting. If not, you may be able to request this from your host.&lt;br /&gt;
3. Your host must have configured the .php and .php5 file extensions as described above. If not, they may possibly have chosen other extensions. Check with your host.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Check to be sure your site is configured to use .htaccess files.&lt;br /&gt;
&lt;br /&gt;
2. Make a backup of the .htaccess file in your root public_http directory. If you don&#039;t have a .htaccess file at this location, create one now.&lt;br /&gt;
&lt;br /&gt;
3. There are various ways to set the comman, depending on your server configuration. One of the following will probably work. Add ONE the following lines at the end of your .htaccess file. If unsure which to use, check with your hosting provider on which version works best for your configuration.&lt;br /&gt;
&lt;br /&gt;
 AddType x-mapp-php5 .php&lt;br /&gt;
 AddHandler application/x-httpd-php5 .php&lt;br /&gt;
 AddHandler cgi-php5 .php&lt;br /&gt;
&lt;br /&gt;
4. Carefully test.&lt;br /&gt;
&lt;br /&gt;
5. Delete the backup .htaccess file. Don&#039;t leave backups of .htaccess files in public directories.&lt;br /&gt;
&lt;br /&gt;
==How do I password protect directories using .htaccess?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This FAQ explains how to protect the Joomla! /administrator/ directory on Apache servers using the htpasswd utility. You can easily adapt these instructions to protect other directories. If you need help finding or creating your .htaccess file, start here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Caveat (From Apache.org)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Basic authentication should not be considered secure for any particularly rigorous definition of secure.&lt;br /&gt;
Although the password is stored on the server in encrypted format, it is passed from the client to the server in plain text across the network. Anyone listening with any variety of packet sniffer will be able to read the username and password in the clear as it goes across.&lt;br /&gt;
&lt;br /&gt;
Not only that, but remember that the username and password are passed with every request, not just when the user first types them in. So the packet sniffer need not be listening at a particularly strategic time, but just for long enough to see any single request come across the wire.&lt;br /&gt;
&lt;br /&gt;
And, in addition to that, the content itself is also going across the network in the clear, and so if the web site contains sensitive information, the same packet sniffer would have access to that information as it went past, even if the username and password were not used to gain direct access to the web site.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use basic authentication for anything that requires real security. It is a detriment for most users, since very few people will take the trouble, or have the necessary software and/or equipment, to find out passwords. However, if someone had a desire to get in, it would take very little for them to do so.&lt;br /&gt;
&lt;br /&gt;
Basic authentication across an SSL connection, however, will be secure, since everything is going to be encrypted, including the username and password.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. If you are unfamiliar with the Apache htpasswd utility, you may want to read the following link first.&lt;br /&gt;
Apache Authentication, Authorization, and Access Control&lt;br /&gt;
&lt;br /&gt;
2. Check to be sure your site is configured to use .htaccess files. If not sure, ask your host.&lt;br /&gt;
&lt;br /&gt;
3. Decide where to put your .htaccess file. Because Apache recursively searches all directories in a path for .htaccess files, the higher in your directory structure you place this file, the more directories it will control. If there is already an .htaccess file in the directory you choose, it&#039;s probably best to add the new code to it.&lt;br /&gt;
&lt;br /&gt;
4. Decide where to store your.htpasswd and .htgroups files. These files should NEVER be publicly accessable through the Web. Below is an example directory structure showing good locations for each file. Note that the /auth/ directory in this example is NOT accessible from the Web.&lt;br /&gt;
&lt;br /&gt;
 /home/mysite/public_html/.htaccess&lt;br /&gt;
 /home/mysite/auth/.htpasswd/&lt;br /&gt;
 /home/mysite/auth/.htgroups/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Create the .htpasswd and .htgroups files as explained in the official Apache HowTo, referenced above. (Since you&#039;ve read the always current and official documentation at Apache.org, we&#039;ll spare you the trouble of displaying it again here.)&lt;br /&gt;
&lt;br /&gt;
6. If a .htaccess file already exists in the directory you have chosen, make a backup copy. If the file does not exist, create a new file with that name now. (Don&#039;t forget the dot at the beginning of the name.)&lt;br /&gt;
&lt;br /&gt;
7. Add the following code to the .htaccess file. Adjust the example paths (marked in red) as needed for your server. Adjust the group name that you created in step 5 if it differs from the below example.&lt;br /&gt;
&lt;br /&gt;
 AuthUserFile /home/auth/.htpasswd&lt;br /&gt;
 AuthGroupFile /home/auth/.htgroups&lt;br /&gt;
 AuthType Basic&lt;br /&gt;
 AuthName &amp;quot;LWS&amp;quot;&lt;br /&gt;
 require group admins&lt;br /&gt;
&lt;br /&gt;
8. Test carefully.&lt;br /&gt;
&lt;br /&gt;
9. Remove all backup .htaccess files from public_http directories.&lt;br /&gt;
&lt;br /&gt;
10. If you cannot use the Apache htpasswd utility, here&#039;s a free, online script that creates the necessary files for you. You&#039;ll need to know the user name, password, and path. The script does the rest for you. Note that for more advanced configuration, such as the use of groups, you&#039;ll need to edit the resulting files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.htaccess Generator:&#039;&#039;&#039; http://www.webmaster-toolkit.com/htaccess-generator.shtml&lt;br /&gt;
&lt;br /&gt;
== How do I restrict directory access by IP address using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This can be a very effective way to protect your Joomla! administrator directory. Any other directory in public_html can be protected in the same way. This method only works if you have a static IP address assigned to you. Anyone attempting to browse such directories using a different IP Address will get a 403 Forbidden error.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
# In the directory you wish to protect, open (or create) a file called, .htaccess. (Note the dot at the beginning of the file name.)&lt;br /&gt;
# Add the following code to this file, replacing 100.100.100.100 in this example with the static IP address you plan to allow:&lt;br /&gt;
&lt;br /&gt;
 Order Deny,Allow&lt;br /&gt;
 Deny from all&lt;br /&gt;
 Allow from 100.100.100.100&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Optional: You can enter partial IP Addresses, such as, 100.100.100. This allows access to a range of addresses.&lt;br /&gt;
&lt;br /&gt;
* Optional: You can add multiple addresses by separating them with comma&#039;s.&lt;br /&gt;
&lt;br /&gt;
 100.100.100.101, 100.100.100.102&lt;br /&gt;
&lt;br /&gt;
==How do I convert an htaccess.txt file into a .htaccess file?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When using PHP as an Apache module, you can change the configuration settings using directives in Apache configuration files (e.g. httpd.conf and .htaccess files). You will need &amp;quot;AllowOverride Options&amp;quot; or &amp;quot;AllowOverride All&amp;quot; privileges to do so. If you control your own Apache configuration, you can and should use httpd.conf. If you do not control your Apache configuration (such as on a shared server), you must use .htaccess files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# First look for the file, htaccess.txt in your root directory. It should have been installed during the Joomla! installation. (Note that this file name does not begin with a dot.) Open and carefully read htaccess.txt. It contains important suggestions on how to protect your site.&lt;br /&gt;
# Make any adjustments to this file as appropriate for your site, and then save it in your site&#039;s home directory as, .htaccess (including the dot).&lt;br /&gt;
# Test your site&#039;s front end and back end. If it produces errors, rename the file back to htaccess.txt, and troubleshoot your edits. If you are unable to get this working, you may have to leave the file named htaccess.txt.&lt;br /&gt;
# Use phpinfo() to ensure that all configurations set as you intended. Note: Web-accessible files that include phpinfo() are potential security risks they offer attackers lots of useful information about your server. Always remove such files after use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More Information&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://us2.php.net/configuration.changes Official PHP Manual: How to change configuration settings]&lt;br /&gt;
* [http://us2.php.net/manual/en/ini.php#ini.list Official PHP Manual: List of PHP INI directives]&lt;br /&gt;
&lt;br /&gt;
== How do I block direct hot linking to image files using .htaccess? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Caveats&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Your server must allow .htaccess files for this technique to work.&lt;br /&gt;
# If you do not have a .htaccess file in your root directory, see the related FAQ first.&lt;br /&gt;
# Do not use this method to redirect image hot links to HTML pages or to servers that are not your own.&lt;br /&gt;
# Hot linked images can only be replaced by other images, not with HTML pages.&lt;br /&gt;
# As with any .htaccess rewrite, you may block legitimate traffic, such as users behind proxies or firewalls.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Create a jpeg image called no_hot_link.jpe. Note that the odd file extention (.jpe) is intentional and important. Place this file in your images directory.&lt;br /&gt;
# Place the following code in the .htaccess file of your root directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt; RewriteEngine On&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)*your_site\.com/ [NC]&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} !^$&lt;br /&gt;
 RewriteRule \.(jpe?g|gif|bmp|png)$ /images/no_hot_link.jpe [L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Explanation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first line begins the Apache rewrite rule. The second line matches any requests from your own site, here called your_site.com url. The [NC] flag means &amp;quot;aNy Case&amp;quot;, which means, match any and all upper and lower case characters. The third line allows empty referrals such as when a user is behind a caching proxy. The last line matches any files ending with the extension jpeg, jpg, gif, bmp, or png. This is then replaced by the no_hot_link.jpe file in your images directory. This JPEG file uses the extension jpe instead of jpg to prevent these rules from blocking your replacement image.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block hot linking from specific domains&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To stop hotlinking from specific domains only, such as myspace.com, blogspot.com and livejournal.com, while allowing other web sites to hotlink to your images, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt; RewriteEngine On&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} ^http://([^.]+\.)*myspace\.com/ [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} ^http://([^.]+\.)*blogspot\.com/ [NC,OR]&lt;br /&gt;
 RewriteCond %{HTTP_REFERER} ^http://([^.]+\.)*livejournal\.com/ [NC]&lt;br /&gt;
 RewriteRule \.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpe [L]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can add as many different domains as you want. Every RewriteCond line except the last one should end with the [NC,OR] flags. NC means to ignore case. OR means &amp;quot;Or Next&amp;quot;, as in, match this line OR the next line. The last RewriteCond omits the OR flag to stop matching after the last RewriteCond.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display a 403 forbidden code&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can display a 403 Forbidden error code. Replace the last line of the previous examples with this line:&lt;br /&gt;
&lt;br /&gt;
 RewriteRule \.(jpe?g|gif|bmp|png)$ - [F]&lt;br /&gt;
&lt;br /&gt;
= PHP =&lt;br /&gt;
&lt;br /&gt;
== Why is Joomla! written in PHP? ==&lt;br /&gt;
&lt;br /&gt;
: Might as well get it from the horse&#039;s mouth. In [http://www.oracle.com/technology/pub/articles/php_experts/rasmus_php.html Do you PHP?], Rasmus Lerdorf, the originator of PHP, sums up how and why PHP developed as it did.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&amp;quot;What it all boils down to is that PHP was never meant to win any beauty contests. It wasn&#039;t designed to introduce any new revolutionary programming paradigms. It was designed to solve a single problem: the Web problem. That problem can get quite ugly, and sometimes you need an ugly tool to solve your ugly problem. Although a pretty tool may, in fact, be able to solve the problem as well, chances are that an ugly PHP solution can be implemented much quicker and with many fewer resources. That generally sums up PHP&#039;s stubborness.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== What is the latest stable release of PHP? ==&lt;br /&gt;
&lt;br /&gt;
Check the [http://www.php.net/downloads.php official PHP download page] for information on the latest PHP release.&lt;br /&gt;
&lt;br /&gt;
== How do I tune for speed with PHP5 and MySQL5? ==&lt;br /&gt;
&lt;br /&gt;
: This is just a point by point summary of how I&#039;ve been tuning and tweaking our Joomla sites to get them running as quickly as possible. For reference, we run all our sites off a Rackspace dedicated server, with 1Gb RAM, a 2Ghz dual core Athlon, running Apache 2.0.x (current revision), PHP 5.0.x (current revision) and MySQL 5.0.18.&lt;br /&gt;
&lt;br /&gt;
: These are listed in terms of apparent speed increase - that is, not the sheer speed for the full page, but the speed before the page is usable to view content, even if not all features are loaded.&lt;br /&gt;
&lt;br /&gt;
# PHP caching. I had been running eAccelerator, but switched to APC today, and it has made the system even faster than before, and eAccelerator was a big boost over uncached PHP. Joomla is a big complex system, so using precompiled code is a big time saver. I use a 128Mb in-memory cache, which is plenty for our needs.&lt;br /&gt;
# MySQL Query Caching. This one will vary depending on how dynamic your site is, and you can really kill the benefits by using the wrong extensions (any date/time based will need checking), but if you are serving pretty much the same queries each page load, it will drop the load times noticably.&lt;br /&gt;
# Template Image optimisation - template images really slow down the initial page load for first time visitors, so optimising the hell out of them makes sense. Remember that your template is probably not going to change as often as your story content, so you can afford to spend more time on optimising the images for it that you would otherwise. I recommend Irfanview, with the pngout plugin active for PNG images, and it isn&#039;t bad for JPG and GIF images either. Don&#039;t forget to ramp up the compression level of PNGs, and, if possible, reducing them to indexed pallettes.&lt;br /&gt;
# CSS compression. Easy one this - put a little script to output a gzipped version of your CSS file(s) and point your index.php at it. Example script below - I didn&#039;t write it, but it&#039;s short, to the point, and works.&lt;br /&gt;
&lt;br /&gt;
              ob_start (&amp;quot;ob_gzhandler&amp;quot;);&lt;br /&gt;
              header(&amp;quot;Content-type: text/css&amp;quot;);&lt;br /&gt;
              header(&amp;quot;Cache-Control: must-revalidate&amp;quot;);&lt;br /&gt;
              $offset = 60 * 60 ;&lt;br /&gt;
              $ExpStr = &amp;quot;Expires: &amp;quot; .&lt;br /&gt;
              gmdate(&amp;quot;D, d M Y H:i:s&amp;quot;,&lt;br /&gt;
              time() + $offset) . &amp;quot; GMT&amp;quot;;&lt;br /&gt;
              header($ExpStr);&lt;br /&gt;
&lt;br /&gt;
# Strip unneeded modules, components, mambots from Joomla. If you haven&#039;t used them, the impact on your loading time is minimal, but with more components/modules active, there are more points of failure, and Apache errors are slow!&lt;br /&gt;
# Scrutinise the Apache error log. It is amazing how many errors can crop up even with a fairly minimal Joomla install, and they don&#039;t necessarily affect the appearance of the page. Check your error log, especially if you are using custom components/modules, or any non-standard config settings. Once you&#039;ve noticed any problems, it&#039;s time to fix the code creating them, and test thoroughly before uploading the fixed versions.&lt;br /&gt;
# Keep rechecking as you add/remove features, redesign or change any server configuration options. Even things like adding virtual servers in Apache can affect speed of the server, as a missed config setting can cause general Apache delays.&lt;br /&gt;
&lt;br /&gt;
== Should PHP run as a CGI script or as an Apache module? ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to configure Apache to use PHP: &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Configure Apache to load the PHP interpreter as an &amp;lt;i&amp;gt;Apache module&amp;lt;/i&amp;gt;&lt;br /&gt;
# Configure Apache to run the PHP interpreter as a &amp;lt;i&amp;gt;CGI binary&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;(PS: Windows IIS normaly configures as CGI by the way)&amp;lt;/span&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
It is the intention of this post to provide you information relating to &lt;br /&gt;
the configuration and recognition of each method. &amp;quot;In general&amp;quot;&lt;br /&gt;
historically only one method or the other has been implemented,&lt;br /&gt;
however, with the architectural changes made to PHP starting with PHP5,&lt;br /&gt;
it has been quite common for hosting firms to configure for both. One&lt;br /&gt;
version running as CGI and one version running as a Module. It is&lt;br /&gt;
generally accepted more recently that running PHP as a CGI is more&lt;br /&gt;
secure, however, running PHP as an Apache Module does have a slight&lt;br /&gt;
performance gain and is generally how most pre-configured systems will&lt;br /&gt;
be delivered out of the box.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;What is the difference between CGI and apache Module Mode?&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An &amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Apache module&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
is compiled into the Apache binary, so the PHP interpreter runs in the&lt;br /&gt;
Apache process, meaning that when Apache spawns a child, each process&lt;br /&gt;
already contains a binary image of PHP. A CGI is executed as a single&lt;br /&gt;
process for each request, and must make an exec() or fork() call to the&lt;br /&gt;
PHP executable, meaning that each request will create a new process of&lt;br /&gt;
the PHP interpreter.  Apache is much more efficient in it&#039;s ability to&lt;br /&gt;
handle requests, and maaging resources, making the Apache module&lt;br /&gt;
slightly faster than the CGI (as well as more stable under load).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;CGI Mode&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
on the other hand, is more secure because the server now manages and&lt;br /&gt;
controls access to the binaries. PHP can now run as your own user&lt;br /&gt;
rather than the generic Apache user. This means you can put your&lt;br /&gt;
database passwords in a file readable only by you and your php scripts&lt;br /&gt;
can still access it! The &amp;quot;Group&amp;quot; and &amp;quot;Other&amp;quot; permissions ( refer &amp;lt;a href=&amp;quot;component/option,com_easyfaq/task,view/id,73/Itemid,268/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Permissions FAQ&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
can now be more restrictive. CGI mode is also claimed to be more&lt;br /&gt;
flexible in many respects as you should now not see, with phpSuExec (&lt;br /&gt;
refer [http://www.joomlatutorials.com/joomla-tips-and-tricks/40-miscellaneous-joomla-tips/114-how-to-troubleshoot-a-joomla-installation.html&amp;quot; target=&amp;quot;_blank Permissions under phpSuExec]&lt;br /&gt;
issues with file ownership being taken over by the Apache user,&lt;br /&gt;
therefore you should no-longer have problems under FTP when trying to&lt;br /&gt;
access or modify files that have been uploaded through a PHP interface,&lt;br /&gt;
such as Joomla! upload options.&lt;br /&gt;
&lt;br /&gt;
If your server is&lt;br /&gt;
configured to run PHP as an Apache module, then you will have the&lt;br /&gt;
choice of using either php.ini or Apache .htaccess files, however, if&lt;br /&gt;
your server runs PHP in CGI mode then you will only have the choice of&lt;br /&gt;
using php.ini files locally to change settings, as Apache is no longer&lt;br /&gt;
in complete control of PHP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Testing and Reviewing Your PHP Installation&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Also known as &amp;quot;Everything you ever wanted and didn&#039;t want to know about PHP&amp;quot;&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To&lt;br /&gt;
find out the PHP interpreter mode and to generally test your PHP&lt;br /&gt;
installation and to find out a vast amount of information about your&lt;br /&gt;
PHP environment, supported utilities, applications and settings, you&lt;br /&gt;
create a single PHP file containing &amp;lt;i&amp;gt;only&amp;lt;/i&amp;gt; the following lines;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 phpinfo();&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This single line of code outputs an amazing amount of information, be warned.... &amp;lt;img src=&amp;quot;http://forum.joomla.org/Smileys/joomla/wink.gif&amp;quot; alt=&amp;quot;Wink&amp;quot; border=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the file as any filename you wish, but with the &amp;quot;.php&amp;quot; extension. FTP it to your server and open it in a browser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Other useful information&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following are PHP functions, that when run from a PHP File can provide some useful information, &amp;lt;i&amp;gt;(less than the above option)&amp;lt;/i&amp;gt; many should run on most hosts, however many hosts disable some of these functions for security. No Guarantee&#039;s offered...&lt;br /&gt;
&lt;br /&gt;
Again,&lt;br /&gt;
as above, make a file, name it anything you wish but make sure it has&lt;br /&gt;
the &amp;quot;.php&amp;quot; extension, copy and paste the following lines in to it and&lt;br /&gt;
FTP to your server.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?&amp;lt;br /&amp;gt;echo &amp;quot;Hostname: &amp;quot;. @php_uname(n) .&amp;quot;&amp;quot;;&lt;br /&gt;
 if (function_exists( &#039;shell_exec&#039; )) { echo &amp;quot;Hostname: &amp;quot;.&lt;br /&gt;
 @gethostbyname(trim(`hostname`)); } else { echo &amp;quot;Server IP: &amp;quot;.&lt;br /&gt;
 $_SERVER[&#039;SERVER_ADDR&#039;] .&amp;quot;&amp;quot;; }&lt;br /&gt;
 echo &amp;quot;Platform: &amp;quot;. @php_uname(s) .&amp;quot; &amp;quot;. @php_uname(r) .&amp;quot; &amp;quot;. @php_uname(v) .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Architecture: &amp;quot;. @php_uname(m) .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Username: &amp;quot;. get_current_user () .&amp;quot; ( UiD: &amp;quot;. getmyuid() .&amp;quot;, GiD: &amp;quot;. getmygid() .&amp;quot; )&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Curent Path: &amp;quot;. getcwd () .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Type: &amp;quot;. $_SERVER[&#039;SERVER_SOFTWARE&#039;] . &amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Admin: &amp;quot;. $_SERVER[&#039;SERVER_ADMIN&#039;] . &amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Signature: &amp;quot;. $_SERVER[&#039;SERVER_SIGNATURE&#039;] .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Protocol: &amp;quot;. $_SERVER[&#039;SERVER_PROTOCOL&#039;] .&amp;quot;&amp;quot;;&lt;br /&gt;
 echo &amp;quot;Server Mode: &amp;quot;. $_SERVER[&#039;GATEWAY_INTERFACE&#039;] .&amp;quot;&amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
 ?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Joomla! HISA&amp;lt;/span&amp;gt; or &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Joomla! Tools Suite&amp;lt;/span&amp;gt; can also assist to determine which mode your server in running in, also&lt;br /&gt;
providing a large amount of other related  information including recommendations on configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Joomla! Tools Suite&amp;lt;/b&amp;gt; (JTS) is a complete suite of Tools to help you troubleshoot and maintain Joomla! and include the &amp;quot;HISA&amp;quot; script. [http://joomlacode.org/gf/project/jts/ Download JTS Here]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Joomla! Health, Installation and Security Audit&amp;lt;/b&amp;gt; (HISA) is a single standalone script that provides purely configuration information. [http://joomlacode.org/gf/project/hisa/ Download HISA Here]&lt;br /&gt;
&lt;br /&gt;
*[http://forum.joomla.org/viewtopic.php?t=136328 Forum Discussion Here] (Project is [http://forum.joomla.org/viewtopic.php?p=1804483#p1804483 &#039;&#039;Dormant&#039;&#039;] since August 2010)&lt;br /&gt;
&lt;br /&gt;
*[http://www.joomlatutorials.com/joomla-tips-and-tricks/40-miscellaneous-joomla-tips/114-how-to-troubleshoot-a-joomla-installation.html How to TroubleShoot A Joomla! Installation]&lt;br /&gt;
&lt;br /&gt;
Another &amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;Indirect method&amp;lt;/span&amp;gt;, and possibly not 100% reliable, is that if you are unable to make use of .htaccess on Linux hosting and Apache based servers then you are either running in CGI mode or your host has disabled the use of .htaccess even if your server is running PHP as an Apache Module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color: maroon&amp;quot;&amp;gt;Remove these files immediately after use, the information contained in their output is extensive and explicit regarding your PHP and server configurations, it will help those wishing to cause your site harm&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;For those wishing to know more about &amp;quot;How To...&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Running PHP as an Apache module&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
To configure Apache to load PHP as a module to &amp;lt;i&amp;gt;&#039;parse&#039;&amp;lt;/i&amp;gt; your PHP scripts, the httpd.conf needs to be modified, typically found in &amp;quot;c:\Program Files\Apache Group\Apache\conf\&amp;quot; or &amp;quot;/etc/httpd/conf/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Search for the section of the file that has a series of commented out &amp;quot;LoadModule&amp;quot; statements. (Statements prefixed by the hash &amp;quot;#&amp;quot; sign are regarded as having been commented out.) If PHP is running in &amp;quot;Apache Module&amp;quot; Mode you should see something very similar to the following;&lt;br /&gt;
&lt;br /&gt;
LoadModule php4_module &amp;quot;c:/php/php4apache.dll&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;Apache 1.x&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP5&amp;lt;/b&amp;gt;&lt;br /&gt;
 LoadModule php5_module     C:/php/php5apache2.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 LoadModule php5_module     /usr/lib/apache/libphp5.so&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP4&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php4_module libexec/libphp4.so&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LoadModule php4_module C:/php/php4apache.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;and&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
 AddModule mod_php4.c&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;or&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 AddModule mod_php5.c&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;Apache 2.x&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP5&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php5_module     C:/php/php5apache2.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php5_module     /usr/lib/apache/libphp5.so&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;For PHP4&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LoadModule php4_module     libexec/libphp4.so&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;or (platform dependant)&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
LoadModule php4_module     C:/php/php4apache.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;and&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
AddModule mod_php5.c&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;or&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
AddModule mod_php4.c    &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Don&#039;t worry that you can&#039;t find a &amp;quot;mod_php4.c&amp;quot; or &amp;quot;mod_php5.c&amp;quot; file anywhere on your system. That directive does not cause Apache to search for the file on your system. For the curious, it specifies the order in which the various modules are enabled by the Apache server.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;If you&#039;re using Apache 2.x, you do not have to insert the AddModule directive. It&#039;s no longer needed in that version. Apache 2.x has its own internal method of determining the correct order of loading the modules.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now find the &amp;quot;AddType&amp;quot; section in the file, and add the following line after the last &amp;quot;AddType&amp;quot; statement:&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-php .php&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to support other file types, like &amp;quot;.php3&amp;quot; and &amp;quot;.phtml&amp;quot;, simply add them to the list, like this:&amp;lt;&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-php .php3&amp;lt;br /&amp;gt;&lt;br /&gt;
 AddType application/x-httpd-php .phtml&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run a syntax check and if all is ok, restart Apache...&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Running PHP as a CGI binary&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
To configure PHP to run as a CGI, again you will need to configure the&lt;br /&gt;
httpd.conf, but confirm that the above settings are not also&lt;br /&gt;
configured, unless you now what you are doing you can generate yourself&lt;br /&gt;
&amp;quot;HTTP 500&amp;quot; errors. Search your Apache configuration file for the&lt;br /&gt;
&amp;quot;ScriptAlias&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
Add the following line below after the ScriptAlias for &amp;quot;cgi-bin&amp;quot;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The location will depend on where PHP is installed on your system, you&lt;br /&gt;
should substitute the appropriate path in place of &amp;quot;c:/php/&amp;quot; (for&lt;br /&gt;
example, &amp;quot;c:/Program Files/php/&amp;quot;).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ScriptAlias /php/ &amp;quot;c:/php/&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apache&lt;br /&gt;
again needs to be configured for the PHP MIME type. Search for the&lt;br /&gt;
&amp;quot;AddType&amp;quot; section, and add the following line after it:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AddType application/x-httpd-php .php&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As in the case of running PHP as an Apache module, you can add whatever extensions you want Apache to recognise as PHP scripts, such as:&lt;br /&gt;
&lt;br /&gt;
AddType application/x-httpd-php .php3&amp;lt;br /&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php .phtml&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, you will need to tell the server to execute the PHP executable each time it encounters a PHP script. Add the following below any existing entries in the &amp;quot;Action&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
Action application/x-httpd-php &amp;quot;/php/php.exe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you notice, we have used the &amp;quot;ScriptAlias&amp;quot; reference, &amp;quot;/php/&amp;quot; portion&lt;br /&gt;
will be recognised as the scriptAlias configured above, this is sort a path alias which will correlate to your PHP installation path configured previously. &amp;lt;i&amp;gt;In other words, don&#039;t put &amp;quot;c:/php/php.exe&amp;quot; or &amp;quot;c:/Program Files/php/php.exe&amp;quot; in that directive, put&lt;br /&gt;
&amp;quot;/php/php.exe&amp;quot;, Apache WILL work it out if correctly configured.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: navy&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Configuring the Default Index Page&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
This section applies to all users, whether you are loading PHP as a module or running it as a CGI binary, and has been seen often enough to warrant a mention.&lt;br /&gt;
&lt;br /&gt;
If you want to make your PHP script execute as the default page for a directory, you have to add another line to the &amp;quot;httpd.conf&amp;quot;. Simply search for the line in the file that begins with a &amp;quot;DirectoryIndex&amp;quot; and add &amp;quot;index.php&amp;quot; to the list of files on&lt;br /&gt;
that line. For example, if the line used to be:&lt;br /&gt;
&lt;br /&gt;
DirectoryIndex index.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;change it to&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DirectoryIndex index.html index.php&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;If you still wish .html files to be executed before .php files&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;or&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
DirectoryIndex index.php index.html&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;If you wish .php files to be executed before .html files&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next time you access the site or a directory within a site without a&lt;br /&gt;
filename, Apache will &amp;quot;auto-magically&amp;quot; deliver &amp;quot;index.php&amp;quot; if&lt;br /&gt;
available, or &amp;quot;index.html&amp;quot; if &amp;quot;index.php&amp;quot; is not available.&lt;br /&gt;
&lt;br /&gt;
== Why shouldn&#039;t I use PHP safe_mode? ==&lt;br /&gt;
&#039;&#039;&#039;Overview&#039;&#039;&#039;&lt;br /&gt;
Enabling safe_mode is not needed if other reasonable security precautions are followed. Using safe_mode for web site security is a poor compromise in a bad situation. It may make sense in some situations, but there is almost always a better way. Because safe_mode in some sense only gives the illusion of safety, it will be removed from PHP starting with version 6.0.&lt;br /&gt;
&lt;br /&gt;
The Joomla! core works fine with or without PHP safe_mode. The one exception to this rule is the installation script. This is because safe_mode, by design, turns off the PHP functions that enable easy uploading via a Web browser. If you do use safe_mode, and need to perform installs via the Web browser, temporarily turn safe_mode OFF, and turn it back ON when finished.&lt;br /&gt;
&lt;br /&gt;
Some third-party extensions may require the specific PHP functions that are blocked by safe_mode. Such extensions should be carefully evaluated to be sure you understand exactly why they require such powerful and potentially dangerous functions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the official PHP site&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;The PHP safe mode is an attempt to solve the shared-server security problem. It is architecturally incorrect to try to solve this problem at the PHP level, but since the alternatives at the web server and OS levels aren&#039;t very realistic, many people, especially ISP&#039;s, use safe mode for now.&amp;quot;&#039;&#039; &lt;br /&gt;
&#039;&#039;&#039;More Information&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# [http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode Official PHP Manual: PHP Security and Safe Mode Configuration Directives]&lt;br /&gt;
# [http://us3.php.net/manual/en/features.safe-mode.functions.php Official PHP Manual: PHP Functions restricted/disabled by safe mode]&lt;br /&gt;
&lt;br /&gt;
= Development =&lt;br /&gt;
== How do I setup a secure demo site? ==&lt;br /&gt;
&lt;br /&gt;
In /includes/version.php look for:&lt;br /&gt;
&lt;br /&gt;
 /** @var string Whether site is a production = 1 or demo site = 0 */&lt;br /&gt;
 var $SITE = 1;&lt;br /&gt;
 /** @var string Whether site has restricted functionality mostly used for demo sites: 0 is default */&lt;br /&gt;
 var $RESTRICT = 0;&lt;br /&gt;
&lt;br /&gt;
For a demo site it is advised to following:&lt;br /&gt;
&lt;br /&gt;
 /** @var string Whether site is a production = 1 or demo site = 0 */&lt;br /&gt;
 var $SITE = 0;&lt;br /&gt;
 /** @var string Whether site has restricted functionality mostly used for demo sites: 0 is default */&lt;br /&gt;
 var $RESTRICT = 1;&lt;br /&gt;
&lt;br /&gt;
 $SITE = 0&lt;br /&gt;
 // Allows multiple user logins with only one account. By default Joomla! &lt;br /&gt;
 // allows only one active session per account as a security feature.&lt;br /&gt;
&lt;br /&gt;
 $RESTRICT = 1&lt;br /&gt;
 // Disables those logging in, both Front-end and Back-end from changing &lt;br /&gt;
 // user details - like password and username&lt;br /&gt;
&lt;br /&gt;
These settings are used on the official demo site http://demo.joomla.org&lt;br /&gt;
&lt;br /&gt;
You should also make all files and folders nonwriteable - especially the configuration.php file. Also recommend you setup an automatic cron job that refreshes the database at a set interval (in our case 60mins) from a db script.&lt;br /&gt;
&lt;br /&gt;
== How can I view a live site while developing, but hide it from others? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The method described below should be used for relatively minor modifications, such as adjusting menus or quickly reorganizing content sections. More complex tasks, such as installing new components or adjusting complex configuration settings should be performed and tested on a development server first. Not only does this keep your public site up and running, but it also lets you test at your leisure, thus reducing errors. One way to do it is to create a sub-domain (i. e., dev.yourdomain.com) and install Joomla! there just as it is installed on your public site.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Login to the administrator section, and choose: Site &amp;gt; Global Configuration.&lt;br /&gt;
&lt;br /&gt;
2. The first option you&#039;ll see is is to set the site offline. Choose &amp;quot;Yes&amp;quot; and press the Save button. This will hide prevent display of all site pages, and replace them with the following message:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;This site is down for maintenance. Please check back again soon. message instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3. While you are logged into the &amp;quot;back end&amp;quot; administrator system, you can still view the &amp;quot;front end,&amp;quot; by choosing Site &amp;gt; Template &amp;gt; Preview. This will display the site as it would appear to users along with a warning at the top that the site is down for maintenance.&lt;br /&gt;
&lt;br /&gt;
= Site Recovery =&lt;br /&gt;
&lt;br /&gt;
== Help! My site&#039;s been compromised. Now what? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Change all relevant passwords:&#039;&#039;&#039; Assume your passwords have been harvested and immediately change all critical passwords, including shell access, FTP access, Joomla! Administrator accounts, and the database account.&lt;br /&gt;
# &#039;&#039;&#039;Check raw logs:&#039;&#039;&#039; Identify when and how the attackers gained access to your site by carefully reviewing your raw server logs. Make careful note of the date/time and names of attacked files. Note that these logs may have been deleted or altered, so a lack of evidence does not prove a lack of activity.&lt;br /&gt;
# &#039;&#039;&#039;List recently modified files:&#039;&#039;&#039; Before making any changes to your site, generate a list of recently modified files. Here&#039;s a php script that will list the files for you. Remove this script as soon as you have your list and don&#039;t publish a link to it!&lt;br /&gt;
# &#039;&#039;&#039;Note suspicious newly-created files:&#039;&#039;&#039; Use this list to identify new files that don&#039;t belong. Pay particular attention to their creation and modification dates, and correlate them to the dates of attacks shown in your log files.&lt;br /&gt;
# &#039;&#039;&#039;Note suspicious recently-modified files:&#039;&#039;&#039; Check the modified files list for any files that were recently changed. Pay particular attention to the modification, and correlate them to the dates of attacks shown in your log files.&lt;br /&gt;
# &#039;&#039;&#039;Check for bogus CRON Jobs:&#039;&#039;&#039; Hacked cron jobs can be setup to reinfect your site over and over again.&lt;br /&gt;
# &#039;&#039;&#039;Coordinate with your host:&#039;&#039;&#039; If you have identified how you were cracked, report the method to your host. If you are on a shared server, you may habe been attacked through another vulnerable site on your server. Report this to your host. A reputable host will appreciate your efforts in this area.&lt;br /&gt;
# &#039;&#039;&#039;Delete the entire public_html directory:&#039;&#039;&#039; This is the best way to guarantee that every potential vulnerability in that site is removed.&lt;br /&gt;
# &#039;&#039;&#039;Delete related database records:&#039;&#039;&#039; This step may only be possible if you have good backups. Simple script kiddies, who are only trying to mark your index page, may not attack your database, but professionals are usually very interested in confidential data, such as passwords. They may pose as script kiddies to avoid suspicion while repeatedly harvesting confidential information from your database.&lt;br /&gt;
# &#039;&#039;&#039;Reinstall everything:&#039;&#039;&#039; Use pre-crack backups. If you don&#039;t have good backups, go on to step 10.&lt;br /&gt;
# &#039;&#039;&#039;Reset critical passwords again:&#039;&#039;&#039; You must reset your passwards again now that your server is finally cleaned of any possible, hidden trojan horses.&lt;br /&gt;
# &#039;&#039;&#039;Rebuild site:&#039;&#039;&#039; If you are unable to rebuild from clean backups, rebuild your entire site using original, pre-crack installs. Use only the latest stable versions of all software, and check the List of Vulnerable Extensions&lt;br /&gt;
# &#039;&#039;&#039;Review security processes:&#039;&#039;&#039; Follow standard security precautions for important settings in php.ini, globals.php, configuration.php, .htaccess, etc.&lt;br /&gt;
# &#039;&#039;&#039;Review backup processes:&#039;&#039;&#039; If you don&#039;t already have one, add a dependable backup process to your site administration practices.&lt;br /&gt;
# &#039;&#039;&#039;Stay watchful:&#039;&#039;&#039; Attackers often return repeatedly. Closely monitor your raw logs for suspicious activity.&lt;br /&gt;
&lt;br /&gt;
==How do I reset an administrator password?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; This method is for Joomla versions up to and including 1.0.12{{JVer|1.0}}. For later versions of Joomla and Joomla 1.5.xx versions please use this &#039;&#039;&#039;([[How_do_you_recover_your_admin_password%3F|FAQ]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Because passwords are stored using a one-way MD5 hash which prevents recovering the password, you cannot recover an existing password, but you can reset it to a new password by editing the password field in the database. In the following directions, you will set the password MD5 value to a known value and then log-in using the password that matches that value. Once logged in, you can change the password again using normal Joomla! user access screens.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhanced Password Encryption Note Joomla! 1.0.13+ and Joomla! 1.5.x&#039;&#039;&#039;&lt;br /&gt;
This method works with the new salt-enhanced passwords. This is because Joomla! will automatically update passwords in the earlier format.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Use a MySQL utility such as phpMyAdmin or MySQL Query Browser .&lt;br /&gt;
&lt;br /&gt;
2. Open the correct database and select the table, jos_users . (Change default table prefix, &#039;jos_&#039; to your table prefix if it is different.)&lt;br /&gt;
&lt;br /&gt;
3. Select the record (or table row) for your administrator account. (The default Super Administrator is user number 62.)&lt;br /&gt;
&lt;br /&gt;
4. Copy and paste a known MD5 hash into the password field. You can use one of the below examples.&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; You must paste the password&#039;s hash value, not the password itself. You can use any of the following hashs, or create your own using one of the MD5 tools listed below.&lt;br /&gt;
&lt;br /&gt;
 password = &amp;quot;MD5 hash of password&amp;quot;&lt;br /&gt;
 ------------------------------------------------------&lt;br /&gt;
 admin = 21232f297a57a5a743894a0e4a801fc3&lt;br /&gt;
 secret = 5ebe2294ecd0e0f08eab7690d2a6ee69&lt;br /&gt;
 OU812 = 7441de5382cf4fecbaa9a8c538e76783&lt;br /&gt;
&lt;br /&gt;
5. Save the user record.&lt;br /&gt;
&lt;br /&gt;
6. Point a browser to your site and log in using the Super Administrator account you just modified.&lt;br /&gt;
&lt;br /&gt;
7. &#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; Once logged in, use the Joomla interface to change the password to one that only you know. This step is vital as it will &#039;salt&#039; your new password, thus adding an additional level of security on top of the MD5 hash.&lt;br /&gt;
&lt;br /&gt;
Note: This technique can be used to modify any other accounts password. You can also use it to change Usernames.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generating your own MD5 hash from a password of your choice&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can set the password to a value of your own choice. Use tools, such as the following, to create your own strong hashed password. Use the above directions once you&#039;ve generated a hash with these tools.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Online MD5 hash creation tools&#039;&#039;&#039;&lt;br /&gt;
* JavaScript MD5 - http://pajhome.org.uk/crypt/md5/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free MD5 utilities for download&#039;&#039;&#039;&lt;br /&gt;
* MD5 &amp;amp; Hashing Utilities - http://www.digital-detective.co.uk/freetools/md5.asp&lt;br /&gt;
* SlavaSoft HashCalc - http://www.slavasoft.com/hashcalc/overview.htm&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other MD5 tools&#039;&#039;&#039;&lt;br /&gt;
* There are many free online and downloadable MD5 utilities. Google &amp;quot;MD5 hash tool&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== How do I find exploits using the *NIX shell? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Check the active processes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use the &amp;quot;ps&amp;quot; command to look for odd or unknown processes, if you aren&#039;t sure what to look for there, user &amp;quot;netstat -ae | grep irc&amp;quot; and/or &amp;quot;netstat -ea | grep 666&amp;quot; and look for ports 6666, 6667, 6668, 6669, these are common ports used for running IRC bots, they may have the name &amp;quot;irc&amp;quot; listed against them, or may have &amp;quot;httpd&amp;quot; or sometimes other regular services names.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Check crontab&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Check your crontab and see if there is a strange entry, these are used in many exploits to restart IRC bots, even when admins or automated process monitors are used to kill a rogue process.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Check for hidden files or directories&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Check for hidden files or directories you dont expect to see, those starting with &amp;quot;.&amp;quot; (dots) and also look for &amp;quot;. &amp;quot; (dot, space) often favored to try and catch searches for hidden directories.&lt;br /&gt;
&lt;br /&gt;
Other examples of searches that may help pin down exploits and/or unexpected files and folders:&lt;br /&gt;
&lt;br /&gt;
 find /home -type f | xargs grep -l MultiViews&lt;br /&gt;
 find . -type f | xargs grep -l base64_encode &amp;lt;&amp;lt;&amp;lt; this can produce false positives, it is valid in many mail/graphics scripts&lt;br /&gt;
 find . -type f | xargs grep -l error_reporting&lt;br /&gt;
 find / -name &amp;quot;[Bb]itch[xX]&amp;quot;&lt;br /&gt;
 find / -name &amp;quot;psy*&amp;quot;&lt;br /&gt;
 ls -lR | grep rwxrwxrwx &amp;gt; listing.txt&lt;br /&gt;
&lt;br /&gt;
== What are these strange (URL-Encoded) characters doing in my code? ==&lt;br /&gt;
&lt;br /&gt;
Overview&lt;br /&gt;
&lt;br /&gt;
Attackers sometimes hide code away from prying eyes by URL Encoding it.&lt;br /&gt;
&lt;br /&gt;
The purpose of URL Encoding is to allow non-URL compatible characters to be passed via the URL. There are many legitimate reasons for doing this, such as hiding email from spammers, dealing with spaces in file names. etc.&lt;br /&gt;
&lt;br /&gt;
However, if you find odd, URL-encoded text in your site&#039;s files, you should investigate immediately. URL encoded text is very easy to translate using PHP, javascript, or one of the many free, online translators.&lt;br /&gt;
&lt;br /&gt;
Here are some trivial, non-functioning examples of URL Encoded text:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Original&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;URL Encoded&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;this line has spaces&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;this%20line%20has%20spaces&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eval(evil_script(http://www.evilsite/?evilscript.pl&amp;quot;));&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;%65val%28%65%76il_%73cri%70t&lt;br /&gt;
%28%68tt%70%3A//%77%77%77.&lt;br /&gt;
%65%76il%73ite/%3F%65%76il%73&lt;br /&gt;
cript.%70l%22%29%29%3B&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# [http://www.linkedresources.com/tools/unescaper_v0.2b1.html Text Unescape Utility]&lt;br /&gt;
# [http://www.w3schools.com/tags/ref_urlencode.asp HTML URL-encoding Reference]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KEEP THIS AT THE END OF THE PAGE --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Security]]&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Security_FAQ]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76261</id>
		<title>Security Checklist/Where can you learn more about file permissions?</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Security_Checklist/Where_can_you_learn_more_about_file_permissions%3F&amp;diff=76261"/>
		<updated>2012-10-08T22:39:05Z</updated>

		<summary type="html">&lt;p&gt;Phild: removed links that were in violation of policy from page.pending making new pages/links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{underconstruction}}&lt;br /&gt;
&lt;br /&gt;
* Unix Permissions Primer&lt;br /&gt;
* Using phpSuExec&lt;br /&gt;
* Windows Permissions Primer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Installation FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phild</name></author>
	</entry>
</feed>