<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title><![CDATA[[SecurityRatty] tag: developer]]></title>
    <link>http://securityratty.com/tag/developer</link>
    <description></description>
    <pubDate>Wed, 29 Oct 2008 16:49:54 +0000</pubDate>
    <generator>iRatty Engine</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <item>
      <title><![CDATA[Anti-Debugging Series - Part I]]></title>
      <link>http://securityratty.com/article/5dc5d012cfad6c070272eeb8f4c0dc2b</link>
      <guid>http://securityratty.com/article/5dc5d012cfad6c070272eeb8f4c0dc2b</guid>
      <description><![CDATA[For those that dont know, anti-debugging is the implementation of one or more techniques within computer code that hinders attempts at reverse engineering or debugging a target process. Typically this...]]></description>
      <content:encoded><![CDATA[<p>For those that don&#8217;t know, anti-debugging is the implementation of one or more techniques within computer code that hinders attempts at reverse engineering or debugging a target process. Typically this is achieved by detecting minute differences in memory, operating system, process information, latency, etc. that occur when a process is started in or attached to by a debugger compared to when it is not. Most research into anti-debugging has been conducted from the vantage point of a reverse engineer attempting to bypass the techniques that have been implemented. Limited data has been presented that demonstrates anti-debugging methods in a high level language that the average developer can understand. It is with this in mind that I hope to begin a series of posts that present some of the methods of anti-debugging in a clear, concise, and well documented fashion. The end goal of this series is to arm developers with the techniques and knowledge that will allow them to add a layer of protection to their software while simultaneous educating reverse engineers in some of the anti-debugging methods used by malware authors today.</p>
<p>Before we delve into the intricacies of individual methods of anti-debugging let&#8217;s use this post to define the classes of anti-debugging that we will be discussing. While other classes may exist, the definition of these classes is an attempt to include the majority of anti-debugging methods in use today. There is some overlap between classifications and we may have left out some methods due to limited exposure or effectiveness.</p>
<p><strong>API Based Anti-Debugging</strong><br />
API based anti-debugging is the most straightforward and possibly the easiest to understand for a typical developer. Using both documented and undocumented API calls, these methods query process and system information to determine the existence or operation of a debugger. From single line calls such as IsDebuggerPresent() and CheckRemoteDebugger() to slightly more complex methods including debugger detaching and CloseHandle() checks. These methods are generally trivial to add to an existing code base and many can even be implemented in as few as two or three lines.</p>
<p><strong>Exception Based Anti-Debugging</strong><br />
Exception based anti-debugging is slightly different than your basic API based techniques. Many times when a debugger is attached to a process, exceptions are trapped and handled by the debugger without regard to passing the exception back to the application for continued execution. Occasionally these exceptions can even crash or terminate a process when run under a debugger and be handled gracefully when running clean. It is these discrepancies that makes exception based anti-debugging techniques possible.</p>
<p><strong>Process and Thread Block Anti-Debugging</strong><br />
Some of the API based anti-debugging methods use published functions to query information from within the process and thread blocks for our running code. Many API based detections can be subverted within a debugger by hooking the API call and returning values that indicate a clean process. One way around this subversion is to directly query the process and thread blocks, bypassing the API calls. Direct analysis of the process and thread blocks, while more complex, can lead to a more accurate and high assurance result.</p>
<p><strong>Modified Code Anti-Debugging</strong><br />
One of the methods that a debugger uses to signal a breakpoint is to insert a break byte into the running code at the location that it wishes to stop execution. The process execution breaks when this value is seen, giving control to the debugger. When the program is resumed, the breakpoint value is removed and replaced with the original byte, the execution backed up one byte, and the program is resumed. Detection of software based breakpoints can be achieved by analyzing the process for modifications from the expected norm.</p>
<p><strong>Hardware and Register Based Anti-Debugging</strong><br />
A second way that a debugger can break the execution of a process is by using a hardware breakpoint. A hardware breakpoint relies upon CPU registers to store the pertinent information and to detect when the target break addresses are seen on the bus. A break interrupt is triggered at the appropriate time based on these register values. Reading or modifying the hardware can allow for the detection of a debugger.</p>
<p><strong>Timing and Latency Anti-Debugging</strong><br />
Finally timing and latency can be used as an effective anti-debugging method. When executing a program within a debugger, specifically when single stepping, a much larger latency occurs between execution of instructions. This latency can be detected and compared against a reasonable threshold to detect the existence of a debugger attached to our process.</p>
<p>Each of the classes of anti-debugging outlined above has merit when used individually to protect a process. While none of them can be assured to ever protect a program from a determined reverse engineer or debugger, implementation of these techniques (or many of them if appropriate) can sufficiently slow down the debugging process and hopefully make the attacker spend his time on other, easier, ventures. In the remainder of this series on anti-debugging we will review in depth some of the more interesting methods of each of the above classes. So bring along your debugger and your development environment and let the games begin.</p>
]]></content:encoded>
      <pubDate>Tue, 02 Dec 2008 17:56:25 +0000</pubDate>
      <category domain="http://securityratty.com/tag/process execution breaks">process execution breaks</category>
      <category domain="http://securityratty.com/tag/execution">execution</category>
      <category domain="http://securityratty.com/tag/process">process</category>
      <category domain="http://securityratty.com/tag/methods query process">methods query process</category>
      <category domain="http://securityratty.com/tag/hardware breakpoint">hardware breakpoint</category>
      <category domain="http://securityratty.com/tag/hardware">hardware</category>
      <category domain="http://securityratty.com/tag/process information">process information</category>
      <category domain="http://securityratty.com/tag/target process">target process</category>
      <category domain="http://securityratty.com/tag/methods">methods</category>
      <source url="http://www.veracode.com/blog/2008/12/anti-debugging-series-part-i/">Anti-Debugging Series - Part I</source>
    </item>
    <item>
      <title><![CDATA[Links for 2008-11-25 [del.icio.us]]]></title>
      <link>http://securityratty.com/article/5f45c605eed2ff767afb830215eb7e3a</link>
      <guid>http://securityratty.com/article/5f45c605eed2ff767afb830215eb7e3a</guid>
      <description><![CDATA[The Myth of Software Support Chris Swans Weblog
More On Why I Think Free Microsoft AV Will Be Good For Consumers | securosis.com My belief is that we essentially have both conditions today (low...]]></description>
      <content:encoded><![CDATA[<ul>
<li><a href="http://thestateofme.wordpress.com/2008/11/20/the-myth-of-software-support/">The Myth of Software Support &laquo; Chris Swan&rsquo;s Weblog</a></li>
<li><a href="http://securosis.com/2008/11/25/more-on-why-i-think-free-microsoft-av-will-be-good-for-consumers/">More On Why I Think Free Microsoft AV Will Be Good For Consumers | securosis.com</a><br/>
My belief is that we essentially have both conditions today (low innovation, easy evasion), and the nature of attacks will continue to change rapidly enough to exceed the current capabilities of AV.</li>
<li><a href="http://securosis.com/2008/11/21/idiocy/">Idiocy | securosis.com</a></li>
<li><a href="http://securosis.com/2008/11/19/the-impact-of-free-antivirus-from-microsoft/">The Impact Of Free Antivirus From Microsoft | securosis.com</a><br/>
This gives them enough time to avoid suddenly losing 40% (don’t quote me on that, I’m on an airplane and just guessing) of profits over 12 months. The real losers will be the consumer-only AV companies without diversified portfolios or a larger enterprise base.</li>
<li><a href="http://www.csoonline.com/article/463067/Rich_Mogull_Infosec_Trends_for_">Rich Mogull: 7 Infosec Trends for 2009 - CSO Online - Security and Risk</a></li>
<li><a href="http://news.cnet.com/8301-1001_3-10096254-92.html">Safe bets for IT spending in '09 | Business Tech - CNET News</a><br/>
Second, security management will merge with log management. That works for ArcSight, RSA, LogLogic, and LogRhythm.</li>
<li><a href="http://darkmatterlabs.blogspot.com/2008/11/land-of-confusion.html">Dark Matters: Land of Confusion</a></li>
<li><a href="http://www.internetnews.com/software/article.php/3786036/Enterprise+SaaS+Buyers+Want+More+Than+Uptime.htm">InternetNews Realtime IT News - Enterprise SaaS Buyers Want More Than Uptime</a></li>
<li><a href="http://www.socaltech.com/high_tower_software_shuts_down/s-0018681.html">High Tower Software Shuts Down | socalTECH.com</a><br/>
Aliso Viejo-based High Tower Software, a venture-backed developer of security, compliance, and log management software, has shut down.</li>
</ul><img src="http://feeds.feedburner.com/~r/AntonChuvakinPersonalBlog/~4/465834955" height="1" width="1"/>]]></content:encoded>
      <pubDate>Tue, 25 Nov 2008 21:00:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/tower software shuts">tower software shuts</category>
      <category domain="http://securityratty.com/tag/log management software">log management software</category>
      <category domain="http://securityratty.com/tag/log management">log management</category>
      <category domain="http://securityratty.com/tag/tower software">tower software</category>
      <category domain="http://securityratty.com/tag/security">security</category>
      <category domain="http://securityratty.com/tag/security management">security management</category>
      <category domain="http://securityratty.com/tag/larger enterprise base">larger enterprise base</category>
      <category domain="http://securityratty.com/tag/enterprise saas buyers">enterprise saas buyers</category>
      <category domain="http://securityratty.com/tag/cnet news">cnet news</category>
      <source url="http://feeds.feedburner.com/~r/AntonChuvakinPersonalBlog/~3/465834955/anton18">Links for 2008-11-25 [del.icio.us]</source>
    </item>
    <item>
      <title><![CDATA[SIEM Is Not What Is SIEMs Nowadays...]]></title>
      <link>http://securityratty.com/article/b779ea5efa744a1cf0338332b0a8720f</link>
      <guid>http://securityratty.com/article/b779ea5efa744a1cf0338332b0a8720f</guid>
      <description><![CDATA[Aliso Viejo-based High Tower Software, a venture-backed developer of security, compliance, and log management software, has shut down

Wonna go into SIEM market, anybody

About me:...]]></description>
      <content:encoded><![CDATA["<span style="font-family:Arial, Helvetica;">Aliso Viejo-based High Tower Software, a venture-backed developer of security, compliance, and log management software, has shut down."<br /><br />Wonna go into SIEM market, anybody?<br /></span><div class="blogger-post-footer">About me: http://www.chuvakin.org</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/AntonChuvakinPersonalBlog?a=32OrN"><img src="http://feeds.feedburner.com/~f/AntonChuvakinPersonalBlog?i=32OrN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AntonChuvakinPersonalBlog?a=IK9BN"><img src="http://feeds.feedburner.com/~f/AntonChuvakinPersonalBlog?i=IK9BN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AntonChuvakinPersonalBlog?a=ArMaN"><img src="http://feeds.feedburner.com/~f/AntonChuvakinPersonalBlog?i=ArMaN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AntonChuvakinPersonalBlog/~4/465577883" height="1" width="1"/>]]></content:encoded>
      <pubDate>Tue, 25 Nov 2008 12:40:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/log management software">log management software</category>
      <category domain="http://securityratty.com/tag/tower software">tower software</category>
      <category domain="http://securityratty.com/tag/siem market">siem market</category>
      <category domain="http://securityratty.com/tag/compliance">compliance</category>
      <category domain="http://securityratty.com/tag/org">org</category>
      <category domain="http://securityratty.com/tag/wonna">wonna</category>
      <category domain="http://securityratty.com/tag/developer">developer</category>
      <category domain="http://securityratty.com/tag/security">security</category>
      <category domain="http://securityratty.com/tag/chuvakin">chuvakin</category>
      <source url="http://feeds.feedburner.com/~r/AntonChuvakinPersonalBlog/~3/465577883/siem-is-not-what-is-siems-nowadays.html">SIEM Is Not What Is SIEMs Nowadays...</source>
    </item>
    <item>
      <title><![CDATA[Links for 2008-11-20 [del.icio.us]]]></title>
      <link>http://securityratty.com/article/f0421d3d712a177576a6940fd9181128</link>
      <guid>http://securityratty.com/article/f0421d3d712a177576a6940fd9181128</guid>
      <description><![CDATA[Got SIEM? - Part IV eIQviews Customers tend to use SIEM technologies for more reactive efforts, such as post-event forensics, rather than as a true correlation solution to determine unusual behavior...]]></description>
      <content:encoded><![CDATA[<ul>
<li><a href="http://blog.eiqnetworks.com/2008/11/20/got-siem-part-iv/">Got SIEM? - Part IV &laquo; eIQviews</a><br/>
Customers tend to use SIEM technologies for more reactive efforts, such as post-event forensics, rather than as a true correlation solution to determine unusual behavior or policy violations before they have a chance to affect systems and data.</li>
<li><a href="http://siemblog.com/?p=13">SIEM Blog &raquo; Unrestricted Data Collection for Maximum Compliance and Forensic Visibility</a></li>
<li><a href="http://beastorbuddha.com/2008/11/19/so-we-own-your-client-database-and-everything-important-to-you/">Beast Or Buddha &raquo; Blog Archive &raquo; So we own your client database and everything important to you&hellip;</a><br/>
Web Developer: “Just because you can do that doesn’t mean we have a major problem like you say it is. It’s just you that did it!”
SG dude: “Well more than likely, others have….we didn’t do anything fancy…”.
Web Developer: “Well nothing has ever happened so it’s just you guys!”
SG dude: “You have no logging”.
Web Developer: “We’ve never been hacked!”</li>
<li><a href="http://ondlp.com/2008/10/13/my-wife-finally-knows-what-i-do/">On Data Loss Prevention (DLP) &raquo; My Wife Finally Knows What I Do</a></li>
<li><a href="http://securosis.com/2008/11/10/the-two-kinds-of-security-threats-and-how-they-affect-your-life/">The Two Kinds Of Security Threats, And How They Affect Your Life | securosis.com</a><br/>
We get money for noisy threats, and get called paranoid freaks for trying to prevent quiet threats (which can still lose our organizations a boatload of money, but don’t interfere with the married CEO’s ability to flirt with the new girl in marketing over email).</li>
<li><a href="http://www.csoonline.com/article/461422/Marcus_Ranum_on_Network_Security">Marcus Ranum on Network Security - CSO Online - Security and Risk</a><br/>
The real best practices have been the same since the 1970s: know where your data is, who has access to what, read your logs, guard your perimeter, minimize complexity, reduce access to &quot;need only&quot; and segment your networks.</li>
</ul><img src="http://feeds.feedburner.com/~r/AntonChuvakinPersonalBlog/~4/460414088" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 20 Nov 2008 21:00:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/data">data</category>
      <category domain="http://securityratty.com/tag/data collection">data collection</category>
      <category domain="http://securityratty.com/tag/web developer">web developer</category>
      <category domain="http://securityratty.com/tag/siem">siem</category>
      <category domain="http://securityratty.com/tag/data loss prevention">data loss prevention</category>
      <category domain="http://securityratty.com/tag/security">security</category>
      <category domain="http://securityratty.com/tag/siem blog">siem blog</category>
      <category domain="http://securityratty.com/tag/security threats">security threats</category>
      <category domain="http://securityratty.com/tag/network security">network security</category>
      <source url="http://feeds.feedburner.com/~r/AntonChuvakinPersonalBlog/~3/460414088/anton18">Links for 2008-11-20 [del.icio.us]</source>
    </item>
    <item>
      <title><![CDATA[OAuth for Secure Mashups]]></title>
      <link>http://securityratty.com/article/f0ebee1b88f03cd2b1ad9ff61f4608ac</link>
      <guid>http://securityratty.com/article/f0ebee1b88f03cd2b1ad9ff61f4608ac</guid>
      <description><![CDATA[Posted by Eric Sachs, Senior Product Manager, Google Security

A year ago, a number of large and small websites announced a new open standard called OAuth . This standard is designed to provide a...]]></description>
      <content:encoded><![CDATA[<span class="byline-author">Posted by Eric Sachs, Senior Product Manager, Google Security</span><br /><br />A year ago, a number of large and small websites announced a new open standard called <a href="http://oauth.net/" id="hz33" title="OAuth">OAuth</a>. This standard is designed to provide a secure and privacy-preserving technique for enabling specific private data on one site to be accessed by another site.  One popular reason for that type of cross-site access is data portability in areas such as personal health records (such as Google Health or Microsoft Healthvault), as well as social networks (such as OpenSocial enabled sites). I originally became involved in this space in the summer of 2005, when Google started developing a feature called <a href="http://code.google.com/apis/accounts/docs/AuthSub.html" id="e3yh" title="AuthSub">AuthSub</a>, which was one of the pre-cursors of OAuth. That was a proprietary protocol, but one that has been used by hundreds of websites to provide add-on services to Google Account users by getting permission from users to access data in their Google Accounts.  In fact, that was the key feature that a few of us used to start the Google Health portability effort back when it was only a prototype project with a few dedicated Googlers.  <div id="zq.s" style="margin-top: 0px; margin-bottom: 0px;"><br /></div>  <div id="zq.s1" style="margin-top: 0px; margin-bottom: 0px;"> However, with the development of a common Internet standard in OAuth, we see much greater potential for data portability and secure mash-ups. Today we <a href="http://igoogledeveloper.blogspot.com/2008/11/sign-in-to-myspace-aol-mail-and-google.html">announced</a> that the gadget platform now supports OAuth, and the interoperability of this standard was demonstrated by new iGoogle gadgets that AOL and MySpace both built to enable users to see their respective AOL or MySpace mailboxes (and other information) while on iGoogle. However, to ensure the user's privacy, this only works after the user has authorized AOL or MySpace to make their data available to the gadget running on iGoogle.  We also previously <a href="http://googledataapis.blogspot.com/2008/10/whats-that-google-data-gadgets.html" id="w6.8" title="announced">announced</a> that third-party developers can build their own iGoogle gadgets that access the OAuth-enabled APIs for Google applications such as Calendar, Picasa, and Docs. In fact, since both the gadget platform and OAuth technology are open standards, we are working to help other companies who run services similar to iGoogle to enhance them with support for these standards. Once that is in place, these new OAuth-powered gadgets that are available on iGoogle will also work on those other sites, including many of the gadgets that Google offers for its own applications. This provides a platform for some interesting mash-ups.  For example, a third-party developer could create a single gadget that uses OAuth to access both Google OAuth-enabled APIs (such as a Gmail user's <a href="http://code.google.com/apis/contacts/" id="v05v" title="address book">address book</a>) and <a href="http://developer.myspace.com/community/myspace/dataavailability.aspx" id="lewp" title="MySpace OAuth enabled APIs">MySpace OAuth-enabled APIs</a> (such as a user's friend list) and display a mashup of the combination.  </div>  <div id="d23k" style="margin-top: 0px; margin-bottom: 0px;"><br /></div>  <div id="ivuk" style="margin-top: 0px; margin-bottom: 0px;"> While the combination of OAuth with gadgets is an exciting new use of the technology, most of the use of OAuth is between websites, such as to enable a user of Google Health to allow a clinical trial matching site to access his or her health profile.  I previously mentioned that one privacy control provided by OAuth is that it defines a standard way for users to authorize one website to make their data accessible to another website. In addition, OAuth provides a way to do this without the first site needing to reveal the identity of the user -- it simply provides a different opaque security token to each additional website the user wants to share his or her data with.  It would allow a mutual fund, for example, to provide an iGoogle gadget to their customers that would run on iGoogle and show the user the value of his or her mutual fund, but without giving Google any unique information about the user, such as a social security number or account number.  In the future, maybe we will even see industries like banks use standards such as OAuth to allow their customers to authorize utility companies to perform direct debit from the user's bank account without that person having to actually share his or her bank account number with the utility vendor. </div>  <div id="pvsw" style="margin-top: 0px; margin-bottom: 0px;"><br /></div>  <div id="odub" style="margin-top: 0px; margin-bottom: 0px;"> The OAuth community is continuing to enhance this standard and is very interested in having more companies engaged with its development. The <a href="http://oauth.net/" id="q6e4" title="OAuth">OAuth.net</a> website has more details about the current standard, and I maintain a <a href="http://sites.google.com/site/oauthgoog/" id="uw8z" title="website">website</a> with advanced information about Google's use of OAuth, including work on integrating OAuth with desktop apps, and integrating with federation standards such as OpenID and SAML.  If you're interested in engaging with the OAuth community, please get in touch with us. </div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/GoogleOnlineSecurityBlog?a=LcHtN"><img src="http://feeds.feedburner.com/~f/GoogleOnlineSecurityBlog?i=LcHtN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/GoogleOnlineSecurityBlog?a=7jAKn"><img src="http://feeds.feedburner.com/~f/GoogleOnlineSecurityBlog?i=7jAKn" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GoogleOnlineSecurityBlog/~4/458667878" height="1" width="1"/>]]></content:encoded>
      <pubDate>Tue, 18 Nov 2008 14:41:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/oauth">oauth</category>
      <category domain="http://securityratty.com/tag/oauth community">oauth community</category>
      <category domain="http://securityratty.com/tag/google">google</category>
      <category domain="http://securityratty.com/tag/google accounts">google accounts</category>
      <category domain="http://securityratty.com/tag/oauth technology">oauth technology</category>
      <category domain="http://securityratty.com/tag/google security">google security</category>
      <category domain="http://securityratty.com/tag/account">account</category>
      <category domain="http://securityratty.com/tag/bank account">bank account</category>
      <category domain="http://securityratty.com/tag/gadget">gadget</category>
      <source url="http://feeds.feedburner.com/~r/GoogleOnlineSecurityBlog/~3/458667878/oauth-for-secure-mashups.html">OAuth for Secure Mashups</source>
    </item>
    <item>
      <title><![CDATA[OAuth for Secure Mashups]]></title>
      <link>http://securityratty.com/article/dce22eb7ff2c1aceec169c6236231696</link>
      <guid>http://securityratty.com/article/dce22eb7ff2c1aceec169c6236231696</guid>
      <description><![CDATA[Posted by Eric Sachs, Senior Product Manager, Google Security

A year ago, a number of large and small websites announced a new open standard called OAuth . This standard is designed to provide a...]]></description>
      <content:encoded><![CDATA[<span class="byline-author">Posted by Eric Sachs, Senior Product Manager, Google Security</span><br /><br />A year ago, a number of large and small websites announced a new open standard called <a href="http://oauth.net/" id="hz33" title="OAuth">OAuth</a>. This standard is designed to provide a secure and privacy-preserving technique for enabling specific private data on one site to be accessed by another site.  One popular reason for that type of cross-site access is data portability in areas such as personal health records (such as Google Health or Microsoft Healthvault), as well as social networks (such as OpenSocial enabled sites). I originally became involved in this space in the summer of 2005, when Google started developing a feature called <a href="http://code.google.com/apis/accounts/docs/AuthSub.html" id="e3yh" title="AuthSub">AuthSub</a>, which was one of the pre-cursors of OAuth. That was a proprietary protocol, but one that has been used by hundreds of websites to provide add-on services to Google Account users by getting permission from users to access data in their Google Accounts.  In fact, that was the key feature that a few of us used to start the Google Health portability effort back when it was only a prototype project with a few dedicated Googlers.  <div id="zq.s" style="margin-top: 0px; margin-bottom: 0px;"><br /></div>  <div id="zq.s1" style="margin-top: 0px; margin-bottom: 0px;"> However, with the development of a common Internet standard in OAuth, we see much greater potential for data portability and secure mash-ups. Today we <a href="http://igoogledeveloper.blogspot.com/2008/11/sign-in-to-myspace-aol-mail-and-google.html">announced</a> that the gadget platform now supports OAuth, and the interoperability of this standard was demonstrated by new iGoogle gadgets that AOL and MySpace both built to enable users to see their respective AOL or MySpace mailboxes (and other information) while on iGoogle. However, to ensure the user's privacy, this only works after the user has authorized AOL or MySpace to make their data available to the gadget running on iGoogle.  We also previously <a href="http://googledataapis.blogspot.com/2008/10/whats-that-google-data-gadgets.html" id="w6.8" title="announced">announced</a> that third-party developers can build their own iGoogle gadgets that access the OAuth-enabled APIs for Google applications such as Calendar, Picasa, and Docs. In fact, since both the gadget platform and OAuth technology are open standards, we are working to help other companies who run services similar to iGoogle to enhance them with support for these standards. Once that is in place, these new OAuth-powered gadgets that are available on iGoogle will also work on those other sites, including many of the gadgets that Google offers for its own applications. This provides a platform for some interesting mash-ups.  For example, a third-party developer could create a single gadget that uses OAuth to access both Google OAuth-enabled APIs (such as a Gmail user's <a href="http://code.google.com/apis/contacts/" id="v05v" title="address book">address book</a>) and <a href="http://developer.myspace.com/community/myspace/dataavailability.aspx" id="lewp" title="MySpace OAuth enabled APIs">MySpace OAuth-enabled APIs</a> (such as a user's friend list) and display a mashup of the combination.  </div>  <div id="d23k" style="margin-top: 0px; margin-bottom: 0px;"><br /></div>  <div id="ivuk" style="margin-top: 0px; margin-bottom: 0px;"> While the combination of OAuth with gadgets is an exciting new use of the technology, most of the use of OAuth is between websites, such as to enable a user of Google Health to allow a clinical trial matching site to access his or her health profile.  I previously mentioned that one privacy control provided by OAuth is that it defines a standard way for users to authorize one website to make their data accessible to another website. In addition, OAuth provides a way to do this without the first site needing to reveal the identity of the user -- it simply provides a different opaque security token to each additional website the user wants to share his or her data with.  It would allow a mutual fund, for example, to provide an iGoogle gadget to their customers that would run on iGoogle and show the user the value of his or her mutual fund, but without giving Google any unique information about the user, such as a social security number or account number.  In the future, maybe we will even see industries like banks use standards such as OAuth to allow their customers to authorize utility companies to perform direct debit from the user's bank account without that person having to actually share his or her bank account number with the utility vendor. </div>  <div id="pvsw" style="margin-top: 0px; margin-bottom: 0px;"><br /></div>  <div id="odub" style="margin-top: 0px; margin-bottom: 0px;"> The OAuth community is continuing to enhance this standard and is very interested in having more companies engaged with its development. The <a href="http://oauth.net/" id="q6e4" title="OAuth">OAuth.net</a> website has more details about the current standard, and I maintain a <a href="http://sites.google.com/site/oauthgoog/" id="uw8z" title="website">website</a> with advanced information about Google's use of OAuth, including work on integrating OAuth with desktop apps, and integrating with federation standards such as OpenID and SAML.  If you're interested in engaging with the OAuth community, please get in touch with us. </div><div class="feedflare">
<a href="http://feedproxy.google.com/~f/GoogleOnlineSecurityBlog?a=RbYKY1QI"><img src="http://feedproxy.google.com/~f/GoogleOnlineSecurityBlog?d=41" border="0"></img></a> <a href="http://feedproxy.google.com/~f/GoogleOnlineSecurityBlog?a=livMlZFo"><img src="http://feedproxy.google.com/~f/GoogleOnlineSecurityBlog?i=livMlZFo" border="0"></img></a>
</div><img src="http://feedproxy.google.com/~r/GoogleOnlineSecurityBlog/~4/bEpTg1dntxU" height="1" width="1"/>]]></content:encoded>
      <pubDate>Tue, 18 Nov 2008 14:41:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/oauth">oauth</category>
      <category domain="http://securityratty.com/tag/oauth community">oauth community</category>
      <category domain="http://securityratty.com/tag/google">google</category>
      <category domain="http://securityratty.com/tag/google accounts">google accounts</category>
      <category domain="http://securityratty.com/tag/oauth technology">oauth technology</category>
      <category domain="http://securityratty.com/tag/google security">google security</category>
      <category domain="http://securityratty.com/tag/account">account</category>
      <category domain="http://securityratty.com/tag/bank account">bank account</category>
      <category domain="http://securityratty.com/tag/gadget">gadget</category>
      <source url="http://feedproxy.google.com/~r/GoogleOnlineSecurityBlog/~3/bEpTg1dntxU/oauth-for-secure-mashups.html">OAuth for Secure Mashups</source>
    </item>
    <item>
      <title><![CDATA[Kaspersky remains in the best category]]></title>
      <link>http://securityratty.com/article/f2f0eb2d0d03629917ccf3b3653a6d07</link>
      <guid>http://securityratty.com/article/f2f0eb2d0d03629917ccf3b3653a6d07</guid>
      <description><![CDATA[Ive always been a fan of the Kaspersky products


clipped from www.kaspersky.com

Kaspersky Anti-Virus 2009 receives the Gold Malware Treatment Award from Anti-Malware Test Lab

Kaspersky Lab, a...]]></description>
      <content:encoded><![CDATA[<div > Ive always been a fan of the Kaspersky products. </div>
<table cellpadding="0" cellspacing="0" width="100%" style="margin: 12px 0px; font-family: arial; color: #333333; background: #ffffff; border: solid 4px #e5e5e5; width: 100%; clear: left;">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" width="100%" class="CM_CTB_Content_Wrap" style="margin: 0px; padding: 0px;background-color: #ffffff;">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" width="100%" style="border-bottom: solid 1px #dcdcdc; white-space: nowrap; margin-bottom: 8px; background-color: #eeeeee ;background-image: url(http://clipmarks.com/images/source-bg.gif); background-repeat: repeat-x; height: 24px; line-height: 24px; vertical-align: middle; padding-bottom: 4px; color: #666666; font-size: 10px;">
<tr>
<td valign="top"><a href="http://clipmarks.com/clipmark/D2EAD4D2-0171-4400-A4F5-6CA112AA37D9/" title="go to this clipmark"><img src="http://content.clipmarks.com/blog_icon/e156200e-eb8e-440c-8ec0-000c9179c136/D2EAD4D2-0171-4400-A4F5-6CA112AA37D9/" alt="" width="19" height="19" border="0" style="vertical-align: middle; margin: 0px 4px; display: inline; border: none; float:none;" /></a>clipped from <a title="http://www.kaspersky.com/news?id=207575705" href="http://www.kaspersky.com/news?id=207575705" style="font-size: 11px;">www.kaspersky.com</a></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" width="100%" style="text-align: left; padding: 0px 8px; margin: 4px 0px 8px 0px; background: transparent; border: none;">
<tr>
<td valign="top"><!-- CLIPPED FROM: http://www.kaspersky.com/news?id=207575705 -->
<div style="margin: 4px 0px; color: #000000; font-size: 20px;">Kaspersky Anti-Virus 2009 receives the Gold Malware Treatment Award from Anti-Malware Test Lab</div>
</td>
</tr>
</table>
<div style="height: 2px; font-size: 2px; background: #dcdcdc; border-bottom: solid 1px #f5f5f5; margin: 2px 4px;"></div>
<table cellpadding="0" cellspacing="0" width="100%" style="text-align: left; padding: 0px 8px; margin: 4px 0px 8px 0px; background: transparent; border: none;">
<tr>
<td valign="top"><!-- CLIPPED FROM: http://www.kaspersky.com/news?id=207575705 --><H3><IMG height="65" border="0" width="65" alt="Malware Treatment Gold: Anti-Malware.ru" src="http://images.kaspersky.com/en/awards/malware_treatment_gold.jpg" />Kaspersky Lab, a leading developer of secure content management solutions, announces that Kaspersky Anti-Virus 2009 has received the Gold Malware Treatment Award from respected security software test laboratory Anti-Malware Test Lab. </H3></td>
</tr>
</table>
</td>
</tr>
</table>
<div style="margin: 0px 6px 6px 4px;">
<table style="font-size: 11px;border-spacing: 0px;padding: 0px;" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="background:transparent;border-width:0px;padding:0px;">&nbsp;</td>
<td align="right" style="background:transparent;border-width:0px;padding:0px;width:107px" width="107"><a href="http://clipmarks.com/share/D2EAD4D2-0171-4400-A4F5-6CA112AA37D9/blog/" title="blog or email this clip"><img src="http://content7.clipmarks.com/images/c2b-foot.png" border="0" alt="blog it" width="107" height="17" style="border-width:0px;padding:0px;margin:0px;" /></a></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<BR/><MAP name="bdv_RSS_Ad_131108050914"><AREA alt="Feed Ads By BidVertiser.com" shape="poly" coords="0,0,467,0,467,45,315,45,315,59,0,59" href="http://secure.bidvertiser.com/performance/bdv_rss_rd.dbm?pid=165886&amp;bid=400950&amp;PHS=131108050914&amp;click=1" target="_blank" /><AREA alt="Feed Ads By BidVertiser.com" shape="rect" coords="315,45,467,59" href="http://www.bidvertiser.com/bdv/bidvertiser/bdv_ref.dbm?Ref_PID=165886&amp;Ref_Option=main&amp;source=90614506" target="_blank" /></MAP><P><a href="http://secure.bidvertiser.com/performance/bdv_rss_rd.dbm?pid=165886&amp;bid=400950&amp;PHS=131108050914&amp;click=1" target="_blank"><IMG src="http://bdv.bidvertiser.com/BidVertiser.dbm?pid=165886&amp;bid=400950&amp;PHS=131108050914&amp;rssimage=1&amp;rSRC=2" border="0" usemap="#bdv_RSS_Ad_131108050914" /></a></P>]]></content:encoded>
      <pubDate>Thu, 13 Nov 2008 14:09:14 +0000</pubDate>
      <category domain="http://securityratty.com/tag/kaspersky">kaspersky</category>
      <category domain="http://securityratty.com/tag/kaspersky lab">kaspersky lab</category>
      <category domain="http://securityratty.com/tag/kaspersky anti-virus">kaspersky anti-virus</category>
      <category domain="http://securityratty.com/tag/anti-malware test lab">anti-malware test lab</category>
      <category domain="http://securityratty.com/tag/kaspersky products">kaspersky products</category>
      <category domain="http://securityratty.com/tag/fan">fan</category>
      <category domain="http://securityratty.com/tag/receives">receives</category>
      <category domain="http://securityratty.com/tag/developer">developer</category>
      <category domain="http://securityratty.com/tag/announces">announces</category>
      <source url="http://spywarebiz.com/spywarebizblog/?p=656">Kaspersky remains in the best category</source>
    </item>
    <item>
      <title><![CDATA[Android may not need antivirus software, researcher says]]></title>
      <link>http://securityratty.com/article/a77b43c186011192ea5894238922d2ea</link>
      <guid>http://securityratty.com/article/a77b43c186011192ea5894238922d2ea</guid>
      <description><![CDATA[Antivirus developer SMobile released software this week to protect users of the G1 Android phone, although one security analyst wondered if people really need...]]></description>
      <content:encoded><![CDATA[Antivirus developer SMobile released software this week to protect users of the G1 Android phone, although one security analyst wondered if people really need it.]]></content:encoded>
      <pubDate>Thu, 06 Nov 2008 21:00:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/antivirus developer smobile">antivirus developer smobile</category>
      <category domain="http://securityratty.com/tag/software">software</category>
      <category domain="http://securityratty.com/tag/android phone">android phone</category>
      <category domain="http://securityratty.com/tag/protect users">protect users</category>
      <category domain="http://securityratty.com/tag/security analyst">security analyst</category>
      <category domain="http://securityratty.com/tag/people">people</category>
      <category domain="http://securityratty.com/tag/week">week</category>
      <source url="http://www.networkworld.com/news/2008/110708-android-may-not-need-antivirus.html?fsrc=rss-security">Android may not need antivirus software, researcher says</source>
    </item>
    <item>
      <title><![CDATA[Researcher: Android may not need antivirus software]]></title>
      <link>http://securityratty.com/article/af8a64fb93b85d177651b6eedd104656</link>
      <guid>http://securityratty.com/article/af8a64fb93b85d177651b6eedd104656</guid>
      <description><![CDATA[Antivirus developer SMobile released software this week to protect users of the G1 Android phone, but one analyst wondered if it's...]]></description>
      <content:encoded><![CDATA[Antivirus developer SMobile released software this week to protect users of the G1 Android phone, but one analyst wondered if it's needed.<br style="clear: both;"/>
    <a style='font-size: 10px; color: maroon;' href='http://www.pheedo.com/hostedMorselClick.php?hfmm=v3:f8286785aa12b1fb4be2a322a4671371:vs%2BhEi2XYTqihKgWmHq38L9sipciLpCLl%2FK%2F68b4BSRmqGbTiuvMIf6OEXMOHxPFae%2BG2MYo%2F6En'><img border='0' title='Add to digg' alt='Add to digg' src='http://www.pheedo.com/images/mm/digg.gif'/></a>
    <a style='font-size: 10px; color: maroon;' href='http://www.pheedo.com/hostedMorselClick.php?hfmm=v3:385d329134448df198312eb5e3964015:jx%2BH200%2BxGePqWcZPwG%2BU4bmSVCMxbrsujuMBxfXfTLR5tQWg6ycOPg6w76yED6yBEzX5j5HeCUi%2Bw%3D%3D'><img border='0' title='Add to StumbleUpon' alt='Add to StumbleUpon' src='http://www.pheedo.com/images/mm/stumbleit.gif'/></a>
    <a style='font-size: 10px; color: maroon;' href='http://www.pheedo.com/hostedMorselClick.php?hfmm=v3:e62eb47c655085d22e9d3925857e099f:gxYquns2HMH2ZmUBFecba9ITCVjlYjrpJp9fwOhOYzw4Zqc%2FD1d13Wnwc5S3zYgRuk5CiQwwmgdh2A%3D%3D'><img border='0' title='Add to Twitter' alt='Add to Twitter' src='http://www.pheedo.com/images/mm/twitter.png'/></a>
    <a style='font-size: 10px; color: maroon;' href='http://www.pheedo.com/hostedMorselClick.php?hfmm=v3:6598d974eaa4f505689df5d2da22ef56:oAlp5C5j%2BbZ68VSETjMhCfCciCpYi%2B30Y6WusC%2FCuP2JsqHZHxIoP1t7q3vvMTGHX%2BUxRiPIKznpjw%3D%3D'><img border='0' title='Add to Slashdot' alt='Add to Slashdot' src='http://www.pheedo.com/images/mm/slashdot.png'/></a>
<br style="clear: both;"/>      <a href="http://www.pheedo.com/feeds/ht.php?t=c&amp;i=d2ed39af746b3a4bbed6911966c49b3f"><img src="http://www.pheedo.com/feeds/ht.php?t=v&amp;i=d2ed39af746b3a4bbed6911966c49b3f" border="0" /></a>
  <img src="http://www.pheedo.com/feeds/tracker.php?i=d2ed39af746b3a4bbed6911966c49b3f" style="display: none;" border="0" height="1" width="1" alt=""/>]]></content:encoded>
      <pubDate>Thu, 06 Nov 2008 02:00:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/antivirus developer smobile">antivirus developer smobile</category>
      <category domain="http://securityratty.com/tag/software">software</category>
      <category domain="http://securityratty.com/tag/android phone">android phone</category>
      <category domain="http://securityratty.com/tag/protect users">protect users</category>
      <category domain="http://securityratty.com/tag/week">week</category>
      <category domain="http://securityratty.com/tag/analyst">analyst</category>
      <source url="http://feeds.computerworld.com/click.phdo?i=d2ed39af746b3a4bbed6911966c49b3f">Researcher: Android may not need antivirus software</source>
    </item>
    <item>
      <title><![CDATA[PasswordTextBox]]></title>
      <link>http://securityratty.com/article/4e1580792b56914339b6489792b99933</link>
      <guid>http://securityratty.com/article/4e1580792b56914339b6489792b99933</guid>
      <description><![CDATA[Chris Sells used to poke fun at me when we worked together in my former life . He used to call my security class, &quot;Essential Access Denied&quot;. His point was a good one: when they aren't applied...]]></description>
      <content:encoded><![CDATA[<p><a href="http://www.sellsbrothers.com/" target="_blank">Chris Sells</a> used to poke fun at me when we worked together in my <a href="http://www.flickr.com/photos/andyrs/240203382/" target="_blank">former life</a>. He used to call my security class, &quot;Essential Access Denied&quot;. His point was a good one: when they aren&#39;t applied carefully, security countermeasures often just get in the way of getting work done. I don&#39;t know about you, but password-mode text boxes in web forms have always been one of those annoyances.</p> <p>I&#39;m not complaining about the fact that I can&#39;t see what I&#39;m typing. I understand and laud that feature, because I don&#39;t want someone looking over my shoulder at the password I&#39;m typing, and this even applies when I&#39;m at home. I love my children, but I certainly don&#39;t want them knowing the password to my bank account!</p> <p>No, what I&#39;m bothered by is how a typical password text box behaves on a form that may incur multiple post-backs before it&#39;s finally submitted. If you use the built in ASP.NET TextBox control, it purposely does not repopulate the password text, which means if you press a button on the form that performs a post-back, or if you have a multi-page form that posts back on every step, that password disappears, and the user typically has to re-enter it. You could solve this with liberal use of ASP.NET Ajax UpdatePanels, but that adds its own complexities. I wanted a simpler solution.</p> <p>So I did a little research to see what others had discovered about this problem, and I ended up deriving my own custom control from TextBox to make a much more user-friendly (and developer-friendly) TextBox control. I called it PasswordTextBox, and it acts just like a TextBox in password mode, but it retains the password while still giving the user the same level of protection the standard TextBox supplies.</p> <p>My PasswordTextBox operates very simply: it stores the password in control state, and renders a series of fixed characters (with the same length as the actual password) into the text box so that it &quot;looks&quot; like the user&#39;s password has been rendered. Since control state is part of view state, and since view state is stored in a hidden field on the form, I encrypt the password before putting it into control state.</p> <p>The result is quite nice - the user can post your form back as many times as she needs to, perhaps moving back and forth across wizard steps or tabs, and when she finally presses the &quot;Finish&quot; button (or whatever you call the last step of your input form), your code will be able to read the password by simply accessing the Text property on the PasswordTextBox. The user will believe that her password is sitting there on the form while she&#39;s working, as the same number of obfuscated characters will show up in the field as she typed in originally (what she doesn&#39;t know is that those characters aren&#39;t her real password anymore, but what she doesn&#39;t know won&#39;t hurt her!)</p> <p>Note that to keep this simple, I used DPAPI to encrypt the password, which suited my purposes. But if you have a web farm, that won&#39;t work well at all if you don&#39;t know which machine the user&#39;s going to post back to, so you&#39;ll want to replace that with something more robust. I could see looking up the &lt;machineKey&gt; for entropy, as that tends to be sync&#39;d already across the farm, but I&#39;ve not yet spent the cycles to go down that road, since unfortunately all of the code for generating keys based on that config section are off limits in ASP.NET (most of the useful stuff is marked internal). I don&#39;t think it&#39;d be that hard to do though.</p> <p>Anyway, without further ado, here&#39;s the code, which you&#39;ll see is quite simple. I&#39;d love feedback, especially if you see any glaring problems with the idea or the implementation!</p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> PasswordTextBox : TextBox
{
    <span class="rem">// unlikely that a string of these would be used for a password</span>
    <span class="kwrd">const</span> <span class="kwrd">char</span> PasswordPlaceholderChar = <span class="str">&#39;}&#39;</span>;

    <span class="kwrd">string</span> password; <span class="rem">// stored encrypted in control state</span>

    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> OnInit(EventArgs e)
    {
        <span class="kwrd">base</span>.OnInit(e);
        Page.RegisterRequiresControlState(<span class="kwrd">this</span>);
    }

    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">object</span> SaveControlState()
    {
        <span class="kwrd">byte</span>[] encryptedPassword = ProtectPassword(password);

        <span class="kwrd">object</span> baseControlState = <span class="kwrd">base</span>.SaveControlState();
        <span class="kwrd">if</span> (<span class="kwrd">null</span> == baseControlState)
            <span class="kwrd">return</span> encryptedPassword;
        <span class="kwrd">else</span> <span class="kwrd">return</span> <span class="kwrd">new</span> Pair(baseControlState, encryptedPassword);
    }

    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> LoadControlState(<span class="kwrd">object</span> savedState)
    {
        <span class="kwrd">byte</span>[] encryptedPassword;

        Pair pair = savedState <span class="kwrd">as</span> Pair;
        <span class="kwrd">if</span> (<span class="kwrd">null</span> != pair)
        {
            <span class="kwrd">base</span>.LoadControlState(pair.First);
            encryptedPassword = pair.Second <span class="kwrd">as</span> <span class="kwrd">byte</span>[];
        }
        <span class="kwrd">else</span> encryptedPassword = savedState <span class="kwrd">as</span> <span class="kwrd">byte</span>[];

        password = UnprotectPassword(encryptedPassword);
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// This control always uses TextMode=Password</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">override</span> TextBoxMode TextMode
    {
        get
        {
            <span class="kwrd">return</span> TextBoxMode.Password;
        }
        set { }
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// TextBox doesn&#39;t render value attribute for TextMode=Password</span>
    <span class="rem">/// So we add code that renders a placeholder text instead</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="rem">/// &lt;param name=&quot;writer&quot;&gt;&lt;/param&gt;</span>
    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> AddAttributesToRender(HtmlTextWriter writer)
    {
        <span class="kwrd">base</span>.AddAttributesToRender(writer);

        <span class="kwrd">string</span> text = Text;
        <span class="kwrd">if</span> (text.Length &gt; 0)
            writer.AddAttribute(HtmlTextWriterAttribute.Value,
                GetPlaceholderPassword(text));
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// TextBox doesn&#39;t save the &quot;Text&quot; viewstate in</span>
    <span class="rem">/// TextMode=Password and we don&#39;t want our behavior to break</span>
    <span class="rem">/// if ViewState is turned off so we store the password in</span>
    <span class="rem">/// Control State, encrypted with MachineKey</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">string</span> Text
    {
        get
        {
            <span class="kwrd">return</span> password ?? <span class="kwrd">string</span>.Empty;
        }
        set
        {
            <span class="rem">// this prevents us overwriting the actual</span>
            <span class="rem">// password with a placeholder</span>
            <span class="kwrd">if</span> (!<span class="kwrd">string</span>.IsNullOrEmpty(password) &amp;&amp;
                <span class="kwrd">value</span>.Equals(GetPlaceholderPassword(password)))
                <span class="kwrd">return</span>;

            password = <span class="kwrd">value</span>;
        }
    }

    <span class="kwrd">private</span> <span class="kwrd">string</span> GetPlaceholderPassword(<span class="kwrd">string</span> realPassword)
    {
        <span class="kwrd">int</span> length = 12;
        <span class="kwrd">if</span> (!<span class="kwrd">string</span>.IsNullOrEmpty(realPassword))
            length = realPassword.Length;

        StringBuilder sb = <span class="kwrd">new</span> StringBuilder();
        sb.Append(PasswordPlaceholderChar, length);

        <span class="kwrd">return</span> sb.ToString();
    }

    <span class="kwrd">public</span> <span class="kwrd">byte</span>[] ProtectPassword(<span class="kwrd">string</span> password)
    {
        <span class="kwrd">if</span> (<span class="kwrd">string</span>.IsNullOrEmpty(password))
            <span class="kwrd">return</span> <span class="kwrd">null</span>;
        <span class="kwrd">byte</span>[] cleartext = Encoding.UTF8.GetBytes(password);
        <span class="kwrd">return</span> ProtectedData.Protect(cleartext, <span class="kwrd">null</span>,
            DataProtectionScope.LocalMachine);
    }

    <span class="kwrd">public</span> <span class="kwrd">string</span> UnprotectPassword(<span class="kwrd">byte</span>[] ciphertext)
    {
        <span class="kwrd">if</span> (<span class="kwrd">null</span> == ciphertext)
            <span class="kwrd">return</span> <span class="kwrd">null</span>;
        <span class="kwrd">byte</span>[] cleartext = ProtectedData.Unprotect(ciphertext, <span class="kwrd">null</span>,
            DataProtectionScope.LocalMachine);
        <span class="kwrd">return</span> Encoding.UTF8.GetString(cleartext);
    }
}
</pre><div style="clear:both;"></div><img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=54154" width="1" height="1">]]></content:encoded>
      <pubDate>Wed, 29 Oct 2008 16:49:54 +0000</pubDate>
      <category domain="http://securityratty.com/tag/password-mode text boxes">password-mode text boxes</category>
      <category domain="http://securityratty.com/tag/text">text</category>
      <category domain="http://securityratty.com/tag/return null">return null</category>
      <category domain="http://securityratty.com/tag/return">return</category>
      <category domain="http://securityratty.com/tag/net">net</category>
      <category domain="http://securityratty.com/tag/net ajax updatepanels">net ajax updatepanels</category>
      <category domain="http://securityratty.com/tag/net textbox control">net textbox control</category>
      <category domain="http://securityratty.com/tag/password">password</category>
      <category domain="http://securityratty.com/tag/textbox control">textbox control</category>
      <source url="http://www.pluralsight.com/community/blogs/keith/archive/2008/10/29/passwordtextbox.aspx">PasswordTextBox</source>
    </item>
  </channel>
</rss>
