WEB开发网
开发学院网络安全安全技术 解析如何防止XSS跨站脚本攻击 阅读

解析如何防止XSS跨站脚本攻击

 2009-02-12 13:55:30 来源:WEB开发网   
核心提示: <style>selector{property:...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...;}</style>propertyvalue<spanstyle=property:...ESCAPEUNTRUSTEDDA

<style>selector{property:...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...;}</style>  propertyvalue
<spanstyle=property:...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...;>text</style>    propertyvalue

除了字母数字字符外,使用小于256的ASCII值HH格式对所有数据进行解码。不要使用任何解码捷径(如" )因为引用字符可能被先运行的HTML属性解析器相匹配,防止将数据值切换至脚本内容或者另一属性。同时防止切换至expression或者其他允许脚本的属性值。如果属性被引用,将需要相应的引用进行解码,所有的属性都应该被引用。未引用属性可以使用任何字符(包括[space] % * + , - / ; < = > ^ 和|)解码。同时,由于HTML解析器比JavaScript解析器先运行,</script>标签能够关闭脚本块,即使脚本块位于引用字符串中。

ESAPI参考实施

Stringsafe=ESAPI.encoder().encodeForCSS(request.getParameter("input"));

No.6- 在向HTML URL属性插入不可信数据前,进行URL解码

当你想将不可信数据放入链接到其他位置的link中时需要运用此规则。这包括href和src属性。还有很多其他位置属性,不过我们建议不要在这些属性中使用不可信数据。需要注意的是在javascript中使用不可信数据的问题,不过可以使用上述的HTML JavaScript Data Value规则。

<ahref=http://...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...>link</a>    anormallink
<imgsrc='http://...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...'/>      animagesource
<scriptsrc="http://...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE..."/>    ascriptsource

除了字母数字字符外,使用小于256的ASCII值%HH 解码格式对所有数据进行解码。在数据中保护不可信数据:URL不能够被允许,因为没有好方法来通过解码来切换URL以避免攻击。所有的属性都应该被引用。未引用属性可以使用任何字符(包括[space] % * + , - / ; < = > ^ 和|)解码。 请注意实体编码在这方面是没用的。

ESAPI参考实施

Stringsafe=ESAPI.encoder().encodeForURL(request.getParameter("input"));

上一页  3 4 5 6 7 8 

Tags:解析 如何 防止

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接