note description: "[ {WSF_PROTECTIONS} Provide application security parterns to assist in Cross Site Scripting ]" date: "$Date$" revision: "$Revision$" EIS: "name=OWASP XSS", "src=https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet", "protocol=uri" EIS: "name=Regular expression protection", "src=https://docs.apigee.com/api-services/reference/regular-expression-protection", "protocol=uri" expanded class WSF_PROTECTIONS feature -- XSS patterns XSS: WSF_PROTECTION_REGEXP note EIS: "name= XSS", "src=https://community.apigee.com/questions/27198/xss-threat-protection-patterns.html#answer-27465", "protocol=uri" once create Result.make_caseless ("((\%%3C)|<)[^\n]+((\%%3E)|>)") ensure is_compiled: Result.is_compiled end XSS_javascript: WSF_PROTECTION_REGEXP note EIS: "name=JavaScript Injection", "src=https://docs.apigee.com/api-services/reference/regular-expression-protection", "protocol=uri" once Result := compiled_regexp ("<\s*script\b[^>]*>[^<]+<\s*/\s*script\s*>", True) ensure is_compiled: Result.is_compiled end feature -- XPath injections Patterns XPath_abbreviated: WSF_PROTECTION_REGEXP note EIS: "name=XPath Abbreviated Syntax Injection", "src=https://docs.apigee.com/api-services/reference/regular-expression-protection", "protocol=uri" once Result := compiled_regexp ("(/(@?[\w_?\w:\*]+(\[[^]]+\])*)?)+", True) ensure is_compiled: Result.is_compiled end XPath_expanded: WSF_PROTECTION_REGEXP note EIS: "name=XPath Expanded Syntax Injection", "src=https://docs.apigee.com/api-services/reference/regular-expression-protection", "protocol=uri" once Result := compiled_regexp ("/?(ancestor(-or-self)?|descendant(-or-self)?|following(-sibling))", True) ensure is_compiled: Result.is_compiled end feature -- Server side injection Server_side: WSF_PROTECTION_REGEXP note EIS: "name=Server-Side Include Injection", "src=https://docs.apigee.com/api-services/reference/regular-expression-protection", "protocol=uri" once Result := compiled_regexp ("