解析如何防止XSS跨站脚本攻击
2009-02-12 13:55:30 来源:WEB开发网<script>...NEVERPUTUNTRUSTEDDATAHERE...</script> directlyinascript
<!--...NEVERPUTUNTRUSTEDDATAHERE...--> insideanHTMLcomment
<div...NEVERPUTUNTRUSTEDDATAHERE...=test/> inanattributename
<...NEVERPUTUNTRUSTEDDATAHERE...href="/test"/> inatagname
更重要的是,不要接受来自不可信任来源的JavaScript代码然后运行,例如,名为“callback”的参数就包含JavaScript代码段,没有解码能够解决。
No.2 – 在向HTML元素内容插入不可信数据前对HTML解码
这条规则适用于当你想把不可信数据直接插入HTML正文某处时,这包括内部正常标签(div、p、b、td等)。大多数网站框架都有HTML解码的方法且能够躲开下列字符。但是,这对于其他HTML context是远远不够的,你需要部署其他规则。
<body>...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE... </body>
<div>...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...</div>
以及其他的HTML常用元素
使用HTML实体解码躲开下列字符以避免切换到任何执行内容,如脚本、样式或者事件处理程序。在这种规格中推荐使用十六进制实体,除了XML中5个重要字符(&、<、 >、 "、 ')外,还加入了斜线符,以帮助结束HTML实体。
&-->&
<--><
>-->>
"-->"
'-->''isnotrecommended
/-->/forwardslashisincludedasithelpsendanHTMLentity
ESAPI参考实施
更多精彩
赞助商链接