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

Jon*_*der 5 security api xss

我有一个 RESTful API 可以同时返回JSONXML.

说,例如,一个请求被用于诸如一个文档作为这样的伪影的所有评论制成: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
  }
]
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

slu*_*ter 2

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