Overview of the SinCWE ReferencesAffected LanguagesThe Sin ExplainedDOM-Based XSS or Type 0Reflected XSS, Nonpersistent XSS, or Type 1Stored XSS, Persistent XSS, or Type 2HTTP Response SplittingCross-Site Request ForgerySinful Ruby on Rails (XSS)Sinful Ruby on Rails (Response Splitting)Sinful CGI Application in Python (XSS)Sinful CGI Application in Python (Response Splitting)Sinful ColdFusion (XSS)Sinful ColdFusion (XSS)Sinful C/C++ ISAPI (XSS)Sinful C/C++ ISAPI (Response Splitting)Sinful ASP (XSS)Sinful ASP (Response Splitting)Sinful ASP.NET Forms (XSS)Sinful ASP.NET (Response Splitting)Sinful JSP (XSS)Sinful JSP (Response Splitting)Sinful PHP (XSS)Sinful PHP (Response Splitting)Sinful CGI Using Perl (XSS)Sinful mod_perl (XSS)Sinful mod_perl (Response Splitting)Sinful HTTP Requests (XSRF)Spotting the Sin PatternSpotting the XSS Sin During Code ReviewSpotting the XSRF Sin During Code ReviewTesting Techniques to Find the SinExample SinsCVE-2003-0712 Microsoft Exchange 5.5 Outlook Web Access XSSCVE-2004-0203 Microsoft Exchange 5.5 Outlook Web Access Response SplittingCVE-2005-1674 Help Center Live (XSS and XSRF)Redemption Steps (XSS and Response Splitting)Ruby on Rails Redemption (XSS)ISAPI C/C++ Redemption (XSS)Python Redemption(XSS)ASP Redemption (XSS)ASP.NET Web Forms Redemption (XSS)ASP.NET Web Forms Redemption (RS)JSP Redemption (XSS)PHP Redemption (XSS)CGI Redemption (XSS)mod_perl Redemption (XSS)Redemption Steps (XSRF)A Note about TimeoutsA Note about XSRF and POST vs. GETRuby on Rails Redemption (XSRF)ASP.NET Web Forms Redemption (XSRF)Non-Draconian Use of HTML EncodeExtra Defensive MeasuresUse HttpOnly CookiesWrap Tag Properties with Double QuotesConsider Using ASP.NET ViewStateUserKeyConsider Using ASP.NET ValidateRequestUse the ASP.NET Security Runtime Engine SecurityConsider Using OWASP CSRFGuardUse Apache::TaintRequestUse UrlScanSet a Default Character SetOther ResourcesSummary