【问题标题】:XSS attacks, multiple html sanitizationXSS 攻击,多个 html 清理
【发布时间】:2018-12-23 08:39:20
【问题描述】:

我正在开发一个 Web 服务项目,其中显示了从数据库中获取的一些数据,这些数据又由用户的输入组成。当然,我想防止我的应用程序容易受到 XSS 攻击,所以显然我会清理来自 html 特殊字符的输入。但我有以下问题 - 从服务器返回的数据格式为

感谢所有回答。

【问题讨论】:

  • 您使用的是哪个服务器?
  • 这是 spring boot,为了清理 html,我使用 spring 的 htmlEscape 函数
  • 看到这个问题:stackoverflow.com/a/7810880/362536

标签: html database security xss


【解决方案1】:

您无法可靠地清理用户输入。这是一场失败的战斗。一旦你认为你已经过滤掉了所有的“坏”字符,就会有人传入转义序列或其他意想不到的东西

如果您使用的是数据库服务器,请确保所有输入都由预编译的存储过程处理,并确保 Web 应用登录的用户只有 EXECUTE 权限。这可以防止 SQL 注入和其他恶作剧。

如果您担心实际字符,请确保您有“通过正常字符”过滤器,而不是“删除坏字符”过滤器。 “好字符”的数量是有限的,而攻击向量的数量是无限的。

至于您关于“

看起来你在逃避它时遇到了问题,看起来你在决定是否需要逃避它时遇到了问题。选择一个标准并坚持下去,然后根据需要进行转换。如果它通常未转义,只需以这种方式存储它,并在您想要显示它时将其转义。

【讨论】:

  • 感谢您的详尽回答。我目前正在通过 spring 方法转义字符,但问题在于后端和前端的多次转义。所以 '&' 被转义为 &这使得净化后的字符串不可渲染(只有 & 被正确解析为 '&')。你知道解决这个问题的简单方法吗,还是我必须自己编写代码?
【解决方案2】:

在 Spring Boot 的 XSS 上下文中清理返回给用户的不受信任数据的最佳方法是使用适合您需求的模板引擎(例如 JSP)。

模板引擎将自动生成您需要的 HTML,将其正确转义并将内容插入所需的占位符(如果异步请求出现编码损坏的问题)。 小心并检查所选引擎是默认执行此操作还是需要特殊指令才能执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 2010-12-07
    • 2021-02-22
    • 2022-01-08
    • 2011-02-16
    • 1970-01-01
    相关资源
    最近更新 更多