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

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

 2009-02-12 13:55:30 来源:WEB开发网   
核心提示: Stringsafe=ESAPI.encoder().encodeForHTML(request.getParameter("input"));No.3 – 在向HTML常见属性插入不可信数据前进行属性解码这条规则是将不可信数据转化为典型属性值(如宽度、名称

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

No.3 – 在向HTML常见属性插入不可信数据前进行属性解码

这条规则是将不可信数据转化为典型属性值(如宽度、名称、值等),这不能用于复杂属性(如href、src、style或者其他事件处理程序)。这是及其重要的规则,事件处理器属性(为HTML JavaScript Data Values)必须遵守该规则。

<divattr=...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...>content</div>  insideUNquotedattribute
<divattr='...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...'>content</div> insidesinglequotedattribute
<divattr="...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...">content</div> insidedoublequotedattribute

除了字母数字字符外,使用小于256的ASCII值&#xHH格式(或者命名的实体)对所有数据进行解码以防止切换属性。这条规则应用广泛的原因是因为开发者常常让属性保持未引用,正确引用的属性只能使用相应的引用进行解码。未引用属性可以被很多字符破坏,包括[space] % * + , - / ; < = > ^ 和 |。

ESAPI参考实施

String safe = ESAPI.encoder().encodeForHTMLAttribute( request.getParameter( "input" ) );

No.4 – 在向HTML JavaScript Data Values插入不可信数据前,进行JavaScript解码

这条规则涉及在不同HTML元素上制定的JavaScript事件处理器。向这些事件处理器放置不可信数据的唯一安全位置就是“data value”。在这些小代码块放置不可信数据是相当危险的,因为很容易切换到执行环境,因此请小心使用。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:解析 如何 防止

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