我应该XSS保护我的API响应吗?

时间:2011-05-06 07:58:45

标签: security api xss

我有一个可以返回JSONXML的RESTful API。

例如,假设对工件(例如文档)的所有注释发出请求:GET /document/DOCUMENT_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
  }
]

在我自己的服务中,第一条评论将在呈现之前进行XSS转义。但是当通过API访问时,我必须相信API的实现者才能进行转义。

如果API是通过浏览器呈现的Web服务实现的,则攻击向量非常真实。

另一方面,如果API是在桌面应用程序或移动应用程序中实现的 - XSS转义将是一个完全麻烦而不需要。

我是否应该通过API返回所有字符串?或者我应该实现一个设置,以便在注册第三方应用程序时,API实现者可以指定是否要转发响应?

了解其他人如何处理这个问题会很有趣。

1 个答案:

答案 0 :(得分:2)

不,你不应该 - XSS处理应该由实际显示数据的任何东西完成。许多第三方ASP.NET控件已经对它们显示的文本实现了XSS保护,因此最终可能会出现文本被双重编码的情况。