<?xml version="1.0" encoding="iso-8859-1"?>

<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel rdf:about="http://www.secureprogramming.com/?action=browse&amp;feature=recipes">
        <title>Secure Programming Recipes</title>
        <link>http://www.secureprogramming.com/?action=browse&amp;feature=recipes</link>
        <description>Cookbook-style recipes for tackling programming problems securely.</description>

        <dc:language>en-us</dc:language>
        <dc:date>2010-09-03T13:28:33+00:00</dc:date>

        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=24"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=23"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=20"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=16"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=15"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=14"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=13"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=12"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=11"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=10"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=9"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=8"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=7"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=5"/>
                <rdf:li rdf:resource="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=4"/>
            </rdf:Seq>
        </items>
    </channel>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=24">
        <title>Win32: Obtaining CRLs with CryptoAPI</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=24</link>
        <description>Recipe 10.11 in the book &quot;Secure Programming Cookbook for C and C++&quot; showed an example of how to retrieve CRLs from a CA specified as a URL in the extension properties of an X.509 Ce...</description>
        <content:encoded><![CDATA[Recipe 10.11 in the book &quot;Secure Programming Cookbook for C and C++&quot; showed an example of how to retrieve CRLs from a CA specified as a URL in the extension properties of an X.509 Certificate.  The code presented in book used its own &quot;search&quot; function to find a <code>cRLDistributionPoints</code> extension in the certificate, and the Win32 WinInet functions to download the CRL from an HTTP or HTTPS location.  Other types of URLs are possible as well, including LDAP and FTP; however, the code presented in the book does not support anything other than HTTP and HTTPS.]]></content:encoded>
        <dc:creator>Matt Messier</dc:creator>
        <dc:contributor>Sascha Kiefer</dc:contributor>
        <dc:date>2003-12-02T03:37:20+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=23">
        <title>Another shuffling algorithm</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=23</link>
        <description>Most shuffling algorithms people use aren't statistically fair.  Fair ones tend to be subtle or complex.    You want a shuffling algorithm that is fairly simple, unbiased, easy to demonstrate ...</description>
        <content:encoded><![CDATA[Most shuffling algorithms people use aren't statistically fair.  Fair ones tend to be subtle or complex.    You want a shuffling algorithm that is fairly simple, unbiased, easy to demonstrate correct and programmatically verifiable.]]></content:encoded>
        <dc:creator>John Viega</dc:creator>
        <dc:contributor>Bear Giles</dc:contributor>
        <dc:date>2003-10-10T13:47:14+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=20">
        <title>Using /dev/random from Python</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=20</link>
        <description>You are using Python and would like to have a source of cryptographically secure psuedo-random numbers.</description>
        <content:encoded><![CDATA[You are using Python and would like to have a source of cryptographically secure psuedo-random numbers.]]></content:encoded>
        <dc:creator>John Viega</dc:creator>
        <dc:contributor>John Viega</dc:contributor>
        <dc:date>2003-09-24T05:44:54+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=16">
        <title>Using Environment Variables Securely</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=16</link>
        <description>You wish to harden the code in case an OS doesn't limit environment size.</description>
        <content:encoded><![CDATA[You wish to harden the code in case an OS doesn't limit environment size.]]></content:encoded>
        <dc:creator>Matt Messier</dc:creator>
        <dc:contributor>Matt Messier</dc:contributor>
        <dc:date>2003-09-14T21:20:15+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=15">
        <title>Sanitizing the Environment</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=15</link>
        <description>You wish to harden the code in case an OS doesn't limit environment size.</description>
        <content:encoded><![CDATA[You wish to harden the code in case an OS doesn't limit environment size.]]></content:encoded>
        <dc:creator>Matt Messier</dc:creator>
        <dc:contributor>Matt Messier</dc:contributor>
        <dc:date>2003-09-14T21:06:45+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=14">
        <title>Avoiding malloc()/new-related integer overflows</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=14</link>
        <description>Integer overflows can lead to allocating too little memory, which can often result in an exploitable buffer overflow.</description>
        <content:encoded><![CDATA[Integer overflows can lead to allocating too little memory, which can often result in an exploitable buffer overflow.]]></content:encoded>
        <dc:creator>John Viega</dc:creator>
        <dc:contributor>John Viega</dc:contributor>
        <dc:date>2003-09-14T03:58:34+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=13">
        <title>Using a CBC-like mode without padding in C and C++ (CTS mode)</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=13</link>
        <description>You wish to use a block-based block cipher mode such as CBC (as opposed to a streaming mode), yet do not want to perform message padding.</description>
        <content:encoded><![CDATA[You wish to use a block-based block cipher mode such as CBC (as opposed to a streaming mode), yet do not want to perform message padding.]]></content:encoded>
        <dc:creator>John Viega</dc:creator>
        <dc:contributor>John Viega</dc:contributor>
        <dc:date>2003-09-08T08:26:49+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=12">
        <title>Another Input Validation Principle: Decode First</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=12</link>
        <description>You have data coming into your application, and you would like to filter or reject data that may be malicious.  The data may need to be decoded, truncated or so on.</description>
        <content:encoded><![CDATA[You have data coming into your application, and you would like to filter or reject data that may be malicious.  The data may need to be decoded, truncated or so on.]]></content:encoded>
        <dc:creator>John Viega</dc:creator>
        <dc:contributor>John Viega</dc:contributor>
        <dc:date>2003-09-08T03:56:31+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=11">
        <title>Truncating Data Carefully in C and C++</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=11</link>
        <description>When avoiding buffer overflows by truncating data, there is the possibility of introducing new problems.  Additionally, one should watch out for situations where an attacker can truncate data ...</description>
        <content:encoded><![CDATA[When avoiding buffer overflows by truncating data, there is the possibility of introducing new problems.  Additionally, one should watch out for situations where an attacker can truncate data in a way the program doesn't expect.]]></content:encoded>
        <dc:creator>John Viega</dc:creator>
        <dc:contributor>John Viega</dc:contributor>
        <dc:date>2003-09-08T03:28:45+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=10">
        <title>Watching Out for API Differences (And Using *snprintf Properly in C)</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=10</link>
        <description>A change in API semantics that doesn't break the call by changing the signature can lead to insecurities when a developer tries to call one version of the API but gets a different version.  Th...</description>
        <content:encoded><![CDATA[A change in API semantics that doesn't break the call by changing the signature can lead to insecurities when a developer tries to call one version of the API but gets a different version.  This can be a problem when APIs are slightly different between platforms.]]></content:encoded>
        <dc:creator>John Viega</dc:creator>
        <dc:contributor>John Viega</dc:contributor>
        <dc:date>2003-09-07T22:21:45+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=9">
        <title>Knowing Which Ciphers to Avoid</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=9</link>
        <description>You're using a library providing symmetric encryption ciphers, and want to know if any of them are to be avoided.</description>
        <content:encoded><![CDATA[You're using a library providing symmetric encryption ciphers, and want to know if any of them are to be avoided.]]></content:encoded>
        <dc:creator>John Viega</dc:creator>
        <dc:contributor>John Viega</dc:contributor>
        <dc:date>2003-09-07T17:57:19+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=8">
        <title>Detecting Whether the Current Process is Being ptrace()d (Linux Specific)</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=8</link>
        <description>The linux tracing facility is the ptrace(2) system call.  A program with sensitive internals may wish to change its behaviour if it is being traced.  The problem is how to detect if a process ...</description>
        <content:encoded><![CDATA[The linux tracing facility is the <code>ptrace(2)</code> system call.  A program with sensitive internals may wish to change its behaviour if it is being traced.  The problem is how to detect if a process is being ptraced.]]></content:encoded>
        <dc:creator>John Viega</dc:creator>
        <dc:contributor>Dion Mendel</dc:contributor>
        <dc:date>2003-09-07T13:16:03+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=7">
        <title>Validating Email Addresses in JavaScript</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=7</link>
        <description>Your program accepts an email address as input, and you need to verify that the supplied address is valid.</description>
        <content:encoded><![CDATA[Your program accepts an email address as input, and you need to verify that the supplied address is valid.]]></content:encoded>
        <dc:creator>Matt Messier</dc:creator>
        <dc:contributor>Matt Messier</dc:contributor>
        <dc:date>2003-09-05T12:57:07+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=5">
        <title>Preventing Buffer Overflows</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=5</link>
        <description>C and C++ do not perform array-bounds checking, which turns out to be a security-critical issue, particularly in handling strings. The risks increase even more dramatically when user-controlle...</description>
        <content:encoded><![CDATA[C and C++ do not perform array-bounds checking, which turns out to be a security-critical issue, particularly in handling strings. The risks increase even more dramatically when user-controlled data is on the program stack (i.e., is a local variable).]]></content:encoded>
        <dc:creator>John Viega</dc:creator>
        <dc:contributor>John Viega</dc:contributor>
        <dc:date>2003-09-03T09:00:49+00:00</dc:date>
    </item>

    <item rdf:about="http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=4">
        <title>Understanding Basic Data Validation Techniques</title>
        <link>http://www.secureprogramming.com/?action=view&amp;feature=recipes&amp;recipeid=4</link>
        <description>You have data coming into your application, and you would like to filter or reject data that might be malicious.</description>
        <content:encoded><![CDATA[You have data coming into your application, and you would like to filter or reject data that might be malicious.]]></content:encoded>
        <dc:creator>John Viega</dc:creator>
        <dc:contributor>John Viega</dc:contributor>
        <dc:date>2003-09-03T08:30:17+00:00</dc:date>
    </item>

</rdf:RDF>
