<?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>Devon Hillard&#039;s Digital Sanctuary &#187; Security</title>
	<atom:link href="http://www.digitalsanctuary.com/tech-blog/category/security/feed" rel="self" type="application/rss+xml" />
	<link>http://www.digitalsanctuary.com/tech-blog</link>
	<description>Java, ATG, Seam, and related Technologies</description>
	<lastBuildDate>Mon, 30 Jan 2012 23:04:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>MySQL.com Hacked and Infected</title>
		<link>http://www.digitalsanctuary.com/tech-blog/security/mysql-com-hacked-and-infected.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/security/mysql-com-hacked-and-infected.html#comments</comments>
		<pubDate>Mon, 26 Sep 2011 17:31:03 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=847</guid>
		<description><![CDATA[MySQL.com Hacked and Infected]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.armorize.com/2011/09/mysqlcom-hacked-infecting-visitors-with.html" target="_blank">MySQL.com Hacked and Infected</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/security/mysql-com-hacked-and-infected.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seam Identity Management</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/jboss/seam/seam-identity-management.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/jboss/seam/seam-identity-management.html#comments</comments>
		<pubDate>Mon, 11 Jul 2011 15:34:32 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[Seam]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=761</guid>
		<description><![CDATA[During a recent coding getaway to Maine (see my post on the 2011 HackFestaThon) I decided to write a basic Seam project as a starting point for my future Seam based web applications.  The idea is to provide common features &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/jboss/seam/seam-identity-management.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>During a recent coding getaway to Maine (see my post on the <a title="Coding Weekend in Maine 2011" href="http://www.digitalsanctuary.com/blog/uncategorized/weekend-in-maine.html" target="_blank">2011 HackFestaThon</a>) I decided to write a basic Seam project as a starting point for my future Seam based web applications.  The idea is to provide common features such as Login, Logout, Registration, Forgot Password, User Management, Audit Logging, Image Upload Handling, Video Upload Handling, etc&#8230; so next time I have an idea that I want to hack together I won&#8217;t have to re-write or copy-paste in basic functionality like that.</p>
<p>I spent about a day working on things before I discovered that I really should be using the <a title="Seam 2.2 Identity Management" href="http://docs.jboss.org/seam/2.2.2.Final/reference/en-US/html/security.html#d0e9101" target="_blank">Seam framework&#8217;s Identity Management</a> feature.  So I threw out everything I&#8217;d done, and started by re-reading the docs, and went from there.  Seam&#8217;s Identity Management framework is VERY powerful, but is also a little complicated to get going and in many cases it seems like it would easier to just write stuff from scratch.  I&#8217;m banking on the powerful stuff being worth the initial learning curve and a little extra pain.</p>
<p>When I get the starter project in a more complete state I will be open sourcing the whole thing to help others along, but I wanted to share a few things I&#8217;ve learned so far:</p>
<p>In order to use the Email address as the login instead of a username, you need to remove the username property from your UserAccount entity and annotate the Email address property like so:</p>
<pre class="brush: java; title: ; notranslate">
@NotNull
@UserPrincipal
@Email
public String getEmail() {
    return email;
}
</pre>
<p>Actions like Registration need a RunAsOperation inner class to handle the fine grained security controls that the Identity Management framework enforces:</p>
<pre class="brush: java; title: ; notranslate">
    public void register() {
	verified = (confirm != null &amp;&amp; confirm.equals(password));

	if (!verified) {
	    FacesMessages.instance().addToControl(&quot;confirmPassword&quot;, &quot;Passwords do not match&quot;);
	}
	new RunAsOperation() {
	    public void execute() {
		try {
		    // Check if email address has already been used
		    if (identityManager.userExists(getEmail())) {
			FacesMessages.instance().addToControl(&quot;email&quot;, &quot;Email has already been used.&quot;);
			return;
		    }
		    identityManager.createUser(email, password, mFirstName, mLastName);
		} catch (IdentityManagementException e) {
		    // TODO Auto-generated catch block
		    e.printStackTrace();
		}
		identityManager.grantRole(email, &quot;member&quot;);
	    }
	}.addRole(&quot;admin&quot;).run();

	// Login the user
	identity.getCredentials().setUsername(email);
	identity.getCredentials().setPassword(password);
	identity.login();
    }
</pre>
<p>Populating custom properties on the User during things like registration requires observing events:</p>
<pre class="brush: java; title: ; notranslate">
    @Observer(JpaIdentityStore.EVENT_PRE_PERSIST_USER)
    public void prePersistUser(UserAccount pNewUser) {
	// Setup additional UserAccount properties before the user is created
	pNewUser.setRegistrationDate(new Date());
	pNewUser.setOptIn(isOptIn());
    }
</pre>
<p>You can log audit events with the user&#8217;s IP address by doing things like this:</p>
<pre class="brush: java; title: ; notranslate">
@Scope(ScopeType.EVENT)
@Name(&quot;userEvents&quot;)
public class UserEvents {
    @Logger
    private Log mLog;

    @Observer(JpaIdentityStore.EVENT_USER_AUTHENTICATED)
    public void loginSuccessful(UserAccount pUser) {
	mLog.info(&quot;User logged in with email: #0&quot;, pUser.getEmail());
	pUser.setLastLoginDate(new Date());
	Contexts.getSessionContext().set(&quot;currentUser&quot;, pUser);
	AuditEvent loginEvent = new AuditEvent(((ServletRequest) FacesContext.getCurrentInstance().getExternalContext()
		.getRequest()).getRemoteAddr(), pUser.getId(), &quot;Login Success&quot;, null);
	Events.instance().raiseEvent(&quot;auditEvent&quot;, loginEvent);
    }
}
</pre>
<p>Hopefully I&#8217;ll have the starter project ready soon and will share it with you all.  In the meantime, happy hacking!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/jboss/seam/seam-identity-management.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Spark::red is PCI Level 1 Certified!</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/atg/sparkred-is-pci-level-1-certified.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/atg/sparkred-is-pci-level-1-certified.html#comments</comments>
		<pubDate>Thu, 07 Jul 2011 13:45:33 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Spark::red]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=750</guid>
		<description><![CDATA[I&#8217;m happy to announce that Spark::red ATG Hosting has received our PCI DSS 1.2 Level 1 Certification as an eCommerce MSP.  We have been Level 2 certified for a while, but completing our Level 1 certification with TrustWave as our &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/atg/sparkred-is-pci-level-1-certified.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_751" class="wp-caption alignright" style="width: 310px"><img class="size-full wp-image-751 " title="Security Image" src="http://www.digitalsanctuary.com/tech-blog/wp-content/uploads/2011/07/2907496392_410f480f6b.jpg" alt="" width="300" height="192" /><p class="wp-caption-text">image from Purpleslog</p></div>
<p>I&#8217;m happy to announce that <a title="Sparkred ATG Managed Hosting" href="https://www.sparkred.com" target="_blank">Spark::red ATG Hosting</a> has received our PCI DSS 1.2 Level 1 Certification as an eCommerce MSP.  We have been Level 2 certified for a while, but completing our Level 1 certification with <a title="TrustWave Security" href="https://www.trustwave.com/" target="_blank">TrustWave</a> as our third-party auditor is a huge milestone for us.</p>
<p>PCI DSS is the <a title="PCI Security Standards" href="https://www.pcisecuritystandards.org/" target="_blank">Payment Card Industry&#8217;s Data Security Standard</a>.  It is a set of requirements and guidelines designed to ensure merchants who handle or process credit cards, do so securely.  There are different levels based on transaction volume and <a title="PCI Levels" href="http://www.pcicomplianceguide.org/pcifaqs.php#5" target="_blank">Level 1</a> is the highest level, required for the largest volume merchants.  Level 1 is also the most difficult certification to gain, requiring the strictest security protections, the strongest policies, and a very in depth audit by a certified auditing company, such as TrustWave.  Our certification process has taken many months and the completion of our Level 1 Report of Compliance (RoC) is a testament to our dedication to providing the highest level of secure environments to our clients and safeguarding their systems and information, as well as the information of all our clients&#8217; customers.</p>
<p>At Spark::red we focus strongly on Security and Performance beyond the core ATG hosting services.  We handle more PCI DSS requirements than any other ATG Hosting provider out there.  If you are looking for an ATG Hosting provider to help manage your ATG web application, we can offer PCI Level 1 compliant hosting and handle many of your security needs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/atg/sparkred-is-pci-level-1-certified.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why you should be using a VPN</title>
		<link>http://www.digitalsanctuary.com/tech-blog/security/why-you-should-be-using-a-vpn.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/security/why-you-should-be-using-a-vpn.html#comments</comments>
		<pubDate>Thu, 28 Oct 2010 03:36:09 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=709</guid>
		<description><![CDATA[What is a VPN? A VPN, or Virtual Private Network, is basically a secure encrypted link from your computer to a computer or network somewhere else.  Your computer then routes some or all of it&#8217;s network traffic over that encrypted &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/security/why-you-should-be-using-a-vpn.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>What is a VPN?</h2>
<p>A VPN, or <a href="http://en.wikipedia.org/wiki/Virtual_private_network" target="_blank">Virtual Private Network</a>, is basically a secure encrypted link from your computer to a computer or network somewhere else.  Your computer then routes some or all of it&#8217;s network traffic over that encrypted link.  Typically they are used to get access from secure private or corporate networks from remote locations.  Your company might have you using a VPN, when you&#8217;re working from home, to access the corporate file server, SharePoint, SVN, etc&#8230;</p>
<h2>Why Should You Use a VPN?</h2>
<p>Wireless networks are more and more ubiquitous.  You&#8217;ll find WiFi at your local coffee shop, book store, McDonalds, and more.  WiFi is amazingly convenient.  It&#8217;s lets us stay connected and work from anywhere.  Unfortunately it is also typically insecure.  All your internet traffic is flying around through the air, and anyone can see it.  Many WiFi networks use various types of encryption to protect your traffic, however most of those encryption mechanisms aren&#8217;t actually that secure.  The technology to break the encryption easily has been around for a while.</p>
<p>Recently it&#8217;s been made ten time easier:  A new <a title="Firefox Browser" href="http://www.mozilla.com/en-US/firefox/firefox.html" target="_blank">Firefox</a> plug-in called <a title="Firesheep" href="http://codebutler.com/firesheep" target="_blank">Firesheep</a> automatically captures wireless traffic, and presents clickable buttons which allow you to hijack (take over) other people&#8217;s sessions on common websites such as Facebook, Twitter, and more.</p>
<p>Even if you use SSL/HTTPS for logging in, many websites pass the session cookie over subsequent non-secure/non-SSL requests</p>
<p>If you are using Wifi in any public location, you are potentially at risk of having your sessions and passwords stolen.  Using a VPN prevents this by fully encrypting all of your network traffic between your laptop and a secure server somewhere far away from the insecure WiFi network.</p>
<h3>Fact: Everyone who uses WiFi should be using a VPN to protect themselves.</h3>
<h2></h2>
<h2>So How Do I Get a VPN?</h2>
<p>In the past setting up a VPN was usually a mix of expensive commercial products and complicated technical configurations.  That&#8217;s why usually it&#8217;s only large companies which use them.</p>
<p>Today there are much cheaper and easier options.  One example is Golden Frog&#8217;s VyprVPN,  a <a href="https://www.goldenfrog.com/vyprvpn/vpn-service-provider?PROGRAM=11&amp;bid=387&amp;aid=CD64&amp;opt=">Personal, private and secure VPN</a>.  It&#8217;s a very affordable, easy to setup, VPN solution.  I use it whenever I&#8217;m at the coffee shop or on pubic WiFi networks.  I strongly recommend you check it out, or another similar service.  This is a very real privacy and security threat.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/security/why-you-should-be-using-a-vpn.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ATG Newsletter Went Out</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/atg/atg-newsletter-went-out.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/atg/atg-newsletter-went-out.html#comments</comments>
		<pubDate>Thu, 22 Apr 2010 00:56:52 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[PCI]]></category>
		<category><![CDATA[Spark::red]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=625</guid>
		<description><![CDATA[Our first Spark::red ATG Newsletter was sent on Tuesday morning! We&#8217;re pleased and proud to have delivered the first of many monthly ATG Newsletters. In this newsletter we talk about the importance of improving your site performance, especially now that &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/atg/atg-newsletter-went-out.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Our first <a href="https://www.sparkred.com/subscribe-atg-newsletter.xhtml">Spark::red ATG Newsletter</a> was sent on Tuesday morning!  We&#8217;re pleased and proud to have delivered the first of many monthly ATG Newsletters.</p>
<p>In this newsletter we talk about the importance of improving your site performance, especially now that Google is using site performance as a search result ranking factor.  We talk about Why, and provide several helpful links to help with How.  I&#8217;d be remiss if I didn&#8217;t plug the fantastic<a href="https://www.sparkred.com"> ATG Hosting that Spark::red</a> can provide, including extensive performance tuning at every level, web, app and database, using knowledge gained from 12 years of ATG experience.  </p>
<p>We also reveal our PCI Compliant ATG Encryption Module which is the first PCI complaint credit card encryption option for the ATG eCommerce Platform.  It handles strong encryption, key management, importing plain text and encrypted data, periodic re-keying/re-encryption, and more.  It&#8217;s the fastest and most affordable path to being able to pass a PCI audit for your ATG eCommerce application.  Contact us for more info: <a href="mailto:sales@sparkred.com">sales@sparkred.com</a>.</p>
<p>You can see the whole newsletter here: <a href="https://www.sparkred.com/static/atg-newsletter/Sparkred-ATG-Newsletter-1.pdf">Spark::red ATG Newsletter #1</a>, and if you haven&#8217;t already, I recommend signing up so you don&#8217;t miss the next one: <a href="https://www.sparkred.com/subscribe-atg-newsletter.xhtml">Sign Up for the Sparkred ATG Newsletter</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/atg/atg-newsletter-went-out.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Interesting Phishing Technique</title>
		<link>http://www.digitalsanctuary.com/tech-blog/security/interesting-phishing-technique.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/security/interesting-phishing-technique.html#comments</comments>
		<pubDate>Wed, 24 Mar 2010 23:19:54 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[10MinuteMail]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Spam]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=615</guid>
		<description><![CDATA[I got contacted today with a non-form e-mail from a person offering a partnership which would &#8220;highly increase your context advertisement block (adsense) earnings&#8221; on 10MinuteMail. Essentially saying that they could increase my ad revenue, and would do that for &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/security/interesting-phishing-technique.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I got contacted today with a non-form e-mail from a person offering a partnership which would &#8220;highly increase your context advertisement block (adsense) earnings&#8221; on 10MinuteMail.  Essentially saying that they could increase my ad revenue, and would do that for a share of the increased revenue.</p>
<p>Which sounds good as I was wondering if there was stuff I could be doing with layout or ad types to help increase clicks, except this was from a random guy at a gmx.com address, with no company name.  Googling his name and e-mail address turned up nothing.  So I replied asking for his company info or references, etc&#8230;  </p>
<blockquote><p>
Sorry, but our company has no web<br />
site.<br />
You will easteablish our credibility during partnership with us.<br />
Lets just try it first, ok?<br />
Put this code between the body tags on your 10minutemail.com<br />
main page only:<br />
&lt;img src=&#8221;some russian site&#8221; /&gt;<br />
It is an 1*1px transparent image.
</p></blockquote>
<p>Supposedly after I do that I&#8217;ll see the result in a couple of days.</p>
<p>So wow, little warning bells are now big warning bells.  Adding a web bug can&#8217;t impact your Google adsense revenue.  Adding a web bug to your site from a domain name with no website that&#8217;s registered by someone in Russia seems like a TERRIBLE idea!  So of course I said no.</p>
<p>What do you think?  Some sort of XSS attack, or cookie attack?  I&#8217;m just not sure what the end game would be on this&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/security/interesting-phishing-technique.html/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>DDOS Against 10MinuteMail</title>
		<link>http://www.digitalsanctuary.com/tech-blog/security/ddos-against-10minutemail.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/security/ddos-against-10minutemail.html#comments</comments>
		<pubDate>Mon, 22 Feb 2010 01:29:13 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[10MinuteMail]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[CSF]]></category>
		<category><![CDATA[DDOS]]></category>
		<category><![CDATA[Firewall]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=590</guid>
		<description><![CDATA[You may have noticed 10MinuteMail was unavailable for a few minutes over the last couple of days. 10MinuteMail recently came under a DDOS attack which locked up the site a few times. Most of the malicious traffic came from the &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/security/ddos-against-10minutemail.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>You may have noticed <a href="http://10minutemail.com">10MinuteMail</a> was unavailable for a few minutes over the last couple of days.  10MinuteMail recently came under a DDOS attack which locked up the site a few times.  Most of the malicious traffic came from the Netherlands, Germany, and to a lesser extend other European countries and the USA.  Initially I dealt with it by generating a list of the malicious IPs and adding them to my block list.  However, the DDOS kept spreading (botnet?) so I finally did what I should have done ages ago, and tuned my CSF/IPTables firewall to block DDOS patterns.  So far so good:)</p>
<p>I have NO IDEA why anyone would be attacking 10MinuteMail.  It&#8217;s very odd.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/security/ddos-against-10minutemail.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Monster.com Security Breach</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/atg/monstercom-security-breach.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/atg/monstercom-security-breach.html#comments</comments>
		<pubDate>Sat, 24 Jan 2009 04:59:10 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[hackers]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=239</guid>
		<description><![CDATA[The Monster.com job board database was illegally accessed and large amounts of user data were stolen. As is the case with many companies that maintain large databases of information, Monster is the target of illegal attempts to access and extract &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/atg/monstercom-security-breach.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://monster.com">Monster.com</a> job board database was <a href="http://help.monster.com/besafe/jobseeker/index.asp">illegally accessed and large amounts of user data were stolen</a>.</p>
<p><a href="http://www.digitalsanctuary.com/tech-blog/wp-content/uploads/2009/01/2746775792_12b9a7bed9.jpg"><img src="http://www.digitalsanctuary.com/tech-blog/wp-content/uploads/2009/01/2746775792_12b9a7bed9.jpg" alt="Monster" title="Monster" width="300" height="400" class="alignright size-full wp-image-241" /></a></p>
<blockquote><p>As is the case with many companies that maintain large databases of information, Monster is the target of illegal attempts to access and extract information from its database. We recently learned our database was illegally accessed and certain contact and account data were taken, including Monster user IDs and passwords, email addresses, names, phone numbers, and some basic demographic data. The information accessed does not include resumes. Monster does not generally collect – and the accessed information does not include &#8211; sensitive data such as social security numbers or personal financial data.</p></blockquote>
<p>The fact that the database was accessed illegally (no word on if it was an internal or external access) is a huge deal.  However the fact that they stored passwords in either plaintext, or in a weak enough hash that they feel all the user passwords are compromised, is the most disturbing part of this news in my opinion.  </p>
<p>
<div class="alignright"><font size="-4">Photo by <a href="http://www.flickr.com/photos/dave-rogers/">Dave</a></font></div>
<p>There is no excuse for either of those security failures.  Especially after the <a href="http://www.msnbc.msn.com/id/20534586/">highly public loss of 1.3 million users&#8217; data in 2007</a>.</p>
<p>Assume that your database will be accessed at some point by someone with nefarious intent.  If it can happen to Monster.com it can happen to you.  Therefore you should not store passwords in plaintext or weakly hashed.  </p>
<p>Use a salted SHA-256 or bcrypt hashing algorithm to protect your users&#8217; accounts.  </p>
<p>If you use ATG please check out the open source <a href="http://developer.sparkred.com/confluence/display/ATGDC/DigitalSanctuary+Modules">SecurePassword ATG module</a>.  It replaces the default insecure password hashing algorithm with a salted SHA-256 hashing mechanism.  (as a side note I will develop a bcrypt version shortly, but SSHA-256 is very secure).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/atg/monstercom-security-breach.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AT&amp;T DNS Cache Poisoning</title>
		<link>http://www.digitalsanctuary.com/tech-blog/security/att-dns-cache-poisoning.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/security/att-dns-cache-poisoning.html#comments</comments>
		<pubDate>Fri, 01 Aug 2008 01:19:47 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[phishing]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=140</guid>
		<description><![CDATA[Recently there has been a lot of press about AT&#038;T DNS servers being hit with a DNS Cache Poisoning attack. Some new easier exploits were recently published, and many DNS servers are still vulnerable. And up until the new exploits &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/security/att-dns-cache-poisoning.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recently there has been a lot of press about <a href="http://www.google.com/search?q=AT%26T%20DNS%20poisoning" target="_new">AT&#038;T DNS servers being hit with a DNS Cache Poisoning</a> attack.  </p>
<p>Some new easier exploits were recently published, and many DNS servers are still vulnerable.  And up until the new exploits were published publicly, the majority of DNS servers were vulnerable.  This situation is worse once you realize that &#8220;safe&#8221; DNS servers can be poisoned second hand by transitive trust relationships, allowing one compromised DNS server to effectually poison the caches of other un-compromised DNS servers.</p>
<p>DNS Cache Poisoning has been a serious issue for years.  The recent flurry of press regarding the compromised AT&#038;T DNS servers is just the tip of the iceberg.  It is only reasonable to assume that over the past several years a large number of DNS server have been serving compromised results at some point, either by direct poisoning or indirect poisoning.  It is also reasonable to assume that this will continue for the foreseeable future.  </p>
<p>In light of this, please re-read my post on <a href="http://www.digitalsanctuary.com/tech-blog/security/lions-and-tigers-and-third-party-javascript.html" target="_new">3rd party Javascript</a>.</p>
<p>If I were a malicious hacker, let&#8217;s say working for the Russian Mob, or for myself, here is the easiest way to make some money:</p>
<p>1. Create javascript files designed to mask Google Adwords, Google Analytics, Doubleclick Ads, Overture Ads, and maybe a couple others.  These scripts would have their cache related response headers set to be cached on the browser for 1 year.  These scripts would call back to the real versions of themselves (so that ads show up, etc&#8230;).  They would also intercept any form submission events and would look for form fields with names like &#8220;creditcard&#8221; or &#8220;ssn&#8221; or &#8220;password&#8221; or &#8220;accountnumber&#8221;, etc&#8230;  If any are found, it would essentially clone the form and send the form data, the site hostname and page, the client&#8217;s IP address and cookies, etc&#8230; to a server I control.</p>
<p>2. Start cache poisoning as many DNS servers as I could find that are vulnerable to point the REAL domains for those scripts to my malicious copies.  </p>
<p>3. Sit back and watch the Credit Card numbers roll in.</p>
<p>The best part is that by getting the browser to cache the script locally, I only have to have a computer hit the poisoned cache once to control it for a whole year.  On most IE6 installations it&#8217;s also easy to actually install a javascript application on the user&#8217;s computer.</p>
<p>Personally I use Google javascripts on my site.  However I don&#8217;t capture credit card numbers here, so the risk is low.  If you run an e-commerce site, please do not underestimate the risks involved here.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/security/att-dns-cache-poisoning.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JForum SSO (single sign-on) and Atlassian Crowd</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/jforum-sso-single-sign-on-and-atlassian-crowd.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/jforum-sso-single-sign-on-and-atlassian-crowd.html#comments</comments>
		<pubDate>Sun, 08 Jun 2008 08:24:06 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[atlassian]]></category>
		<category><![CDATA[crowd]]></category>
		<category><![CDATA[forum]]></category>
		<category><![CDATA[jforum]]></category>
		<category><![CDATA[sso]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=123</guid>
		<description><![CDATA[Over at our new ATG Developer Community site, we&#8217;re using Atlassian Crowd to manage our user accounts, groups, and single sign-on (SSO) between Jira, Confluence, to manage Subversion authentication, and to handle the forums (JForum) user accounts. There was an &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/jforum-sso-single-sign-on-and-atlassian-crowd.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Over at our new <a href="http://developer.sparkred.com/" target="_new">ATG Developer Community</a> site, we&#8217;re using <a href="http://www.atlassian.com/software/crowd/" target="_new">Atlassian Crowd</a> to manage our user accounts, groups, and single sign-on (SSO) between Jira, Confluence, to manage Subversion authentication, and to handle the forums (JForum) user accounts.</p>
<p>There was an example on how to integrate JForum and Crowd, which works pretty well.  When you login to the forum, it checks Crowd and creates a local account if needed and logs you in.</p>
<p>However, we want single sign-on (SSO) so that our users don&#8217;t need to login to the forums separately.  We also want group membership in Crowd to be reflected in JForum to allow us to manage permissions based on Crowd managed groups.</p>
<p>I&#8217;ve written a JForum SSO implementation that ties into Crowd that I&#8217;m going to share here.  It&#8217;s version 1.1 (just added group sync), but it seems to work nicely.</p>
<p>Download the zip file here:<br />
<a href='http://www.digitalsanctuary.com/tech-blog/wp-content/uploads/2008/06/jforum-crowd-sso-11.zip'>jforum-crowd-sso</a></p>
<p>unzip it into your jforum/WEB-INF/classes/ directory.</p>
<p>You have to install the crowd client jar, and the crowd.properties file.</p>
<p>You may also need to install the xfire jars if you get errors.  I did.</p>
<p>Then you need to setup the sso configuration in the jforum/WEB-INF/config/SystemGlobals.properties</p>
<p>like this:</p>
<pre>
authentication.type=sso
sso.implementation = com.digitalsanctuary.jforum.CrowdSSO
sso.redirect = your crowd managed app login page
sso.crowd.syncGroups=false
</pre>
<p>That last flag should be set to true if you would like the user&#8217;s groups synced from Crowd to JForum at auth time.  This takes a second, so I made it optional.  It does not push JForum group membership info to Crowd, it just syncs Crowd data down, as Crowd should be your master directory for that type of data.</p>
<p>The source code is available here for now:</p>
<p><a href='http://www.digitalsanctuary.com/tech-blog/wp-content/uploads/2008/06/crowdsso.java'>CrowdSSO.java</a></p>
<p>-EDIT-</p>
<p>Added a full downloadable module and installation instructions here:</p>
<p><a href="http://confluence.atlassian.com/display/CROWDEXT/JForum+Single+Sign-On+Crowd+Connector">http://confluence.atlassian.com/display/CROWDEXT/JForum+Single+Sign-On+Crowd+Connector</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/jforum-sso-single-sign-on-and-atlassian-crowd.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/56 queries in 0.010 seconds using disk: basic
Object Caching 746/885 objects using disk: basic

Served from: www.digitalsanctuary.com @ 2012-02-07 00:26:22 -->
