REST Web服务以及XSS保护的位置

时间:2011-07-29 15:41:53

标签: web-services rest xss

我想知道在我们的网站上放置XSS保护的最佳位置。我们的团队分为前端和后端团队,并且由于我们使用不同的平台,因此我们将两个组之间的REST用作API。我们有一个字段可以保存应该受到保护的HTML子集,我想知道应该在哪个层进行此操作?

如果网络服务不允许进入数据库,或者消费者在出路时是否应该对其进行验证,确保安全?对于不能包含HTML的字段,我们只是将其保存为原始输入,并让前端在显示之前将其转义。

我的观点是,如果有人试图使用不允许的标记,那么Web服务应该响应数据无效(我们一直使用422来指示无效更新)。我只是想知道其他人的想法。

2 个答案:

答案 0 :(得分:1)

它可能不是一个/或。 Web服务可以从许多UI中调用,并且随着时间的推移Uis会发生变化,它不应该假设所有调用者都是小心/可信的。事实上,有人可以通过手工制作查询来直接调用您的服务吗?

然而,为了便于使用,我们经常选择在UI中进行友好验证和错误报告。我刚刚在网站上填写了一个在线表格,如果任何字段包含非字母数字,那么在服务层中barf。如果UI已经验证了输入点而不是在输入3页后拒绝我的请求,那么它会更好如此

(更不用说如果网站要求您提供雇主的姓名,而且该名称实际上包含撇号,您似乎有点受阻!)

答案 1 :(得分:0)

你应该同时使用两者。典型的模式是尝试在路上消毒可怕的数据(如果给定值需要消毒,你应该真的拒绝请求)和编码。

前者的原因是编码有时会被遗漏。后者的原因是您的数据库不能被信任为数据源(人们无需访问您的客户端即可访问它,或者您的客户可能遗漏了某些内容)。