<?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>Garage &#187; Programming</title>
	<atom:link href="https://invoicebus.com/garage/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>https://invoicebus.com/garage</link>
	<description>Blog about running a business and solving invoicing and billing problems</description>
	<lastBuildDate>Thu, 28 May 2026 07:07:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>How to Protect Your Email Address From Spam Crawlers</title>
		<link>https://invoicebus.com/garage/how-to-protect-your-email-address-from-spam-crawlers/</link>
		<comments>https://invoicebus.com/garage/how-to-protect-your-email-address-from-spam-crawlers/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 22:26:21 +0000</pubDate>
		<dc:creator><![CDATA[Stefan Chachovski]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[email protection]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spam crawler]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://garage.invoicebus.com/?p=1429</guid>
		<description><![CDATA[<p>The email addresses are not always stolen by leaving footprints on other sites. In most cases, they are stolen directly from your own web site. What are spam crawlers? Spam crawlers are automatically programmed bots that steal your email address from the web by various mechanisms and use it in bulk email or other purposes [&#8230;]<br />
<h3>Author information</h3>
<div class="ts-fab-wrapper" style="overflow:hidden">
<div class="ts-fab-photo" style="float:left;width:64px"><img alt='Stefan Chachovski' src='https://secure.gravatar.com/avatar/f03618a263cf869af3b1ebf44ebf6171?s=64&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&amp;r=G' class='avatar avatar-64 photo' height='64' width='64' /></div>
<p><!-- /.ts-fab-photo -->
<div class="ts-fab-text" style="margin-left:74px">
<div class="ts-fab-header">
<h4><a href="http://twitter.com/chachovski">Stefan Chachovski</a></h4>
</div>
<p><!-- /.ts-fab-header -->
<div class="ts-fab-content" style="margin-bottom:0.5em">
<p>Co-founder of Invoicebus. Huge lover of nature, science, and chocolate cherry cordials. He occasionally writes on this blog about Invoicebus' stuff. Hello him on <a href="http://twitter.com/chachovski">Twitter</a> or subscribe to his updates on <a href="http://facebook.com/cacovski">Facebook</a>.</p>
</div>
<div class="ts-fab-footer"> | <a href="http://twitter.com/chachovski">Twitter</a> | <a href="http://www.facebook.com/cacovski">Facebook</a> | </div>
<p><!-- /.ts-fab-footer --></div>
<p><!-- /.ts-fab-text --></div>
<p><!-- /.ts-fab-wrapper --></p>
<p>The post <a rel="nofollow" href="https://invoicebus.com/garage/how-to-protect-your-email-address-from-spam-crawlers/">How to Protect Your Email Address From Spam Crawlers</a> appeared first on <a rel="nofollow" href="https://invoicebus.com/garage">Garage</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h2>The email addresses are not always stolen by leaving footprints on other sites. In most cases, they are stolen directly from your own web site.</h2>
<div style="height:20px;"></div>
<h3>What are spam crawlers?</h3>
<p>Spam crawlers are automatically programmed bots that steal your email address from the web by various mechanisms and use it in <a href="http://en.wikipedia.org/wiki/Distribution_list">bulk email</a> or other purposes usually referred as <a href="http://en.wikipedia.org/wiki/Email_spam">spam</a>. This process is also known as email address harvesting.</p>
<p><img style="margin:20px 0px;" src="http://garage.invoicebus.com/wp-content/uploads/2012/03/online-invoicing-spam-crawler.png" alt="Spam Crawler" title="Spam Crawler" width="600" height="420" class="alignnone size-full wp-image-1517" /></p>
<p>Contact details, terms and policies, about pages and pretty much everywhere on your site where you publicly expose your email address, is a great resource for crawlers.</p>
<p>The crawler or so called harvester automatically searches the HTML content of your web site, usually scanning the link tag <center>
<pre class="brush: xml; gutter: false; title: ; notranslate">&lt;a&gt;&lt;/a&gt;</pre>
<p></center> and searching the <b>href=&#8221;mailto:&#8221;</b> attribute inside.</p>
<h3>So what’s the idea?</h3>
<p>There’re few workarounds for protecting email addresses and you’ve probably seen solutions like displaying the email in format: info (at) invoicebus (dot) com, embedding the email into an image, implementing contact form etc. However, in all cases you don’t get clickable email link, so here we&#8217;re going to use a little hack.</p>
<p>Beside the <b>href=&#8221;mailto:&#8221;</b> attribute, the spam crawler scans every HTML code that contains “@” sign, so can easily figure out and extract the actual email address. Our objective is to keep the crawler task difficult as much as possible.</p>
<p>In fact, we&#8217;ll programmatically hide the email address behind variable and dynamically print it in run-time, exactly when the page is rendered by the browser. The crawler won’t be able to find it anywhere in the code.</p>
<div style="font-weight:bold; margin-top:20px; margin-bottom:10px;">How to assign a value to the variable so to the crawler couldn&#8217;t see it? </div>
<p>If we divide the email address on 3 parts,<br />
<img style="margin:20px 0px;" src="http://garage.invoicebus.com/wp-content/uploads/2012/03/online-invoicing-3parts-email.png" alt="Parts of the email address: Username, at sign, domain name" title="Parts of the email address: Username, at sign, domain name" width="306" height="65" class="alignnone size-full wp-image-1538" /><br />
we can assign the value sequentially in two steps by concatenating strings.<br />
Here’s the JavaScript snippet for it:</p>
<pre class="brush: jscript; gutter: false; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;

     var emailE = 'invoicebus.com';
     emailE = ('support' + '@' + emailE);
     document.write('&lt;a href=&quot;mailto:' + emailE + '&quot;&gt;' + emailE + '&lt;/a&gt;');

&lt;/script&gt;
</pre>
<p>The code will display the following link in the browser:</p>
<p><img src="http://garage.invoicebus.com/wp-content/uploads/2012/03/online-invoicing-support-email.png" width="151" height="17" class="alignnone size-full wp-image-1546" /></p>
<p>You can even write your own JS function that transforms the letters with custom pattern, but for now I’ll stick to the basics.</p>
<div style="background:#ffffe0; padding:10px; margin:20px 0px; margin-bottom:30px; border:1px solid #E6DB55;"><b>Note:</b> If the visitor of the site has disabled the JavaScript in his browser, the email address won’t be shown.</div>
<p>Of course, you also have another option of not using the JavaScript by directly encoding the value of the HREF attribute with HTML <a href="http://www.w3schools.com/tags/ref_ascii.asp">ASCII encoding</a> or <a href="http://www.w3schools.com/tags/ref_urlencode.asp">URL encoding</a>.<br />
<br/></p>
<div style="background:#f8f8f8; border:1px dotted #ccc; padding:20px; margin-bottom:25px;">
Clear HTML:</p>
<pre class="brush: xml; gutter: false; title: ; notranslate">
&lt;a href=&quot;mailto:yourname@domain.com&quot;&gt;yourname@domain.com&lt;/a&gt;
</pre>
<p><br/><br />
ASCII encoded HTML:</p>
<pre class="brush: xml; gutter: false; title: ; wrap-lines: false; notranslate">
&lt;a href=&quot;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#116;&amp;#111;&amp;#58;&amp;#121;&amp;#111;&amp;#117;&amp;#114;&amp;#110;&amp;#97;&amp;#109;&amp;#101;&amp;#64;&amp;#100;&amp;#111;&amp;#109;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;&amp;#121;&amp;#111;&amp;#117;&amp;#114;&amp;#110;&amp;#97;&amp;#109;&amp;#101;&amp;#64;&amp;#100;&amp;#111;&amp;#109;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&lt;/a&gt;
</pre>
</div>
<p>In both cases, the browser will display the following:</p>
<p><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#121;&#111;&#117;&#114;&#110;&#97;&#109;&#101;&#64;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;"> &#121;&#111;&#117;&#114;&#110;&#97;&#109;&#101;&#64;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;</a></p>
<p><br/></p>
<div style="background:#ffffe0; padding:10px; border:1px solid #E6DB55; margin-bottom:15px;"><b>Note:</b> Some spam crawlers can extract the email address even HTML encoded.</div>
<p><script language="javascript">
function invoicebus_encode(id1, id2) {
    var string = document.getElementById(id1).value;
    var str = '';
    for (i = 0; i < string.length; i++) {
        str = str + '&#038;#' + string.charCodeAt(i) + ';';
    }
    document.getElementById(id2).value = str;
}
</script></p>
<p>I quickly wrote a simple HTML ASCII encoder that can be used to encode your email addresses or any text you want.</p>
<table cellpadding=0 cellspacing=0 borders=0 style="text-align:center; margin-top:20px; margin-bottom:30px;">
<tr>
<td style="vertical-align:middle;">
Enter your email/text<br />
<textarea style="height:80px; width: 180px;" id="not_encoded"></textarea>
</td>
<td style="vertical-align:middle; text-align:center;">
<input style="width:150px; height:25px;" value="Hit me to Encode" type="button" onclick="invoicebus_encode('not_encoded', 'encoded');">
</td>
<td style="vertical-align:middle;">
Copy the encoded text<br />
<textarea style="height:80px; width: 180px;" id="encoded"></textarea>
</td>
</tr>
</table>
<p>There’re couples of other methods available, but I believe these two are the most effective ones, so far. It’s up to you which one you’ll choose. For us, JS method works pretty well.</p>
<p>A little effort and a few lines of code on your site will save you from tons of unsolicited and junk email later.<br />
<br/><br />
<b>Now let me hear your thoughts on it.</b><br />
Have any suggestions of how to improve these methods, or maybe some others we haven't heard about?</p>
<h3>Author information</h3><div class="ts-fab-wrapper" style="overflow:hidden"><div class="ts-fab-photo" style="float:left;width:64px"><img alt='Stefan Chachovski' src='https://secure.gravatar.com/avatar/f03618a263cf869af3b1ebf44ebf6171?s=64&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&amp;r=G' class='avatar avatar-64 photo' height='64' width='64' /></div><!-- /.ts-fab-photo --><div class="ts-fab-text" style="margin-left:74px"><div class="ts-fab-header"><h4><a href="http://twitter.com/chachovski">Stefan Chachovski</a></h4></div><!-- /.ts-fab-header --><div class="ts-fab-content" style="margin-bottom:0.5em"><p>Co-founder of Invoicebus. Huge lover of nature, science, and chocolate cherry cordials. He occasionally writes on this blog about Invoicebus' stuff. Hello him on <a href="http://twitter.com/chachovski">Twitter</a> or subscribe to his updates on <a href="http://facebook.com/cacovski">Facebook</a>.</p>
</div><div class="ts-fab-footer"> | <a href="http://twitter.com/chachovski">Twitter</a> | <a href="http://www.facebook.com/cacovski">Facebook</a> | </div><!-- /.ts-fab-footer --></div><!-- /.ts-fab-text --></div><!-- /.ts-fab-wrapper --><p>The post <a rel="nofollow" href="https://invoicebus.com/garage/how-to-protect-your-email-address-from-spam-crawlers/">How to Protect Your Email Address From Spam Crawlers</a> appeared first on <a rel="nofollow" href="https://invoicebus.com/garage">Garage</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://invoicebus.com/garage/how-to-protect-your-email-address-from-spam-crawlers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Feature Preview 3: The Invoice Editor</title>
		<link>https://invoicebus.com/garage/feature-preview-3-the-invoice-editor/</link>
		<comments>https://invoicebus.com/garage/feature-preview-3-the-invoice-editor/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 03:24:37 +0000</pubDate>
		<dc:creator><![CDATA[Stefan Chachovski]]></dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[how to create an invoice]]></category>
		<category><![CDATA[invoice editor]]></category>
		<category><![CDATA[invoicebus features]]></category>
		<category><![CDATA[online invoice]]></category>

		<guid isPermaLink="false">http://garage.invoicebus.com/?p=1072</guid>
		<description><![CDATA[<p>The Invoice Editor is the most powerful tool of Invoicebus, designed to provide users with highest degree of interactivity during the invoice creation process. The invoice editor of Invoicebus is &#8220;What You See Is What You Get&#8221; tool for creating fast and easy invoices, and at the same time, centralized place for management of other [&#8230;]<br />
<h3>Author information</h3>
<div class="ts-fab-wrapper" style="overflow:hidden">
<div class="ts-fab-photo" style="float:left;width:64px"><img alt='Stefan Chachovski' src='https://secure.gravatar.com/avatar/f03618a263cf869af3b1ebf44ebf6171?s=64&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&amp;r=G' class='avatar avatar-64 photo' height='64' width='64' /></div>
<p><!-- /.ts-fab-photo -->
<div class="ts-fab-text" style="margin-left:74px">
<div class="ts-fab-header">
<h4><a href="http://twitter.com/chachovski">Stefan Chachovski</a></h4>
</div>
<p><!-- /.ts-fab-header -->
<div class="ts-fab-content" style="margin-bottom:0.5em">
<p>Co-founder of Invoicebus. Huge lover of nature, science, and chocolate cherry cordials. He occasionally writes on this blog about Invoicebus' stuff. Hello him on <a href="http://twitter.com/chachovski">Twitter</a> or subscribe to his updates on <a href="http://facebook.com/cacovski">Facebook</a>.</p>
</div>
<div class="ts-fab-footer"> | <a href="http://twitter.com/chachovski">Twitter</a> | <a href="http://www.facebook.com/cacovski">Facebook</a> | </div>
<p><!-- /.ts-fab-footer --></div>
<p><!-- /.ts-fab-text --></div>
<p><!-- /.ts-fab-wrapper --></p>
<p>The post <a rel="nofollow" href="https://invoicebus.com/garage/feature-preview-3-the-invoice-editor/">Feature Preview 3: The Invoice Editor</a> appeared first on <a rel="nofollow" href="https://invoicebus.com/garage">Garage</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h2>The Invoice Editor is the most powerful tool of Invoicebus, designed to provide users with highest degree of interactivity during the invoice creation process.</h2>
<div style="height:20px"></div>
<p>The invoice editor of Invoicebus is &#8220;What You See Is What You Get&#8221; tool for creating fast and easy invoices, and at the same time, centralized place for management of other data like:</p>
<div style="padding-left:20px; margin-bottom:20px;">
<ul>
<li>Your company details</li>
<li>Your logo</li>
<li>Invoice options</li>
<ul class="myList" style="padding-bottom:5px;">
<li>Issue Date</li>
<li>Net Terms / Due Date</li>
<li>Currency</li>
<li>P.O. Number</li>
<li>Description</li>
<li>Color Theme</li>
</ul>
<li>Clients (Create New, Search, Edit, Delete)</li>
<li>Invoice Title and Number</li>
<li>Items (Create New, Search, Edit, Assign Tax, Delete)</li>
<li>Taxes (Create New, Edit, Delete)</li>
<li>Default Terms &amp; Notes (Set / Edit) </li>
</ul>
</div>
<p>We spent a lot of time to raise this concept on a level that allows incredibly natural, fast and focused flow of the invoicing process as a whole. You can see it in action from this video:</p>
<p></p>
<p><iframe src="https://www.youtube.com/embed/m_7N89lOtCk?rel=0" frameborder="0" width="560" height="315" style="margin:25px 0px;"></iframe></p>
<p></p>
<p>The main concept here is to rid of all separate management pages, screens, pop-ups, back and forth navigation, page reloads; and instead, to integrate all assets on the same page, accessible exactly when and where you need. The result is uninterrupted workflow experience with significantly increased speed and focus.</p>
<table border="0" cellspacing="0" cellpadding="0" style="font-size:11px; line-height:1.4em; text-align:center; margin:25px 0px;">
<tbody>
<tr>
<td valign="top" width="200"><a href="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-Editor-New.jpg" rel="lightbox[1072]"><img class="size-full wp-image-1084 alignnone" title="Invoice Editor New Invoice" src="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-Editor-New-Invoice-thumb.jpg" alt="Invoice Editor - New Invoice" width="150" height="222" /></a></p>
<div>Invoice editor for creating <br/>and editing invoices</div>
</td>
<td valign="top" width="200">
<p align="center"><a href="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-Editor-View.jpg" rel="lightbox[1072]"><img class="alignnone size-full wp-image-1086" title="Invoice-Editor-View-Mode-thumb" src="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-Editor-View-Mode-thumb.jpg" alt="Invoice Editor - View Invoice" width="150" height="222" /></a></p>
<div>View of already created invoice</div>
</td>
<td valign="top" width="200"><a href="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-PDF.jpg" rel="lightbox[1072]"><img class="alignnone size-full wp-image-1087" title="Invoice-Editor-PDF-thumb" src="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-Editor-PDF-thumb.jpg" alt="Invoice Editor - PDF Invoice" width="150" height="222" /></a></p>
<div style="margin-bottom:20px;">
Invoice in PDF format<br />
<a href="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-Template.pdf">Download the example in PDF</a>
</div>
</td>
</tr>
<tr>
<td valign="top" width="178"><a href="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-Editor-Email.jpg" rel="lightbox[1072]"><img class="alignnone size-full wp-image-1088" title="Invoice-Editor-Email-thumb" src="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-Editor-Email-thumb.jpg" alt="Sample of Invoice sent by email" width="150" height="222" /></a></p>
<div>
Invoice shown in the client’s inbox
</div>
</td>
<td valign="top" width="204">
<p align="center"><a href="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-Printed.jpg" rel="lightbox[1072]"><img class="alignnone size-full wp-image-1089" title="Invoice-Editor-Printed-thumb" src="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-Editor-Printed-thumb.jpg" alt="Printed Invoice" width="150" height="222" /></a></p>
<p>Printed version of the invoice
</td>
<td valign="top" width="235"><a href="http://garage.invoicebus.com/wp-content/uploads/2012/02/emal_notification.png" rel="lightbox[1072]"><img class="alignnone size-full wp-image-1090" title="Invoice-Editor-Notification-thumb" src="http://garage.invoicebus.com/wp-content/uploads/2012/02/Invoice-Editor-Notification-thumb.jpg" alt="Notification that the invoice has been viewed" width="150" height="222" /></a></p>
<div>
Email notification that the invoice<br />
has been viewed by the client
</div>
</td>
</tr>
</tbody>
</table>
<p>After creating your first invoice, Invoicebus learns all settings by himself and automatically applies them in future. </p>
<p>Feel free to <a href="https://invoicebus.com/signup?invoice-editor-post">try it by yourself</a> and see how it works. Thereafter, leave a comment of how much time you needed to make your first invoice. We would be happy to hear from you.</p>
<h3>Author information</h3><div class="ts-fab-wrapper" style="overflow:hidden"><div class="ts-fab-photo" style="float:left;width:64px"><img alt='Stefan Chachovski' src='https://secure.gravatar.com/avatar/f03618a263cf869af3b1ebf44ebf6171?s=64&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&amp;r=G' class='avatar avatar-64 photo' height='64' width='64' /></div><!-- /.ts-fab-photo --><div class="ts-fab-text" style="margin-left:74px"><div class="ts-fab-header"><h4><a href="http://twitter.com/chachovski">Stefan Chachovski</a></h4></div><!-- /.ts-fab-header --><div class="ts-fab-content" style="margin-bottom:0.5em"><p>Co-founder of Invoicebus. Huge lover of nature, science, and chocolate cherry cordials. He occasionally writes on this blog about Invoicebus' stuff. Hello him on <a href="http://twitter.com/chachovski">Twitter</a> or subscribe to his updates on <a href="http://facebook.com/cacovski">Facebook</a>.</p>
</div><div class="ts-fab-footer"> | <a href="http://twitter.com/chachovski">Twitter</a> | <a href="http://www.facebook.com/cacovski">Facebook</a> | </div><!-- /.ts-fab-footer --></div><!-- /.ts-fab-text --></div><!-- /.ts-fab-wrapper --><p>The post <a rel="nofollow" href="https://invoicebus.com/garage/feature-preview-3-the-invoice-editor/">Feature Preview 3: The Invoice Editor</a> appeared first on <a rel="nofollow" href="https://invoicebus.com/garage">Garage</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://invoicebus.com/garage/feature-preview-3-the-invoice-editor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sleep tight, your data is secure, part 3 – Data Storage Security</title>
		<link>https://invoicebus.com/garage/sleep-tight-your-data-is-secure-part-3/</link>
		<comments>https://invoicebus.com/garage/sleep-tight-your-data-is-secure-part-3/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 19:00:51 +0000</pubDate>
		<dc:creator><![CDATA[Invoicebus Team]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technical Stuff]]></category>
		<category><![CDATA[aes]]></category>
		<category><![CDATA[data storage]]></category>
		<category><![CDATA[enryption]]></category>
		<category><![CDATA[how we build invoicebus]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://garage.invoicebus.com/?p=770</guid>
		<description><![CDATA[<p>To make Invoicebus a place where its customers would feel safe and sound, we’ve built a little fortress around its data. We reveal a tiny, but interesting part of its architecture. Data Storage Security In our case, data storage security refers to the way of keeping and managing customer’s data within the database: invoices, quotes, [&#8230;]<br />
<h3>Author information</h3>
<div class="ts-fab-wrapper" style="overflow:hidden">
<div class="ts-fab-photo" style="float:left;width:64px"><img alt='Invoicebus Team' src='https://secure.gravatar.com/avatar/a311597603749cd2495cd7100f4a340a?s=64&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&amp;r=G' class='avatar avatar-64 photo' height='64' width='64' /></div>
<p><!-- /.ts-fab-photo -->
<div class="ts-fab-text" style="margin-left:74px">
<div class="ts-fab-header">
<h4>Invoicebus Team</h4>
</div>
<p><!-- /.ts-fab-header -->
<div class="ts-fab-content" style="margin-bottom:0.5em">
<p><a href="https://invoicebus.com/team/">We're</a> a team comprised of a few die-hard code freaks, lovers of beautiful design, stewards of simplicity, and passionately dedicated to the user experience.  Invoicebus is a great vehicle to express what we do best. <a href="https://invoicebus.com/manifesto/">Click here</a> to learn more on our business philosophy and how we actually do it.</p>
</div>
<div class="ts-fab-footer"> | <a href="http://twitter.com/invoicebus">Twitter</a> | <a href="http://www.facebook.com/invoicebus">Facebook</a> | </div>
<p><!-- /.ts-fab-footer --></div>
<p><!-- /.ts-fab-text --></div>
<p><!-- /.ts-fab-wrapper --></p>
<p>The post <a rel="nofollow" href="https://invoicebus.com/garage/sleep-tight-your-data-is-secure-part-3/">Sleep tight, your data is secure, part 3 – Data Storage Security</a> appeared first on <a rel="nofollow" href="https://invoicebus.com/garage">Garage</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h2>To make Invoicebus a place where its customers would feel safe and sound, we’ve built a little fortress around its data. We reveal a tiny, but interesting part of its architecture.</h2>
<h3>Data Storage Security</h3>
<p>In our case, data storage security refers to the way of keeping and managing customer’s data within the database: invoices, quotes, clients, company details etc.<br />
<br />
These kinds of sensitive information are kept in a form that is encrypted by the Advanced Encryption Standard (<a href="http://en.wikipedia.org/wiki/Advanced_Encryption_Standard">AES</a>) &#8211; first open symmetric-key cipher approved by the National Security Agency (NSA) and used by the US federal government for storing secret information.</p>
<p>The human way of showing how this thing works is by the picture below:<br />
<br />
<a href="http://garage.invoicebus.com/wp-content/uploads/2011/10/security-talk-3-picture.jpg" rel="lightbox[770]"><img src="http://garage.invoicebus.com/wp-content/uploads/2011/10/security-talk-3-picture.jpg" alt="Invoicebus AES Data enctiption-decription" title="AES encription/decription of data" width="606" height="162" class="alignnone size-full wp-image-773" /></a><br />
<br />
We use the words <b>lock</b>, <b>unlock</b> as a way to visualize the meaning of <b>encryption</b>, <b>decryption</b> process of the powerful AES algorithm respectively.</p>
<p>The security key is kept encrypted (with <a href="http://en.wikipedia.org/wiki/RSA">RSA</a> algorithm) in a separate, isolated place (on a different server protected by other security mechanisms and firewalls). Every time when AES needs to lock/unlock data, it requires the decrypted form of his key.</p>
<p>Hypothetically spoken, if security breach happens to the database server, the attacker would not be able to retrieve any meaningful data without this key, unless he has Dan Brown’s <a href="http://encyclopedia.thefreedictionary.com/TRANSLTR">TRANSLATR</a> at home.</p>
<h3>Other aspects of Data Storage Security</h3>
<p>Backups and redundancy are closely related to the Data Storage Security, but will be covered in the upcoming part 5 &#8211; Hosting Server Security.<br />
Part 4 and 5 of this security talk series will be continued after the Invoicebus launch.</p>
<h3>Author information</h3><div class="ts-fab-wrapper" style="overflow:hidden"><div class="ts-fab-photo" style="float:left;width:64px"><img alt='Invoicebus Team' src='https://secure.gravatar.com/avatar/a311597603749cd2495cd7100f4a340a?s=64&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&amp;r=G' class='avatar avatar-64 photo' height='64' width='64' /></div><!-- /.ts-fab-photo --><div class="ts-fab-text" style="margin-left:74px"><div class="ts-fab-header"><h4>Invoicebus Team</h4></div><!-- /.ts-fab-header --><div class="ts-fab-content" style="margin-bottom:0.5em"><p><a href="https://invoicebus.com/team/">We're</a> a team comprised of a few die-hard code freaks, lovers of beautiful design, stewards of simplicity, and passionately dedicated to the user experience.  Invoicebus is a great vehicle to express what we do best. <a href="https://invoicebus.com/manifesto/">Click here</a> to learn more on our business philosophy and how we actually do it.</p>
</div><div class="ts-fab-footer"> | <a href="http://twitter.com/invoicebus">Twitter</a> | <a href="http://www.facebook.com/invoicebus">Facebook</a> | </div><!-- /.ts-fab-footer --></div><!-- /.ts-fab-text --></div><!-- /.ts-fab-wrapper --><p>The post <a rel="nofollow" href="https://invoicebus.com/garage/sleep-tight-your-data-is-secure-part-3/">Sleep tight, your data is secure, part 3 – Data Storage Security</a> appeared first on <a rel="nofollow" href="https://invoicebus.com/garage">Garage</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://invoicebus.com/garage/sleep-tight-your-data-is-secure-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sleep tight, your data is secure, part 2 &#8211; Password Storage Security</title>
		<link>https://invoicebus.com/garage/sleep-tight-your-data-is-secure-part-2/</link>
		<comments>https://invoicebus.com/garage/sleep-tight-your-data-is-secure-part-2/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 16:26:45 +0000</pubDate>
		<dc:creator><![CDATA[Invoicebus Team]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technical Stuff]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[how we build invoicebus]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[salt]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://garage.invoicebus.com/?p=733</guid>
		<description><![CDATA[<p>Here we will explain how your passwords are stored in the system and all about their security. For storing passwords Invoicebus uses something called one-way encryption with salted hash functions. Why is it called one way? Because it can not be decrypted ever, actually it’s not even an encryption. It’s a hash that is completely [&#8230;]<br />
<h3>Author information</h3>
<div class="ts-fab-wrapper" style="overflow:hidden">
<div class="ts-fab-photo" style="float:left;width:64px"><img alt='Invoicebus Team' src='https://secure.gravatar.com/avatar/a311597603749cd2495cd7100f4a340a?s=64&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&amp;r=G' class='avatar avatar-64 photo' height='64' width='64' /></div>
<p><!-- /.ts-fab-photo -->
<div class="ts-fab-text" style="margin-left:74px">
<div class="ts-fab-header">
<h4>Invoicebus Team</h4>
</div>
<p><!-- /.ts-fab-header -->
<div class="ts-fab-content" style="margin-bottom:0.5em">
<p><a href="https://invoicebus.com/team/">We're</a> a team comprised of a few die-hard code freaks, lovers of beautiful design, stewards of simplicity, and passionately dedicated to the user experience.  Invoicebus is a great vehicle to express what we do best. <a href="https://invoicebus.com/manifesto/">Click here</a> to learn more on our business philosophy and how we actually do it.</p>
</div>
<div class="ts-fab-footer"> | <a href="http://twitter.com/invoicebus">Twitter</a> | <a href="http://www.facebook.com/invoicebus">Facebook</a> | </div>
<p><!-- /.ts-fab-footer --></div>
<p><!-- /.ts-fab-text --></div>
<p><!-- /.ts-fab-wrapper --></p>
<p>The post <a rel="nofollow" href="https://invoicebus.com/garage/sleep-tight-your-data-is-secure-part-2/">Sleep tight, your data is secure, part 2 &#8211; Password Storage Security</a> appeared first on <a rel="nofollow" href="https://invoicebus.com/garage">Garage</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h2>Here we will explain how your passwords are stored in the system and all about their security.</h2>
<div style="height:20px;"></div>
<p>For storing passwords Invoicebus uses something called one-way encryption with <a href="http://en.wikipedia.org/wiki/Salt_(cryptography)" target="_blank">salted</a> <a href="http://en.wikipedia.org/wiki/Cryptographic_hash_function" target="_blank">hash functions</a>. Why is it called one way? Because it can not be decrypted ever, actually it’s not even an encryption. It’s a hash that is completely different thing. In fact, this is one way ticket algorithm for which there is no returning path. This is too awkward explanation of hashing and it might sounds like a rocket science, so with a couple of diagrams we will try to explain as simple as we can what it’s all about.</p>
<h3>Password Creation</h3>
<p>This process happens every time you enter new password, you sign up, reset or change your password.</p>
<p><a href="http://garage.invoicebus.com/wp-content/uploads/2011/09/invoicebus_password_creation.png" rel="lightbox[733]"><img src="http://garage.invoicebus.com/wp-content/uploads/2011/09/invoicebus_password_creation.png" alt="invoicebus_password_creation" title="Password Creation" width="588" height="549" class="alignnone size-full wp-image-739" /></a></p>
<ul class="myList">
<li>Step 1: Generating random text called random salt, unique for every user.</li>
<li>Step 2: Generating hash value from both your <b>plain text password</b> and <b>the salt</b>. The hashed salt will be stored in the database (DB) for validating the password in future (at login).</li>
<li>Step 3: Generating hash value of the <a href="http://en.wikipedia.org/wiki/Concatenation" target="_blank">concatenated</a> hashes from the previous step. This is the final password hash that will be stored in the database (DB).</li>
</ul>
<p>The entered password is transformed to a binary value which looks like random gibberish, and nobody, absolutely nobody can retrieve the original plain text back, at least not with today&#8217;s technology.</p>
<p>What if two users choose exactly the same password? Will their passwords be represented with same binary values in the database? &#8211; No! That’s what salt ensures, unique and hardened passwords, so every password is absolutely unique in the database. Even if you try to reset the old password by entering a new one that is exactly the same as the old password, its representation would be completely different in the database.</p>
<p>Example:<br />
Old password: invoicebus123    &#8212;&#8211;>  generated as:  8de0c3c519<br />
New password: invoicebus123    &#8212;&#8211;>  generated as:  bc9fe98a12</p>
<h3>Password Validation</h3>
<p>Let see how the password is validated during the login process.<br />
<a href="http://garage.invoicebus.com/wp-content/uploads/2011/09/invoicebus_password_verification.png" rel="lightbox[733]"><img src="http://garage.invoicebus.com/wp-content/uploads/2011/09/invoicebus_password_verification.png" alt="invoicebus_password_verification" title="Password Verification" width="588" height="730" class="alignnone size-full wp-image-740" /></a></p>
<ul class="myList">
<li>Step 1: Generating hash value for your plain text password. Retrieving the stored salt form the database for that particular username.</li>
<li>Step 2: Generating hash value of the concatenated values from the previous step.</li>
<li>Step 3: Comparing the final hash password from the second step with the final password retrieved from the database. If they match the user is authenticated to access the system.</li>
</ul>
<p>If ever happen to forget your password, Invoicebus would be unable to retrieve it in its original plain text representation. That&#8217;s why an email is sent with a link where you can enter a new password.</p>
<p>Be aware of online services that retrieve your password in plain text when you try to reset it. That indicates they don’t use hashing; probably they have some poor password encryption or don’t have an encryption at all. And even hashing is used, it’s a good advice to always choose unique and <a href="http://en.wikipedia.org/wiki/Password_strength" target="_blank">strong password</a> for every online account you own.</p>
<h3>Author information</h3><div class="ts-fab-wrapper" style="overflow:hidden"><div class="ts-fab-photo" style="float:left;width:64px"><img alt='Invoicebus Team' src='https://secure.gravatar.com/avatar/a311597603749cd2495cd7100f4a340a?s=64&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&amp;r=G' class='avatar avatar-64 photo' height='64' width='64' /></div><!-- /.ts-fab-photo --><div class="ts-fab-text" style="margin-left:74px"><div class="ts-fab-header"><h4>Invoicebus Team</h4></div><!-- /.ts-fab-header --><div class="ts-fab-content" style="margin-bottom:0.5em"><p><a href="https://invoicebus.com/team/">We're</a> a team comprised of a few die-hard code freaks, lovers of beautiful design, stewards of simplicity, and passionately dedicated to the user experience.  Invoicebus is a great vehicle to express what we do best. <a href="https://invoicebus.com/manifesto/">Click here</a> to learn more on our business philosophy and how we actually do it.</p>
</div><div class="ts-fab-footer"> | <a href="http://twitter.com/invoicebus">Twitter</a> | <a href="http://www.facebook.com/invoicebus">Facebook</a> | </div><!-- /.ts-fab-footer --></div><!-- /.ts-fab-text --></div><!-- /.ts-fab-wrapper --><p>The post <a rel="nofollow" href="https://invoicebus.com/garage/sleep-tight-your-data-is-secure-part-2/">Sleep tight, your data is secure, part 2 &#8211; Password Storage Security</a> appeared first on <a rel="nofollow" href="https://invoicebus.com/garage">Garage</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://invoicebus.com/garage/sleep-tight-your-data-is-secure-part-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
