【发布时间】:2012-08-26 05:42:37
【问题描述】:
我对防止 XSS 攻击有疑问。
1) 问题:
我有一个 HTML 模板作为 Javascript 字符串(受信任)并插入来自服务器请求的内容(不受信任)。我将 HTML 模板字符串中的占位符替换为不受信任的内容,并使用 innerHTML/Text 将其输出到 DOM。
我特别插入了我在模板 HTML 字符串和表单元素值中已经存在的 <div> 和 <p> 标记中输出的文本,即输入标记的 value 属性、select option 和 textarea 标记中的文本。
我是否理解正确,我可以将上面提到的每个插入文本视为 HTML 子上下文,因此我只像这样编码:encodeForJavascript(encodeForHTML(inserted_text))。还是我必须对插入到 HTML 属性子上下文的输入字段的值属性中的文本进行编码?
在 OWASP 上阅读此问题后,我倾向于认为后者仅在我通过 Javascript 设置具有不受信任内容的属性时才需要,如下所示:document.forms[ 0 ].elements[ 0 ].value = encodeForHTMLAttribute,对吗?
2) 问题:
服务器端编码服务器响应通过 Ajax 进入客户端并得到处理(如问题 1)的附加价值是什么。另外,我们在对内容进行双重编码时不会有问题吗?
谢谢
【问题讨论】:
标签: attributes xss encode