Rest Api中XSS攻击的最佳实践



我读了很多关于它的书,但无法真正决定哪种方式是最好的。我有一个web应用程序和一个为客户服务的javarest应用程序。使用restapi和前端中的参数来防止xss攻击的最佳方法是什么?

  • 验证服务器端和客户端中的每个参数
  • 过滤和控制请求参数
  • 在将每个数据放入标记之间之前进行客户端控制等谢谢你抽出时间

对于任何深度防御都很重要,因此应该对任何用户提供的输入进行验证和编码。编码非常重要,因为可能被认为是恶意的是上下文的。例如,安全的HTML可能是SQL注入攻击。

REST API中的参数可能会被保存,这意味着它们会从后续请求中返回,或者结果可能会在请求中反映回用户。这意味着您可以获得反映的和存储的XSS攻击。您还需要小心基于DOM的XSS攻击。服务器XSS和客户端XSS是一种更现代的分类,用于在存储、反射和DOM XSS之间进行地址重叠。

OWASP有一个很棒的跨站点脚本防止作弊表,详细介绍了如何防止跨站点脚本。我发现XSS预防规则摘要和输出编码规则摘要部分非常方便。

最大的好处是浏览器根据上下文对数据进行不同的解析,因此非常重要的是,您不能只对所有地方的数据进行HTML实体编码。这意味着做两件事很重要:

  • 规则#0-仅在允许的位置插入不受信任的(用户提供的(数据。仅将数据插入到HTML文档中的";槽";由规则#1-5定义。

  • 将数据插入某个受信任插槽时,请遵循该特定插槽的编码规则。同样,这些规则在之前链接的跨站点脚本预防作弊表中有详细说明。

还有一个基于DOM的XSS预防备忘单。与服务器端XSS备忘单一样,它提供了一组规则来防止基于DOM的XSS。

对于XSS,唯一可能的选择是验证用户输入,任何类型的用户输入,无论是从浏览器还是以任何其他方式(如从终端客户端(传递。

这取决于您所遵循的场景。如果它只是没有HTML内容的数据,那么您不需要担心XSS。否则,只需删除<>符号或将它们转换成字符编码的字符串就足够了。此外,您可以避免使用innerHTML将新内容附加到文档中,而是使用innerText,即使存在XSS内容,它也不会执行。

但是,当api响应也返回HTML内容时,它会变得有点复杂,您需要在某个地方显示这些内容。在这种情况下,避免直接在HTML片段中显示用户输入-尝试对<>符号,这将是很好的

最新更新