<?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>WP Engineer &#187; security</title>
	<atom:link href="http://wpengineer.com/tag/security/feed/" rel="self" type="application/rss+xml" />
	<link>http://wpengineer.com</link>
	<description>WordPress News, Hacks, Tips, Tutorials, Plugins and Themes</description>
	<lastBuildDate>Mon, 21 May 2012 22:48:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Use Constants for deactivate the Editor in WordPress Backend</title>
		<link>http://wpengineer.com/2261/use-constants-for-deactivate-the-editor-in-wordpress-backend/</link>
		<comments>http://wpengineer.com/2261/use-constants-for-deactivate-the-editor-in-wordpress-backend/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 10:22:40 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[WordPress Hacks]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WP3.0]]></category>

		<guid isPermaLink="false">http://wpengineer.com/?p=2261</guid>
		<description><![CDATA[WordPress is known for, that several constants lie dormant in the core and often provide quick solutions. In this context I have recently come across two little strings in the core of the backend editor of WordPress and in the core for updating the system as well. As far as I know, all constants mentioned [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress is known for, that several constants lie dormant in the core and often provide quick solutions. In this context I have recently come across two little strings in the core of the backend editor of WordPress and in the core for updating the system as well. As far as I know, all constants mentioned here are in the system since version 3.0.<br />
<span id="more-2261"></span><br />
The first constant takes off the editors of the backend and does not allow access to it. This makes the editing of Theme and Plugin files of the backend with standard solutions not possible.</p>
<pre class="php">
// for enabling/disabling theme/plugin editor
define( &#039;DISALLOW_FILE_EDIT&#039;, TRUE );
</pre>
<p>The second constant presented here prohibits editing, modifying or changing the core files, Plugins or Themes. In this context the menu entries in the backend are not visible or usable. Thus the update is not so easy to do and clients and unauthenticated users are blocked quickly.</p>
<pre>
// Disallow anything that creates, deletes, or edits core, plugin, or theme files.
// Files in uploads are excepted.
define( &#039;DISALLOW_FILE_MODS&#039;, TRUE );
</pre>
<p>In this context there are two constants that are useful now and then.</p>
<p>In various contexts it is very useful that all users have the option of: to write unfiltered HTML, in all aspects and this can also be easily implemented via constants:</p>
<pre>// Disallow unfiltered_html for all users, even admins and super admins
DISALLOW_UNFILTERED_HTML
</pre>
<p>Similar existing for uploads:</p>
<pre>// Allow uploads of filtered file types to users with administrator role
ALLOW_UNFILTERED_UPLOADS
</pre>
<p>The constants belong in the <code>wp-config.php</code> of the installation.<br />
<hr /><a href="http://wpplugins.com/plugin/281/snippets" title="More informations about this plugin for WordPress"><img src="http://wpengineer.com/wp-content/themes/wpe-3/images/snippets-125-125.png" height="90" alt="WordPress Snippet Plugin" /></a> <a href="http://xtreme-theme.com"><img src="http://wpengineer.com/wp-content/uploads/feed-banner-2.jpg" alt="Xtreme One WordPress Framework"/></a><br />
&copy; <a href="http://wpengineer.com/">WP Engineer Team</a>, All rights reserved <small>(Digital Fingerprint: WPEngineer-be0254ce2b4972feb4b9cb72034a092d)</small></p>
]]></content:encoded>
			<wfw:commentRss>http://wpengineer.com/2261/use-constants-for-deactivate-the-editor-in-wordpress-backend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disable password fields for non-admins</title>
		<link>http://wpengineer.com/2285/disable-password-fields-for-non-admins/</link>
		<comments>http://wpengineer.com/2285/disable-password-fields-for-non-admins/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 07:45:41 +0000</pubDate>
		<dc:creator>Latz</dc:creator>
				<category><![CDATA[WordPress Hacks]]></category>
		<category><![CDATA[backend tutorial]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://wpengineer.com/?p=2285</guid>
		<description><![CDATA[So you've created a user and added a strong password because you care for your blog's security? Unfortunately you can't be sure that the user will keep this strong password since he/she can change it to a much weaker one on his profile page. This problem can be solved by adding a filter: if ( [...]]]></description>
			<content:encoded><![CDATA[<p>So you've created a user and added a strong password because you care for your blog's security? Unfortunately you can't be sure that the user will keep this strong password since he/she can change it to a much weaker one on his profile page.<br />
This problem can be solved by adding a filter:<br />
<span id="more-2285"></span></p>
<pre>
if ( is_admin() )
  add_action( &#039;init&#039;, &#039;disable_password_fields&#039;, 10 );

function disable_password_fields() {
  if ( ! current_user_can( &#039;administrator&#039; ) )
    $show_password_fields = add_filter( &#039;show_password_fields&#039;, &#039;__return_false&#039; );
}
</pre>
<p>Now only a user with the administrator role can change the passwords of the users and make sure that they are using strong passwords.</p>
<hr /><a href="http://wpplugins.com/plugin/281/snippets" title="More informations about this plugin for WordPress"><img src="http://wpengineer.com/wp-content/themes/wpe-3/images/snippets-125-125.png" height="90" alt="WordPress Snippet Plugin" /></a> <a href="http://xtreme-theme.com"><img src="http://wpengineer.com/wp-content/uploads/feed-banner-2.jpg" alt="Xtreme One WordPress Framework"/></a><br />
&copy; <a href="http://wpengineer.com/">WP Engineer Team</a>, All rights reserved <small>(Digital Fingerprint: WPEngineer-be0254ce2b4972feb4b9cb72034a092d)</small></p>
]]></content:encoded>
			<wfw:commentRss>http://wpengineer.com/2285/disable-password-fields-for-non-admins/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Stop WordPress From Ever Logging Out</title>
		<link>http://wpengineer.com/2064/stop-wordpress-from-ever-logging-out/</link>
		<comments>http://wpengineer.com/2064/stop-wordpress-from-ever-logging-out/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 10:51:56 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[WordPress Hacks]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://wpengineer.com/?p=2064</guid>
		<description><![CDATA[You don't always want to login in WordPress - so I've turned off the login for my local development environment, since I don't need it. So far I know two ways how to do this, which I want to introduce you briefly. Decide for yourself which is the right way for you if you don't [...]]]></description>
			<content:encoded><![CDATA[<p>You don't always want to login in WordPress - so I've turned off the login for my local development environment, since I don't need it. So far I know two ways how to do this, which I want to introduce you briefly.<br />
Decide for yourself which is the right way for you if you don't need a login at all or just want to change the time frame before you logged out again.<br />
<span id="more-2064"></span></p>
<h3>The hard way</h3>
<p>The first code snippet is my own solution. WordPress gives you the possibility to replace some functions directly in the core, without Plugin or via Hooks. You can find all functions for this in <code>wp-includes/pluggable.php</code>. There you can find, since version 2.5 of WordPress, the function <code>wp_validate_auth_cookie()</code>. It takes care to check the login, which I replace in my local development environment, since my site it is not accessible for anybody else. This functions gives back, if you logged in correctly, the ID of the user and that's exactly what I'm doing. ID 1 for Admin, should exist if you didn't change it after the installation of WordPress.<br />
I put the following function in <code>wp-config.php</code>.</p>
<pre>
/**
 * Set authentication cookie.
 *
 * @param string $cookie Optional. If used, will validate contents instead of cookie&#039;s
 * @param string $scheme Optional. The cookie scheme to use: auth, secure_auth, or logged_in
 * @return bool|int False if invalid cookie, User ID if valid.
 */
//*
function wp_validate_auth_cookie( $cookie = &#039;&#039;, $scheme = &#039;&#039; ) {
	$user_ID = (int) 1; // admin user id
	return $user_ID;
}
//*/
</pre>
<h4>The block-comment-trick</h4>
<p>If you need under certain circumstances the login for some tests then you can comment out this function. I will explain briefly the comment characters in this code, which you probably noticed.</p>
<p>We talk about the following characters:</p>
<pre>
//*
function ...
//*/
</pre>
<p>I just have to change the slashes in <code>/*</code> and the content is comment out. I got this tip from <a href="http://aleembawany.com/2009/01/27/lazy-block-comment-trick/">Aleem Bawany</a>;  he explains it thoroughly in his article.</p>
<p>Alternatively, you can also create a safe option and go many other ways - this is my path and it is simple and controllable.</p>
<h3>Expand time of the cookie</h3>
<p>I found on <a href="http://wordpress.stackexchange.com/questions/515/whats-the-easiest-way-to-stop-wp-from-ever-logging-me-out">StackExchange</a> another solution, which is much more safe and probably usable on live sites. You just change via hook the time of the cookie. At default is the &#8222;Remember me&#8220;-Checkbox set to 14 days, the following function changes it to a year. So the actual login still exists, only the time frame changes.</p>
<pre>
function keep_me_logged_in_for_1_year( $expirein ) {
    return 31556926; // 1 year in seconds
}
add_filter( &#039;auth_cookie_expiration&#039;, &#039;keep_me_logged_in_for_1_year&#039; );
</pre>
<p>This <a href="http://wordpress.stackexchange.com/questions/515/whats-the-easiest-way-to-stop-wp-from-ever-logging-me-out">solution was published by Alex (Viper007Bond)</a> and it's worth reading the comments, especially about <code>create_function</code> within the filter hook.<br />
This function belongs in a Plugin or in the <code>functions.php</code> of the theme if it is necessary.</p>
<p>Two solutions with different approaches and usage. Maybe you know other solutions and let us know in the comment area.<br />
<hr /><a href="http://wpplugins.com/plugin/281/snippets" title="More informations about this plugin for WordPress"><img src="http://wpengineer.com/wp-content/themes/wpe-3/images/snippets-125-125.png" height="90" alt="WordPress Snippet Plugin" /></a> <a href="http://xtreme-theme.com"><img src="http://wpengineer.com/wp-content/uploads/feed-banner-2.jpg" alt="Xtreme One WordPress Framework"/></a><br />
&copy; <a href="http://wpengineer.com/">WP Engineer Team</a>, All rights reserved <small>(Digital Fingerprint: WPEngineer-be0254ce2b4972feb4b9cb72034a092d)</small></p>
]]></content:encoded>
			<wfw:commentRss>http://wpengineer.com/2064/stop-wordpress-from-ever-logging-out/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Small Security Tipps for your WordPress Install</title>
		<link>http://wpengineer.com/1796/small-security-tipps-for-your-wordpress-install/</link>
		<comments>http://wpengineer.com/1796/small-security-tipps-for-your-wordpress-install/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 11:08:52 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[WordPress Tutorials]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://wpengineer.com/?p=1796</guid>
		<description><![CDATA[WordPress enjoys great popularity and draw more attention of people who want to gain unauthorized access. As with any open-source software developers and attackers alike can view the code. The risk of spam links, the destruction of the blog and other attacks is therefore very high. But this article shows the possibilities to secure WordPress [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://wpengineer.com/wp-content/uploads/Protect-WordPress.jpg" alt="Protect-WordPress" title="Protect-WordPress" width="560" height="336" class="aligncenter size-full wp-image-1809" /><br />
WordPress enjoys great popularity and draw more attention of people who want to gain unauthorized access. As with any open-source software developers and attackers alike can view the code. The risk of spam links, the destruction of the blog and other attacks is therefore very high. But this article shows the possibilities to secure WordPress in many ways.</p>
<p><span id="more-1796"></span><br />
There are many ways to secure a WordPress installation. In this article we will show only those who are easy to implement with little effort in WordPress. Which possibilities you use always depends on the different options available. For example, if you have access to the server's configuration, you can already create a high level of security. Here it is only about security settings within WordPress.</p>
<h3>Install WordPress securely</h3>
<p>WordPress is known for its simple and uncomplicated installation. This fact has contributed in particular to the popularity of the software, but also ensures that many settings are equally on many installations. This allows hackers to set up at various initial positions and gain unauthorized access.</p>
<p>Already during the installation of WordPress, you should pay attention that your own blog has less in common with a default installation of WordPress. An installation that differs from the standard, makes it more difficult for potential intruders to unauthorized access. In this context, you should consider a few points when setting up a new installation of WordPress.</p>
<p>All tips are limited to the possibilities of the basic installation without extensions. However, there are also some useful Plugins for more security in WordPress, which are particularly for less experienced users an alternative.</p>
<h3>Table prefix</h3>
<p>Access to the database is configured in <code>wp-config.php</code>. In this file, the table prefix is defined which uses WordPress to create the database at installation. By default, this is the prefix "wp_". You should always configure a random prefix that does not meet the standard. You should also make sure that you are using only numbers, letters and underscore, because other characters are not supported.</p>
<h3>Authentication Unique Keys</h3>
<p>Also in <code>wp-config.php</code>, you have the ability to define four security keys to increase the safety of WordPress. The keys either created manually or via a generator at <a href="http://api.wordpress.org/secret-key/1.1/">wordpress.org</a>. The four keys are assigned to different cookies and are used at different places in order to increase the security of WordPress, so it is also important that every installation has different keys. The relevant keys are:</p>
<ul>
<li><code>AUTH_KEY</code> 	Is used for unsecure connections via http.</li>
<li><code>SECURE_AUTH_KEY</code> 	This constant can be realized through https secure..</li>
<li><code>LOGGED_IN_KEY</code> 	holds firmly to whether a user has logged in, not an administrative cookie.</li>
<li><code>NONCE_KEY</code> 	appaers at <code>$_POST</code>-queries of WordPress and can be used via extension with function <code>wp_nonce()</code>.</li>
</ul>
<p>If you update an existing installation of WordPress, the key should be supplemented here by the example of <code>AUTH_KEY</code>:</p>
<pre lang="php">define(&#039;AUTH_KEY&#039;, &#039;put your unique phrase here&#039;);</pre>
<h3>File and Folder Permissions</h3>
<p>Distinguish the rights of files and directories properly. Restricted Rights make it difficult for an attacker to alter files and directories.</p>
<p>Search engines usually take up to a certain depth, which they can get. Prevent using the <code>robots.txt </code>file to have access. The internal directory of WordPress shouldn't appear in any search results - a simple <code>Disallow</code> is enough.</p>
<p>Depending on server configuration, the possibility exists that you can list the contents of the folder in the browser. This must be prevented, which is quickly done by passing an empty <code>index.html</code> in each directory. Alternatively this can be done with the help of <a href="http://bueltge.de/wordpress-login-sicherheit-plugin/652/">Secure WordPress Plugins</a>.</p>
<h3>Rename <code>wp-content</code></h3>
<p>All extensions, files and themes are stored in the default installation folder <code>wp-content</code>. Often, themes or Plugins opens a security hole in the system, so it is possible since version 2.6, to enter an arbitrary name for that folder, and storing the folder elsewhere. With a new installation it can be done easy and fast. It can lead to problems with Plugins or themes, since not all authors check this path by using the available constants and functions. Therefore, this option is only recommended for experienced users.</p>
<p>To redefine the folder, it is sufficient to establish that with the help of the constants in the <code>wp-config.php</code>.</p>
<pre lang="php">
define(&#039;WP_CONTENT_DIR&#039;, ABSPATH . &#039;test&#039;);    // wp-content Directory
define(&#039;WP_CONTENT_URL&#039;, &#039;http://example.com/test&#039;);    // wp-content URL
</pre>
<h3>Secure access</h3>
<p>With version 2.6, a new option has been added to secure the back end of the installation: access via SSL - Secure Sockets Layer is an encryption protocol for transmitting data. Your internet provider must support the use of SSL. If so, you can enable the protocol in <code> wp-config.php </code>. To use the SSL capabilities in the backend, you must define <code>FORCE_SSL_LOGIN</code> with <code>TRUE</code>, not in quotes, it is a boolean value. From now on, all data is encrypted in the backend.</p>
<pre lang="php">
define (&#039;FORCE_SSL_LOGIN&#039;, true);
</pre>
<h3>Safety of existing installations</h3>
<p>Also existing blogs can be made safer with a few simple steps. If the blog is already active and the database is already filled with content, changing the table prefix have fatal consequences. Yet there is also the possibility here to change the prefix. These various steps with the help of SQL is required that you perform in the most appropriate interface. Alternatively, you can go down that route with the help of a Plugin. Any changes to the database requires a backup of current database in advance.</p>
<p>To change all ten standard tables, the following SQL statements are necessary. Have you more tables, for example because of Plugins, they must also be changed. Adjust the sample <code>wp_i1d_</code> to your requirements.</p>
<pre lang="php">
RENAME TABLE wp_comments to wp_i1d_comments;
RENAME TABLE wp_links to wp_i1d_links;
RENAME TABLE wp_options to wp_i1d_options;
RENAME TABLE wp_postmeta to wp_i1d_postmeta;
RENAME TABLE wp_posts to wp_i1d_posts;
RENAME TABLE wp_terms to wp_i1d_terms;
RENAME TABLE wp_term_relationships to wp_i1d_term_relationships;
RENAME TABLE wp_term_taxonomy to i1d_term_taxonomy;
RENAME TABLE wp_usermeta to wp_i1d_usermeta;
RENAME TABLE wp_users to wp_i1d_users;
</pre>
<p>Unfortunately, WordPress uses the installation prefix, to clearly identify some of the fields in the tables <code>options</code> and <code>usermeta</code>. Therefore, you must rename these fields.</p>
<pre lang="php">
UPDATE wp_i1d_options SET option_name = REPLACE(option_name, &#039;wp_&#039;, &#039;wp_i1d_&#039;);
UPDATE wp_i1d_usermeta SET meta_key = REPLACE(meta_key, &#039;wp_&#039;, &#039;wp_i1d_&#039;);
</pre>
<p>Since Plugins may be able to create fields with the prefix, it is advisable if you now search the database for the old prefix and change the values.</p>
<pre lang="php">
SELECT * FROM wp_i1d_options WHERE option_name LIKE &#039;wp_%&#039;;
SELECT * FROM wp_i1d_usermeta WHERE meta_key LIKE &#039;wp_%&#039;;
</pre>
<h3>Rename Username</h3>
<p>The user name of the default installation is admin and not only known to you. After an installation you should delete this user. Be sure to create a new administrator. This is done in the administration area and should be the first act after the initial login.</p>
<p>This will change not only the user name, but also the ID, which is after the initial installation 1. Two fields that makes it easy for an attacker if you don't change them.</p>
<p>Would you like to set a very large value for the ID, the manual option in the backend is very complicated, because WordPress is adding to each new user only 1. Alternatively, you can change this value via SQL or with the Plugin <a href="http://bueltge.de/wp-suchen-und-ersetzen-de-plugin/114">Search &#038; Replace</a>.</p>
<pre lang="php">
UPDATE `wp_users` SET `ID` = &#039;815&#039; WHERE `wp_users`.`ID` = 1;
UPDATE `wp_usermeta` SET `user_id` = &#039;815&#039; WHERE `wp_usermeta`.`user_id` = 1;
UPDATE `wp_posts` SET `post_author` = &#039;815&#039; WHERE `wp_posts`.`post_author` = 1;
UPDATE `wp_links` SET `link_owner` = &#039;815&#039; WHERE `wp_links`.`link_owner` = 1;
</pre>
<h3>Don't reveal WordPress version</h3>
<p>The version of WordPress is displayed in many parts of the blog, in your backend, feeds and in your theme. Each version has its quirks and errors that potential attackers are known.</p>
<p>For this reason, nobody should receive information about your WordPress installation. The simplest way to remove the version information from all areas (except the back end), is the use of <a href="http://bueltge.de/wordpress-login-sicherheit-plugin/652/">Secure WordPress Plugins</a>. Alternatively, it is sufficient to suppress the function of publishing the release.</p>
<pre lang="php">
add_filter( &#039;the_generator&#039;, create_function(&#039;$a&#039;, &quot;return null;&quot;) );
</pre>
<h3>Disable Error and Information messages</h3>
<p>The backend of WordPress can be reached via login with username and password. If the user produces an error, WordPress provides related tips to ease the login. As useful as the information for the user is, so it is also useful for unwanted intruders.</p>
<p>Consider whether you need to allow these messages, or want to, otherwise they can be disabled by the already mentioned Plugin <a href="http://bueltge.de/wordpress-login-sicherheit-plugin/652/">Secure WordPress Plugin</a>.</p>
<p>If the constant <code>WP-DEBUG</code> is defined in your <code>wp-config.php</code>, you need to set it on <code>FALSE</code> or delete, otherwise any error in WordPress will be displayed in your browser. This constant should be used only in the development environment of WordPress.</p>
<pre lang="php">define(&#039;WP_DEBUG&#039;, false);</pre>
<h3>Security via <code>.htaccess</code></h3>
<p>The possibilities with <code>.htaccess</code> are various and we can also secure WordPress sufficiently. Specifically, the different requirements should be considered here, because not infrequently the usability suffers from the security settings. Consider the safety of WordPress also from the perspective of users, not only from the administrator. You should also note the configuration of your web space, so that there will be no errors.</p>
<p>In principle, any directory can be protected, especially the folder <code>wp-admin</code>, because there are the files to get access to your backend stored. Access is controlled via <code>wp-login.php</code> and WordPress always forwards to it, no matter which unauthorized call was placed in wp-admin. It must be added a <code>.htpasswd </code> file, that contains user name and password. Various online generators can help you create the file contents.</p>
<pre lang="php">
# protect wp-login.php
&lt;files wp-login.php&gt;
AuthName &quot;Admin-Bereich&quot;
AuthType Basic
AuthUserFile /your_lokal_path/.htpasswd
require valid-user
&lt;/files&gt;
</pre>
<p>As already mentioned, the file <code>wp-config.php</code> contains the accesses to the database, which makes them especially worthy of protection. A few lines in <code>.htaccess</code> of the root are helpful.</p>
<pre lang="php">
# protect wp-config.php
&lt;files wp-config.php&gt;
Order deny,allow
deny from all
&lt;/files&gt;
</pre>
<p>If the server environment allow an open directory environment, it is advisable to either store the main index.html in each directory or block access via "Options Indexes" in the .htaccess.</p>
<p>The folder <code> wp-content</code> and <code>wp-includes</code> are worthy to protect. The following syntax shows a simple method to protect the respective folder.</p>
<pre lang="php">
Order Allow,Deny
Deny from all
&lt;Files ~ &quot;js/tinymce/*.$&quot;&gt;
Allow from all
&lt;/Files&gt;
&lt;Files ~ &quot;\.(css|jpe?g|png|gif|js)$&quot;&gt;
Allow from all
&lt;/Files&gt;
</pre>
<p>The file formats should be adapted and possibly be expanded and tested. Alternatively you can also use a Plugin solution that can greatly improve security and will decrease the work: <a href="http://www.askapache.com/wordpress/htaccess-password-protect.htm">AskApache Password Protect</a>.</p>
<h3>Conclusion</h3>
<p>PHP and security have been and are frequently discussed and sometimes makes a web programmer pretty nervous. Security with PHP is not a "secret science", already with a few basics you can make a WordPress extension safer. Even WordPress itself provides this functionality. WordPress is much used in different configurations and versions of PHP, so that we can discuss the issue on different levels. The featured selections are simple and almost everywhere doable, which should not be ignored, if you want to keep your blog under your control.<br />
<hr /><a href="http://wpplugins.com/plugin/281/snippets" title="More informations about this plugin for WordPress"><img src="http://wpengineer.com/wp-content/themes/wpe-3/images/snippets-125-125.png" height="90" alt="WordPress Snippet Plugin" /></a> <a href="http://xtreme-theme.com"><img src="http://wpengineer.com/wp-content/uploads/feed-banner-2.jpg" alt="Xtreme One WordPress Framework"/></a><br />
&copy; <a href="http://wpengineer.com/">WP Engineer Team</a>, All rights reserved <small>(Digital Fingerprint: WPEngineer-be0254ce2b4972feb4b9cb72034a092d)</small></p>
]]></content:encoded>
			<wfw:commentRss>http://wpengineer.com/1796/small-security-tipps-for-your-wordpress-install/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>WordPress Database Functions</title>
		<link>http://wpengineer.com/1746/wordpress-database-functions/</link>
		<comments>http://wpengineer.com/1746/wordpress-database-functions/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 13:21:45 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[WordPress Tutorials]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://wpengineer.com/?p=1746</guid>
		<description><![CDATA[The WordPress database class is quite extensive and provides a range of methods to work effectively with the database and thereby use the WordPress standard. You can find the class in /wp-includes/wp-db.php where the individual methods are documented. I show the most important ones and give some small examples. It is important to work with [...]]]></description>
			<content:encoded><![CDATA[<p>The WordPress database class is quite extensive and provides a range of methods to work effectively with the database and thereby use the WordPress standard.</p>
<p>You can find the class in <code>/wp-includes/wp-db.php</code> where the individual methods are documented.<br />
I show the most important ones and give some small examples. It is important to work with these opportunities to ensure the safety of Plugins.</p>
<p><span id="more-1746"></span><br />
For the following four methods I created some syntax examples.</p>
<ul>
<li><code>insert($table, $data, $format)</code> — insert a row into a table via arrays.</li>
<li><code>update($table, $data, $where, $format, $where_format)</code> — update a row in a table via arrays.</li>
<li><code>get_var($query, $x, $y)</code> — retrieve a single variable from the database.</li>
<li><code>query($query)</code> — perform a MySQL database query with current connection</li>
<li><code>get_results($query, $output)</code> — retrieve SQL result set from database… one or more rows.</li>
<li><code>escape($data)</code> — Escapes content for insertion into the database using addslashes(), for security</li>
</ul>
<p>Also interesting are the methods below.</p>
<ul>
<li><code>set_prefix($prefix)</code> — used to set table prefix for WordPress tables, can be used to override prefix at any time</li>
<li><code>prepare($query)</code> — safely prepares an SQL query for execution with sprintf()-like syntax.</li>
<li><code>get_row($query, $output, $y)</code> — retrieve a single row from the database.</li>
<li><code>get_col($query, $x)</code> — retrieve a single column from the database in array format.</li>
</ul>
<pre lang="php">
/**
 * insert
 */
$wpdb-&gt;insert( $wpdb-&gt;posts, array( &#039;post_title&#039; =&gt; $mytitle ) );

$wpdb-&gt;insert( $wpdb-&gt;options, array(
            &#039;option_name&#039;,
            &#039;new_option_key&#039;,
            &#039;option_value&#039; =&gt; &#039;New Option Value&#039;,
            &#039;autoload&#039; =&gt; &#039;yes&#039; )
            );

/**
 * update
 */
$wpdb-&gt;update( $wpdb-&gt;posts, array( &#039;post_title&#039; =&gt; $mytitle ),
            array( &#039;ID&#039; =&gt; $myid )
            );

$wpdb-&gt;update( $wpdb-&gt;options,
            array( &#039;option_value&#039; =&gt; &#039;New Option Value&#039; ),
            array( &#039;option_name&#039; =&gt; &#039;new_option_value&#039; )
            );

/**
 * get_var
 */
$post_id = $wpdb-&gt;get_var(
            $wpdb-&gt;prepare( &quot;SELECT post_id FROM
                    $wpdb-&gt;postmeta WHERE
                    post_id = %d AND
                    meta_key = &#039;enclosure&#039; AND
                    meta_value LIKE (%s)&quot;, $post_ID, $url . &#039;&amp;&#039; )
            );

$content = $wpdb-&gt;get_var(
            $wpdb-&gt;prepare(&quot;SELECT post_content FROM &quot; .
                    &quot;$wpdb-&gt;posts WHERE &quot; .
                    &quot;post_title = %s AND &quot; .
                    &quot;ID = %d&quot;, $title, $id )
        );

/**
 * query
 */
$wpdb-&gt;query( &quot;DELETE FROM $wpdb-&gt;options WHERE option_name = &#039;$name&#039;&quot; );

$wpdb-&gt;query( &quot;UPDATE $wpdb-&gt;posts SET post_title = &#039;$mytitle&#039; WHERE ID = $myid&quot; );

/**
 * query and escape
 */
$mytitle = $wpdb-&gt;escape( $mytitle );
$myid    = absint( $myid );
$wpdb-&gt;query( &quot;UPDATE $wpdb-&gt;posts SET post_title = &#039;$mytitle&#039; WHERE ID = $myid&quot; );

/**
 * get_results
 */
$type = $wpdb-&gt;get_results( &quot;SELECT post_type FROM &quot; .
                &quot;$wpdb-&gt;posts WHERE ID=$id&quot; );
</pre>
<hr /><a href="http://wpplugins.com/plugin/281/snippets" title="More informations about this plugin for WordPress"><img src="http://wpengineer.com/wp-content/themes/wpe-3/images/snippets-125-125.png" height="90" alt="WordPress Snippet Plugin" /></a> <a href="http://xtreme-theme.com"><img src="http://wpengineer.com/wp-content/uploads/feed-banner-2.jpg" alt="Xtreme One WordPress Framework"/></a><br />
&copy; <a href="http://wpengineer.com/">WP Engineer Team</a>, All rights reserved <small>(Digital Fingerprint: WPEngineer-be0254ce2b4972feb4b9cb72034a092d)</small></p>
]]></content:encoded>
			<wfw:commentRss>http://wpengineer.com/1746/wordpress-database-functions/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Add File Types for Mediathek</title>
		<link>http://wpengineer.com/1668/add-file-types-for-mediathek/</link>
		<comments>http://wpengineer.com/1668/add-file-types-for-mediathek/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 08:54:41 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[WordPress Hacks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress 2.8]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://wpengineer.com/?p=1668</guid>
		<description><![CDATA[In WordPress 2.8.5 the whitelist of allowed MIME types for downloads will be valid for administrators the first time. This is a step towards security and you can, with the help of a constant, upload all data types. define ( 'ALLOW_UNFILTERED_UPLOADS', true); Who has implemented several projects already with WordPress probably had experienced that a [...]]]></description>
			<content:encoded><![CDATA[<p>In WordPress 2.8.5 the whitelist of allowed MIME types for downloads will be valid for administrators the first time. This is a step towards security and you can, with the help of a constant, upload all data types.<br />
<code>define ( 'ALLOW_UNFILTERED_UPLOADS', true);</code></p>
<p>Who has implemented several projects already with WordPress probably had experienced that a user doesn't have the rights to upload a specific format.</p>
<p>The Plugin <a href="http://www.im-web-gefunden.de/wordpress-plugins/role-manager/">Role Manager</a> allows the uploading of all MIME types. But in my opinion this is not the perfect way, and therefore here is a small code snippet that takes adjusting according to the particular requirement.<br />
<span id="more-1668"></span><br />
<a href="http://wpengineer.com/wp-content/uploads/upload-filter.png"><img src="http://wpengineer.com/wp-content/uploads/upload-filter.png" alt="upload-filter" title="upload-filter" width="439" height="346" class="aligncenter size-full wp-image-1670" /></a></p>
<p>All allowed types are found in the whitelist-function <code>wp_check_filetype()</code>, in <code> wp-includes/functions.php</code>.<br />
This function has a filter <code>upload_mimes</code> that can be extended. And there we come in and call the MIME types that we need. In the following example, I allow PHP-, XHTML- and htaccess-files. The options are passed in an array and the assignment is important so that WordPress can also assign an icon, like you see on the screenshot.</p>
<pre lang="php">
function my_upload_mimes() {
	$mime_types = array(
		&#039;php|phps&#039;   =&gt; &#039;text/php&#039;,
		&#039;xhtm|xhtml&#039; =&gt; &#039;text/html&#039;,
		&#039;htaccess&#039;    =&gt; &#039;text/plain&#039;
	);

	return $mime_types;
}

add_filter( &#039;upload_mimes&#039;, &#039;my_upload_mimes&#039; );
</pre>
<h4>Mime Types</h4>
<p>To obtain a list of all MIME types that can be used, you can check out the following list. The list should only contain type files, which are explicitly required,  otherwise the above constants can be used.</p>
<pre lang="php">
$mime_types = array(
&#039;323&#039;     =&gt; &#039;text/h323&#039;,
&#039;acx&#039;     =&gt; &#039;application/internet-property-stream&#039;,
&#039;ai&#039;      =&gt; &#039;application/postscript&#039;,
&#039;aif&#039;     =&gt; &#039;audio/x-aiff&#039;,
&#039;aifc&#039;    =&gt; &#039;audio/x-aiff&#039;,
&#039;aiff&#039;    =&gt; &#039;audio/x-aiff&#039;,
&#039;asf&#039;     =&gt; &#039;video/x-ms-asf&#039;,
&#039;asr&#039;     =&gt; &#039;video/x-ms-asf&#039;,
&#039;asx&#039;     =&gt; &#039;video/x-ms-asf&#039;,
&#039;au&#039;      =&gt; &#039;audio/basic&#039;,
&#039;avi&#039;     =&gt; &#039;video/x-msvideo&#039;,
&#039;axs&#039;     =&gt; &#039;application/olescript&#039;,
&#039;bas&#039;     =&gt; &#039;text/plain&#039;,
&#039;bcpio&#039;   =&gt; &#039;application/x-bcpio&#039;,
&#039;bin&#039;     =&gt; &#039;application/octet-stream&#039;,
&#039;bmp&#039;     =&gt; &#039;image/bmp&#039;,
&#039;c&#039;       =&gt; &#039;text/plain&#039;,
&#039;cat&#039;     =&gt; &#039;application/vnd.ms-pkiseccat&#039;,
&#039;cdf&#039;     =&gt; &#039;application/x-cdf&#039;,
&#039;cer&#039;     =&gt; &#039;application/x-x509-ca-cert&#039;,
&#039;class&#039;   =&gt; &#039;application/octet-stream&#039;,
&#039;clp&#039;     =&gt; &#039;application/x-msclip&#039;,
&#039;cmx&#039;     =&gt; &#039;image/x-cmx&#039;,
&#039;cod&#039;     =&gt; &#039;image/cis-cod&#039;,
&#039;cpio&#039;    =&gt; &#039;application/x-cpio&#039;,
&#039;crd&#039;     =&gt; &#039;application/x-mscardfile&#039;,
&#039;crl&#039;     =&gt; &#039;application/pkix-crl&#039;,
&#039;crt&#039;     =&gt; &#039;application/x-x509-ca-cert&#039;,
&#039;csh&#039;     =&gt; &#039;application/x-csh&#039;,
&#039;css&#039;     =&gt; &#039;text/css&#039;,
&#039;dcr&#039;     =&gt; &#039;application/x-director&#039;,
&#039;der&#039;     =&gt; &#039;application/x-x509-ca-cert&#039;,
&#039;dir&#039;     =&gt; &#039;application/x-director&#039;,
&#039;dll&#039;     =&gt; &#039;application/x-msdownload&#039;,
&#039;dms&#039;     =&gt; &#039;application/octet-stream&#039;,
&#039;doc&#039;     =&gt; &#039;application/msword&#039;,
&#039;dot&#039;     =&gt; &#039;application/msword&#039;,
&#039;dvi&#039;     =&gt; &#039;application/x-dvi&#039;,
&#039;dxr&#039;     =&gt; &#039;application/x-director&#039;,
&#039;eps&#039;     =&gt; &#039;application/postscript&#039;,
&#039;etx&#039;     =&gt; &#039;text/x-setext&#039;,
&#039;evy&#039;     =&gt; &#039;application/envoy&#039;,
&#039;exe&#039;     =&gt; &#039;application/octet-stream&#039;,
&#039;fif&#039;     =&gt; &#039;application/fractals&#039;,
&#039;flr&#039;     =&gt; &#039;x-world/x-vrml&#039;,
&#039;gif&#039;     =&gt; &#039;image/gif&#039;,
&#039;gtar&#039;    =&gt; &#039;application/x-gtar&#039;,
&#039;gz&#039;      =&gt; &#039;application/x-gzip&#039;,
&#039;h&#039;       =&gt; &#039;text/plain&#039;,
&#039;hdf&#039;     =&gt; &#039;application/x-hdf&#039;,
&#039;hlp&#039;     =&gt; &#039;application/winhlp&#039;,
&#039;hqx&#039;     =&gt; &#039;application/mac-binhex40&#039;,
&#039;hta&#039;     =&gt; &#039;application/hta&#039;,
&#039;htc&#039;     =&gt; &#039;text/x-component&#039;,
&#039;htm&#039;     =&gt; &#039;text/html&#039;,
&#039;html&#039;    =&gt; &#039;text/html&#039;,
&#039;htt&#039;     =&gt; &#039;text/webviewhtml&#039;,
&#039;ico&#039;     =&gt; &#039;image/x-icon&#039;,
&#039;ief&#039;     =&gt; &#039;image/ief&#039;,
&#039;iii&#039;     =&gt; &#039;application/x-iphone&#039;,
&#039;ins&#039;     =&gt; &#039;application/x-internet-signup&#039;,
&#039;isp&#039;     =&gt; &#039;application/x-internet-signup&#039;,
&#039;jfif&#039;    =&gt; &#039;image/pipeg&#039;,
&#039;jpe&#039;     =&gt; &#039;image/jpeg&#039;,
&#039;jpeg&#039;    =&gt; &#039;image/jpeg&#039;,
&#039;jpg&#039;     =&gt; &#039;image/jpeg&#039;,
&#039;js&#039;      =&gt; &#039;application/x-javascript&#039;,
&#039;latex&#039;   =&gt; &#039;application/x-latex&#039;,
&#039;lha&#039;     =&gt; &#039;application/octet-stream&#039;,
&#039;lsf&#039;     =&gt; &#039;video/x-la-asf&#039;,
&#039;lsx&#039;     =&gt; &#039;video/x-la-asf&#039;,
&#039;lzh&#039;     =&gt; &#039;application/octet-stream&#039;,
&#039;m13&#039;     =&gt; &#039;application/x-msmediaview&#039;,
&#039;m14&#039;     =&gt; &#039;application/x-msmediaview&#039;,
&#039;m3u&#039;     =&gt; &#039;audio/x-mpegurl&#039;,
&#039;man&#039;     =&gt; &#039;application/x-troff-man&#039;,
&#039;mdb&#039;     =&gt; &#039;application/x-msaccess&#039;,
&#039;me&#039;      =&gt; &#039;application/x-troff-me&#039;,
&#039;mht&#039;     =&gt; &#039;message/rfc822&#039;,
&#039;mhtml&#039;   =&gt; &#039;message/rfc822&#039;,
&#039;mid&#039;     =&gt; &#039;audio/mid&#039;,
&#039;mny&#039;     =&gt; &#039;application/x-msmoney&#039;,
&#039;mov&#039;     =&gt; &#039;video/quicktime&#039;,
&#039;movie&#039;   =&gt; &#039;video/x-sgi-movie&#039;,
&#039;mp2&#039;     =&gt; &#039;video/mpeg&#039;,
&#039;mp3&#039;     =&gt; &#039;audio/mpeg&#039;,
&#039;mpa&#039;     =&gt; &#039;video/mpeg&#039;,
&#039;mpe&#039;     =&gt; &#039;video/mpeg&#039;,
&#039;mpeg&#039;    =&gt; &#039;video/mpeg&#039;,
&#039;mpg&#039;     =&gt; &#039;video/mpeg&#039;,
&#039;mpp&#039;     =&gt; &#039;application/vnd.ms-project&#039;,
&#039;mpv2&#039;    =&gt; &#039;video/mpeg&#039;,
&#039;ms&#039;      =&gt; &#039;application/x-troff-ms&#039;,
&#039;mvb&#039;     =&gt; &#039;application/x-msmediaview&#039;,
&#039;nws&#039;     =&gt; &#039;message/rfc822&#039;,
&#039;oda&#039;     =&gt; &#039;application/oda&#039;,
&#039;p10&#039;     =&gt; &#039;application/pkcs10&#039;,
&#039;p12&#039;     =&gt; &#039;application/x-pkcs12&#039;,
&#039;p7b&#039;     =&gt; &#039;application/x-pkcs7-certificates&#039;,
&#039;p7c&#039;     =&gt; &#039;application/x-pkcs7-mime&#039;,
&#039;p7m&#039;     =&gt; &#039;application/x-pkcs7-mime&#039;,
&#039;p7r&#039;     =&gt; &#039;application/x-pkcs7-certreqresp&#039;,
&#039;p7s&#039;     =&gt; &#039;application/x-pkcs7-signature&#039;,
&#039;pbm&#039;     =&gt; &#039;image/x-portable-bitmap&#039;,
&#039;pdf&#039;     =&gt; &#039;application/pdf&#039;,
&#039;pfx&#039;     =&gt; &#039;application/x-pkcs12&#039;,
&#039;pgm&#039;     =&gt; &#039;image/x-portable-graymap&#039;,
&#039;pko&#039;     =&gt; &#039;application/ynd.ms-pkipko&#039;,
&#039;pma&#039;     =&gt; &#039;application/x-perfmon&#039;,
&#039;pmc&#039;     =&gt; &#039;application/x-perfmon&#039;,
&#039;pml&#039;     =&gt; &#039;application/x-perfmon&#039;,
&#039;pmr&#039;     =&gt; &#039;application/x-perfmon&#039;,
&#039;pmw&#039;     =&gt; &#039;application/x-perfmon&#039;,
&#039;pnm&#039;     =&gt; &#039;image/x-portable-anymap&#039;,
&#039;pot&#039;     =&gt; &#039;application/vnd.ms-powerpoint&#039;,
&#039;ppm&#039;     =&gt; &#039;image/x-portable-pixmap&#039;,
&#039;pps&#039;     =&gt; &#039;application/vnd.ms-powerpoint&#039;,
&#039;ppt&#039;     =&gt; &#039;application/vnd.ms-powerpoint&#039;,
&#039;prf&#039;     =&gt; &#039;application/pics-rules&#039;,
&#039;ps&#039;      =&gt; &#039;application/postscript&#039;,
&#039;pub&#039;     =&gt; &#039;application/x-mspublisher&#039;,
&#039;qt&#039;      =&gt; &#039;video/quicktime&#039;,
&#039;ra&#039;      =&gt; &#039;audio/x-pn-realaudio&#039;,
&#039;ram&#039;     =&gt; &#039;audio/x-pn-realaudio&#039;,
&#039;ras&#039;     =&gt; &#039;image/x-cmu-raster&#039;,
&#039;rgb&#039;     =&gt; &#039;image/x-rgb&#039;,
&#039;rmi&#039;     =&gt; &#039;audio/mid&#039;,
&#039;roff&#039;    =&gt; &#039;application/x-troff&#039;,
&#039;rtf&#039;     =&gt; &#039;application/rtf&#039;,
&#039;rtx&#039;     =&gt; &#039;text/richtext&#039;,
&#039;scd&#039;     =&gt; &#039;application/x-msschedule&#039;,
&#039;sct&#039;     =&gt; &#039;text/scriptlet&#039;,
&#039;setpay&#039;  =&gt; &#039;application/set-payment-initiation&#039;,
&#039;setreg&#039;  =&gt; &#039;application/set-registration-initiation&#039;,
&#039;sh&#039;      =&gt; &#039;application/x-sh&#039;,
&#039;shar&#039;    =&gt; &#039;application/x-shar&#039;,
&#039;sit&#039;     =&gt; &#039;application/x-stuffit&#039;,
&#039;snd&#039;     =&gt; &#039;audio/basic&#039;,
&#039;spc&#039;     =&gt; &#039;application/x-pkcs7-certificates&#039;,
&#039;spl&#039;     =&gt; &#039;application/futuresplash&#039;,
&#039;src&#039;     =&gt; &#039;application/x-wais-source&#039;,
&#039;sst&#039;     =&gt; &#039;application/vnd.ms-pkicertstore&#039;,
&#039;stl&#039;     =&gt; &#039;application/vnd.ms-pkistl&#039;,
&#039;stm&#039;     =&gt; &#039;text/html&#039;,
&#039;svg&#039;     =&gt; &#039;image/svg+xml&#039;,
&#039;sv4cpio&#039; =&gt; &#039;application/x-sv4cpio&#039;,
&#039;sv4crc&#039;  =&gt; &#039;application/x-sv4crc&#039;,
&#039;t&#039;       =&gt; &#039;application/x-troff&#039;,
&#039;tar&#039;     =&gt; &#039;application/x-tar&#039;,
&#039;tcl&#039;     =&gt; &#039;application/x-tcl&#039;,
&#039;tex&#039;     =&gt; &#039;application/x-tex&#039;,
&#039;texi&#039;    =&gt; &#039;application/x-texinfo&#039;,
&#039;texinfo&#039; =&gt; &#039;application/x-texinfo&#039;,
&#039;tgz&#039;     =&gt; &#039;application/x-compressed&#039;,
&#039;tif&#039;     =&gt; &#039;image/tiff&#039;,
&#039;tiff&#039;    =&gt; &#039;image/tiff&#039;,
&#039;tr&#039;      =&gt; &#039;application/x-troff&#039;,
&#039;trm&#039;     =&gt; &#039;application/x-msterminal&#039;,
&#039;tsv&#039;     =&gt; &#039;text/tab-separated-values&#039;,
&#039;txt&#039;     =&gt; &#039;text/plain&#039;,
&#039;uls&#039;     =&gt; &#039;text/iuls&#039;,
&#039;ustar&#039;   =&gt; &#039;application/x-ustar&#039;,
&#039;vcf&#039;     =&gt; &#039;text/x-vcard&#039;,
&#039;vrml&#039;    =&gt; &#039;x-world/x-vrml&#039;,
&#039;wav&#039;     =&gt; &#039;audio/x-wav&#039;,
&#039;wcm&#039;     =&gt; &#039;application/vnd.ms-works&#039;,
&#039;wdb&#039;     =&gt; &#039;application/vnd.ms-works&#039;,
&#039;wks&#039;     =&gt; &#039;application/vnd.ms-works&#039;,
&#039;wmf&#039;     =&gt; &#039;application/x-msmetafile&#039;,
&#039;wps&#039;     =&gt; &#039;application/vnd.ms-works&#039;,
&#039;wri&#039;     =&gt; &#039;application/x-mswrite&#039;,
&#039;wrl&#039;     =&gt; &#039;x-world/x-vrml&#039;,
&#039;wrz&#039;     =&gt; &#039;x-world/x-vrml&#039;,
&#039;xaf&#039;     =&gt; &#039;x-world/x-vrml&#039;,
&#039;xbm&#039;     =&gt; &#039;image/x-xbitmap&#039;,
&#039;xla&#039;     =&gt; &#039;application/vnd.ms-excel&#039;,
&#039;xlc&#039;     =&gt; &#039;application/vnd.ms-excel&#039;,
&#039;xlm&#039;     =&gt; &#039;application/vnd.ms-excel&#039;,
&#039;xls&#039;     =&gt; &#039;application/vnd.ms-excel&#039;,
&#039;xlt&#039;     =&gt; &#039;application/vnd.ms-excel&#039;,
&#039;xlw&#039;     =&gt; &#039;application/vnd.ms-excel&#039;,
&#039;xof&#039;     =&gt; &#039;x-world/x-vrml&#039;,
&#039;xpm&#039;     =&gt; &#039;image/x-xpixmap&#039;,
&#039;xwd&#039;     =&gt; &#039;image/x-xwindowdump&#039;,
&#039;z&#039;       =&gt; &#039;application/x-compress&#039;,
&#039;zip&#039;     =&gt; &#039;application/zip&#039;
);
</pre>
<hr /><a href="http://wpplugins.com/plugin/281/snippets" title="More informations about this plugin for WordPress"><img src="http://wpengineer.com/wp-content/themes/wpe-3/images/snippets-125-125.png" height="90" alt="WordPress Snippet Plugin" /></a> <a href="http://xtreme-theme.com"><img src="http://wpengineer.com/wp-content/uploads/feed-banner-2.jpg" alt="Xtreme One WordPress Framework"/></a><br />
&copy; <a href="http://wpengineer.com/">WP Engineer Team</a>, All rights reserved <small>(Digital Fingerprint: WPEngineer-be0254ce2b4972feb4b9cb72034a092d)</small></p>
]]></content:encoded>
			<wfw:commentRss>http://wpengineer.com/1668/add-file-types-for-mediathek/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress 2.8 Feature Password</title>
		<link>http://wpengineer.com/1211/wordpress-28-feature-password/</link>
		<comments>http://wpengineer.com/1211/wordpress-28-feature-password/#comments</comments>
		<pubDate>Tue, 05 May 2009 21:14:16 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[WordPress News]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress 2.8]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[wp2.8]]></category>

		<guid isPermaLink="false">http://wpengineer.com/?p=1211</guid>
		<description><![CDATA[WordPress 2.8 is going to be published soon, even though they do not have a date yet. Nevertheless, another small insight into a new feature. After a new installation of WordPress, you get informed that you are logged in with the default password and this can be a security risk. It is therefore strongly recommended [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress 2.8 is going to be published soon, even though they do not have a date yet. Nevertheless, another small insight into a new feature. After a new installation of WordPress, you get informed that you are logged in with the default password and this can be a <a href="http://perishablepress.com/press/2009/05/05/important-security-fix-for-wordpress/">security risk</a>. It is therefore strongly recommended to change the password. The necessary internal links to set a new password are included in this notice.</p>
<p><a href="http://wpengineer.com/wp-content/uploads/wp28_passwort.png"><img src="http://wpengineer.com/wp-content/uploads/wp28_passwort-300x47.png" alt="wp28_passwort" title="wp28_passwort" width="300" height="47" class="aligncenter size-medium wp-image-1210" /></a><br />
<hr /><a href="http://wpplugins.com/plugin/281/snippets" title="More informations about this plugin for WordPress"><img src="http://wpengineer.com/wp-content/themes/wpe-3/images/snippets-125-125.png" height="90" alt="WordPress Snippet Plugin" /></a> <a href="http://xtreme-theme.com"><img src="http://wpengineer.com/wp-content/uploads/feed-banner-2.jpg" alt="Xtreme One WordPress Framework"/></a><br />
&copy; <a href="http://wpengineer.com/">WP Engineer Team</a>, All rights reserved <small>(Digital Fingerprint: WPEngineer-be0254ce2b4972feb4b9cb72034a092d)</small></p>
]]></content:encoded>
			<wfw:commentRss>http://wpengineer.com/1211/wordpress-28-feature-password/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How To XSS Scanner &#8211; The Easy Way</title>
		<link>http://wpengineer.com/999/how-to-xss-scanner-the-easy-way/</link>
		<comments>http://wpengineer.com/999/how-to-xss-scanner-the-easy-way/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 13:04:32 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[WPengineer Misc]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://wpengineer.com/?p=999</guid>
		<description><![CDATA[An XSS scanner, simply be used as a bookmark &#8211; that is XSS Rays. The tool is an open source tool that was written in JavaScript and can find cross-browser XSS vulnerabilities. In the development process it can increase fast, simple and straightforwarded the safety. The tool can be easily put as a bookmark in [...]]]></description>
			<content:encoded><![CDATA[<p>An XSS scanner, simply be used as a bookmark &#8211; that is <a href="http://www.thespanner.co.uk/2009/03/25/xss-rays/">XSS Rays</a>.<br />
The tool is an open source tool that was written in JavaScript and can find cross-browser XSS vulnerabilities.</p>
<p>In the development process it can increase fast, simple and straightforwarded the safety. The tool can be easily put as a bookmark in the browser and scans links and paths. Alternatively, you can add new vectors. Definitely worth a bookmark. Download of application can be found on the website for <a href="http://www.thespanner.co.uk/2009/03/25/xss-rays/">XSS Rays</a>.<br />
<hr /><a href="http://wpplugins.com/plugin/281/snippets" title="More informations about this plugin for WordPress"><img src="http://wpengineer.com/wp-content/themes/wpe-3/images/snippets-125-125.png" height="90" alt="WordPress Snippet Plugin" /></a> <a href="http://xtreme-theme.com"><img src="http://wpengineer.com/wp-content/uploads/feed-banner-2.jpg" alt="Xtreme One WordPress Framework"/></a><br />
&copy; <a href="http://wpengineer.com/">WP Engineer Team</a>, All rights reserved <small>(Digital Fingerprint: WPEngineer-be0254ce2b4972feb4b9cb72034a092d)</small></p>
]]></content:encoded>
			<wfw:commentRss>http://wpengineer.com/999/how-to-xss-scanner-the-easy-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

