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

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

 2009-02-12 13:55:30 来源:WEB开发网   
核心提示: <script>alert('...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...')</script>insideaquotedstring<script>x=...ESCAPEUNTRUSTEDDATA

<script>alert('...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...')</script>  insideaquotedstring
<script>x=...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...</script>      onesideofanexpression
<divonmouseover=...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...</div>    insideUNquotedeventhandler
<divonmouseover='...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...'</div>   insidequotedeventhandler
<divonmouseover="...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE..."</div>   insidequotedeventhandler

除了字母数字字符外,使用小于256的ASCII值xHH格式 对所有数据进行解码以防止将数据值切换至脚本内容或者另一属性。不要使用任何解码捷径(如" )因为引用字符可能被先运行的HTML属性解析器相匹配。如果事件处理器被引用,则需要相应的引用来解码。这条规则的广泛应用是因为开发者经常让事件处理器保持未引用。正确引用属性只能使用相应的引用来解码,未引用属性可以使用任何字符(包括[space] % * + , - / ; < = > ^ 和|)解码。同时,由于HTML解析器比JavaScript解析器先运行,关闭标签能够关闭脚本块,即使脚本块位于引用字符串中。

ESAPI参考实施

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

No.5 – 在向HTML 样式属性值插入不可信数居前,进行CSS解码

当你想将不可信数据放入样式表或者样式标签时,可以用此规则。CSS是很强大的,可以用于许多攻击。因此,只能在属性值中使用不可信数据而不能在其他样式数据中使用。不能将不可信数据放入复杂的属性(如url,、behavior、和custom (-moz-binding))。同样,不能将不可信数据放入允许JavaScript的IE的expression属性值。

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

Tags:解析 如何 防止

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