Security XSS是否应该保护来自API的响应?
我有一个RESTful API,可以返回Security XSS是否应该保护来自API的响应?,security,api,xss,Security,Api,Xss,我有一个RESTful API,可以返回JSON和XML 例如,假设对工件(如文档)上的所有注释发出请求:GET/document/document\u ID/comments.json。响应如下所示: [ { "created_time": 1304598075, "text": "<script type=\"text/javascript\">alert(document.cookie)</script>", "user_id": 229
JSON
和XML
例如,假设对工件(如文档)上的所有注释发出请求:GET/document/document\u ID/comments.json
。响应如下所示:
[
{
"created_time": 1304598075,
"text": "<script type=\"text/javascript\">alert(document.cookie)</script>",
"user_id": 2293,
"id": 184124
},
{
"created_time": 1304598043,
"text": "It's over ninethousaaaaaanddd!!!",
"user_id": 2293,
"id": 184122
}
]
[
{
“创建时间”:1304598075,
“文本”:“警报(document.cookie)”,
“用户id”:2293,
“身份证”:184124
},
{
“创建时间”:1304598043,
“文本”:“这已经超过了Ninethousaaaaanddd!!!”,
“用户id”:2293,
“身份证”:184122
}
]
在我自己的服务中,第一个注释是XSS转义,然后才显示。但是当通过API访问时,我必须信任API的实现者来进行转义
如果API通过浏览器呈现的Web服务实现,则攻击向量是真实的。 另一方面,如果API是在桌面应用程序或移动应用程序中实现的,那么XSS转义将完全是一个麻烦,不需要
我应该转义通过API返回的所有字符串吗?或者我应该实现一个设置,以便在注册第三方应用程序时,API实现者可以指定是否希望转义响应了解其他人是如何处理这个问题的会很有趣。不,你不应该这样做-XSS处理应该由实际将要显示数据的任何人来完成。许多第三方ASP.NET控件已经对它们显示的文本实施了XSS保护,因此最终可能会出现文本双重编码的情况。好吧,这确实是一个很好的理由。为那些想要它的实现者提供选项仍然是一个好主意吗?作为一种选择加入的方式?@John,就我个人而言,我不会,交付数据是webservice(或restapi)的工作,而不是格式化数据以供显示。有足够多的反XSS库,无论UI采用何种形式,都不会出现转义文本输出的问题。