<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Powered By &#187; Plone Basics</title>
	<atom:link href="http://www.powered-by.org/category/top-cms/plone/plone-basics/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.powered-by.org</link>
	<description>Content Management System News and Updates</description>
	<lastBuildDate>Fri, 23 Jul 2010 09:25:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Security overview of Plone</title>
		<link>http://www.powered-by.org/top-cms/plone/plone-basics/security-overview-of-plone/</link>
		<comments>http://www.powered-by.org/top-cms/plone/plone-basics/security-overview-of-plone/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 06:55:25 +0000</pubDate>
		<dc:creator>powered-by.org</dc:creator>
				<category><![CDATA[Plone Basics]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Plone]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[security issue]]></category>
		<category><![CDATA[security issues]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.powered-by.org/top-cms/plone/plone-basics/security-overview-of-plone/</guid>
		<description><![CDATA[The ten most common security issues in web applications, and how Plone addresses them. Below is a list of the 10 most common security vulnerabilities in web applications, and how Plone addresses these. The full background for this list can be found at the Open Web Application Security Project web site. Problem A1: Unvalidated Input [...]]]></description>
			<content:encoded><![CDATA[<p>The ten most common security issues in web applications, and how Plone addresses them.</p>
<p>Below is a list of the 10 most common security vulnerabilities in web applications, and how Plone addresses these. The full background for this list can be found at the <a href="http://www.owasp.org/index.php/Top_10_2007#Summary" target="_blank">Open Web Application Security Project</a> web site.</p>
<p><span id="more-326"></span></p>
<dl>
<dt>Problem A1: Unvalidated Input </dt>
<dd>How Plone handles this: All input in Plone is validated, and the framework makes sure you can never input data that is not of the required type. This is probably the number one reason why Plone sites — even when deployed and developed by people new to web security — are not compromised. </dd>
<dt>Problem A2: Broken Access Control </dt>
<dd>How Plone handles this: Plone is based on the well-proven (7 years in production), flexible and granular ACL/roles-based security model of Zope. In addition, Plone utilizes an innovative workflow approach to security, which means that end-users never see or modify the security settings — they only work with security presets that have been supplied to them by the developers of the application. This makes the potential for security errors orders of magnitude less likely to happen. </dd>
<dt>Problem A3: Broken Authentication and Session Management </dt>
<dd>How Plone handles this: Plone authenticates users in its own database using a SHA-1 hash of their password. Using its modular authentication system Plone can also authenticate users against common authentication systems such as LDAP and SQL as well as any other system for which a plugin is available (Gmail, OpenID, etc.). After authentication, Plone creates a session using a SHA-1 hash of a secret stored on the server and the userid (HMAC-SHA-1). Secrets can be refreshed on a regular basis to add extra security where needed. Note: Older Plone versions (i.e. before Plone 3) use a less secure method where a session cookie containing both the loginname and password for a user are used. It is highly recommended to enforce use of HTTPS encryption for such sites. </dd>
<dt>Problem A4: Cross Site Scripting </dt>
<dd>How Plone handles this: Plone has strong filtering in place to make sure that no potentially malicious code can ever be entered into the system. All content that is inserted is stripped of malicious tags like <code>&lt;script&gt;</code>, <code>&lt;embed&gt;</code> and <code>&lt;object&gt;</code>, as well as removing all <code>&lt;form&gt;</code> related tags, stopping users from impersonating any kind of HTTP POST requests. All destructive operations (like deletion of content) and privilege elevation (roles, permissions) are checked to be valid HTTP POST request in addition to the usual security checking. On an infrastructure level, the template language used to create pages in Plone quotes all HTML by default, effectively preventing cross site scripting. </dd>
<dt>Problem A5: Buffer Overflow </dt>
<dd>How Plone handles this: Buffers overflow vulnerabilities are not known to exist in the current versions of Python, and is usually more common in systems based on languages that do not have strict checking for this, like C. </dd>
<dt>Problem A6: Injection Flaws </dt>
<dd>How Plone handles this: This is usually common in systems that use SQL for its content storage. Plone does not use SQL by default, and when setting up SQL databases with Plone, they always communicate through a standard SQL connector that neutralizes injection attempts automatically. </dd>
<dt>Problem A7: Improper Error Handling </dt>
<dd>How Plone handles this: Plone provides almost information on the front end (no stack traces etc) when there is an error, but logs the error internally instead. All the front-end user will see is the log entry number of the error that was caused, allowing the error to be located in the logs if it is reported to the site admin. </dd>
<dt>Problem A8: Insecure Storage </dt>
<dd>How Plone handles this: All the cryptographic methods in use in the Plone stack are been exposed to public scrutiny for years, and have no known vulnerabilities. </dd>
<dt>Problem A9: Application Denial of Service </dt>
<dd>How Plone handles this: The most common setup for a Plone site is to utilize a caching proxy like Squid, Varnish, Apache or IIS. When configured in this way, it&#8217;s very hard to bring down a Plone site with DoS attacks. (Note: In versions earlier than Plone 2.1.4 and 2.5.1, there was a potential Denial of Service attack identified in the error page of Plone, which was unnecessarily heavy. This was fixed as part of a bigger security audit performed in the same timeframe, and the current releases of Plone do not suffer from this problem. </dd>
<dt>A10 Insecure Configuration Management </dt>
<dd>How Plone handles this: Plone has very strict security defaults out-of-the-box, and also runs as an unprivileged user on the server. Web users do not have access to the file system. Because of these factors, the most common security configuration vulnerabilities in this area are avoided. </dd>
</dl>
<h4>Security track record</h4>
<p>Measuring or quantifying security risks in software is hard — security is a process, not a product, and thus requires constant vigilance and good coding practices combined with security reviews. One interesting measure is the number of vulnerabilities reported by the MITRE’s Common Vulnerabilities and Exposures database, which is the main source for tracking and naming security issues.</p>
<p>Here are some counts of the numbers of known vulnerabilities and exposures in some common CMS platforms and their technology stacks &#8211; also note that the Python/Zope/Plone stack has existed for several years longer than the others mentioned:</p>
<ul>
<li>Plone/Zope/Python stack:
<ul>
<li>CVE Entries containing Plone: 3</li>
<li>CVE Entries containing Zope: 15 (only 3 since 2004)</li>
<li>CVE Entries containing Python: 17</li>
</ul>
</li>
<li>PHP-based stacks:
<ul>
<li>CVE Entries containing Drupal: 22</li>
<li>CVE Entries containing Mambo: 31</li>
<li>CVE Entries containing Joomla: 20</li>
<li>CVE Entries containing MySQL: 99</li>
<li>CVE Entries containing PHP: 1258</li>
</ul>
</li>
<li>Other stacks:
<ul>
<li>CVE Entries containing Perl: 97</li>
</ul>
</li>
</ul>
<p>These numbers do not prove anything by themselves, of course — but do suggest a general trend, and are a good approximation of our security track record compared to other systems.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.powered-by.org/top-cms/plone/plone-basics/security-overview-of-plone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plone system resources for a small site</title>
		<link>http://www.powered-by.org/top-cms/plone/plone-basics/plone-system-resources-for-a-small-site/</link>
		<comments>http://www.powered-by.org/top-cms/plone/plone-basics/plone-system-resources-for-a-small-site/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 06:52:10 +0000</pubDate>
		<dc:creator>powered-by.org</dc:creator>
				<category><![CDATA[Plone Basics]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Plone]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.powered-by.org/top-cms/plone/plone-basics/plone-system-resources-for-a-small-site/</guid>
		<description><![CDATA[This article explains what kind of system resources are needed to run small Plone sites, specifically running a small site with few content objects and no dynamicity, e.g. a static company web site and not many hits. Content management system Plone and its application server Zope are designed for scalability and flexibility, so fixed resource [...]]]></description>
			<content:encoded><![CDATA[<p>This article explains what kind of system resources are needed to run small Plone sites, specifically running a small site with few content objects and no dynamicity, e.g. a static company web site and not many hits.<br />
Content management system Plone and its application server Zope are designed for scalability and flexibility, so fixed resource costs per Plone site might be high compared to other solutions (ASP, PHP).</p>
<p><span id="more-325"></span></p>
<p>Basic Plone system resources</p>
<p>To run Plone web site you need</p>
<p>* Some kind of machine (preferably Unix server, Windows works too) which is connected to Internet 24/7</p>
<p>* Ability to run arbitary daemon (background) processes on the server<br />
* Ability to open arbitary ports. Zope wants to open its own port for incoming requests.<br />
* Shell account for installing Plone + Zope and running control software</p>
<p>One could say that you need server root privileges to run Plone, though it&#8217;s technically possible without root privileges if the web hosting provider co-operates with you. Also, Plone gulps quite much RAM memory. Read more about it below. You might want to use virtual server, real server or Zope specific host company to run Plone web site, since most low end web hosting solutions don&#8217;t provide enough flexibility to run Plone. Google for &#8220;plone hosting&#8221; or &#8220;zope hosting&#8221;. One example company providing resourceful Zope hosting in Europe is Nidelven IT.</p>
<h3>Plone performance measuring and caching</h3>
<p>Plone doesn&#8217;t use any CPU when no pages are being loaded (in idle state).</p>
<p>When a page is being loaded, CPU usage maxes out to 100% per thread.</p>
<p>Because Plone CPU usage varies with the load, it&#8217;s useful to requets per seconds metric instead of CPU usage % to measure how much load the system can take.</p>
<h3>Caching</h3>
<p>Caching means that instead of regenerating the web page for each individual request, an old copy is kept lying around in memory/on disk and is served for consequent requests. Since the same once generated data is recycled, we improve performance by not going a long process of fetching data from a database, fitting it into page templates and finally converting to HTML.</p>
<p>Without caching, Plone is not suitable for heavy traffic sites (more than few visitors per minute).</p>
<h3>Static caching</h3>
<p>Here I use term &#8216;static caching&#8217; for a method where the whole site is kept in the cache and real-time modified content is available for certain users only. This method is suitable for company web pages and other, closed, non-interactive content.</p>
<p>Pros</p>
<p>* Very easy to set-up<br />
* Very efficient</p>
<p>Cons</p>
<p>* The site cannot have dynamic content (e.g. discussion) or other content which anyone could update</p>
<p>The easiest way to do static caching is to put a front end server at the front of Plone. The front end server takes all requests and caches them over a certain time period until it fetches new content from the server.</p>
<p>The most popular ways are using Apache web server&#8217;s mod_proxy module and Squid proxy.</p>
<p>With Apache 2 caching site content using mod_proxy, speed increase drastically (x 100). This is because pages are served directly from memory cache, instead of being regenerated each time a request is made. You should find plenty of tutorials from plone.org/documentation and Google how to put Apache 2 to the front of Zope to cache requets.</p>
<p>Also, Apache&#8217;s mod_deflate plug-in can used to GZip compress HTML, JS and CSS code before sending it over the wire. Most of desktop web browsers support GZip&#8217;ed content. This decreases bandwidth requirements, since HTML and other text based content compresses well.</p>
<h3>Dynamic caching</h3>
<p>Plone 2.5 ships with an add-on product called Cache Fu. Cache Fu allows fine tuned control of caching</p>
<p>* Caching only static items with a front end cache (Apache/Squid)<br />
* Increasing Zope database performance by tuning internal database object caches<br />
* Setting HTTP headers so that user web browsers itself cache the content propeply</p>
<p>Pros</p>
<p>* Propeply set up Cache Fu ensures that live content is always up-to-date (thus, the name dynamic caching), but static content is served at the maximum possible speed</p>
<p>Cons</p>
<p>* Setting up Cache Fu needs insight to HTTP request mechanisms and Plone internals</p>
<p>For more information see the documentation supplied with Cache Fu.</p>
<p>Note that Zope doesn&#8217;t reserve all memory on boot up. You need to browse around the site to make page loads and you can see memory usage increasing (until every page is load).</p>
<p>Spikes and Python memory management</p>
<p>When you upload a big content object (e.g. a high resolution image) Python memory usage spikes up since Python needs to allocate memory for processing the image. This image might not never freed back to the system and thus task manager utilities like top report Python to plenty of memory. However, this memory is not actively used and it&#8217;s swapped out. Read more about Python memory allocation.</p>
<h3>Zope packing</h3>
<p>Zope database stores information for all object revisions (each edit, delete) for undoing changes. Unless you want to have ability to track down each change, you can pack Zope database now and then to decrease it&#8217;s size. It can be done via Zope management interface control panel.</p>
<p><a href="http://plone.org/documentation/how-to/plone-system-resources-for-a-small-site" target="_blank">Source :</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.powered-by.org/top-cms/plone/plone-basics/plone-system-resources-for-a-small-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
