【问题标题】:Sanitize function too sanitary?消毒功能太卫生?
【发布时间】:2020-06-20 21:27:43
【问题描述】:

我正在开发一个为视图清理模型的 web 应用程序。但是,它会删除太多 wanted 字符,例如正斜杠、分号、冒号、美元符号、引号和来自外语的重音字母。例如3/8"W 变为 38w

我是否需要修改该功能以降低攻击性,或者我应该根本不使用 sanitize 功能?我想更大的问题是,消毒是为了什么?

完全披露 - 我没有编写函数,而且我对正则表达式并不出色。

value = value.replace(/[^a-z0-9áéíóúñü .,_-]/gim, "").trim();

【问题讨论】:

  • 这是一个白名单,所以添加更多你想加入白名单的字符
  • 不要消毒。 逃跑。

标签: javascript regex sanitize


【解决方案1】:

清理概念的主要目的是在将数据保存到数据库或使用任何类型的查询进行处理之前清理坏字符中的数据。 也就是说,你不应该太关心在前端清理数据,因为可以禁用 javascript。 客户端的任何东西都可以被绕过。 您应该非常关心后端的这一点。 在保存到数据库之前,应对数据进行清理。 从数据库中检索数据后,应进行转义。

【讨论】:

  • 通常在前端进行清理以防止 XSS。
  • @JosiahKeller,clinet 端清理并不能防止 XSS。
  • Javascript 很容易被禁用,请参考这个问题:stackoverflow.com/questions/44488156/…
  • 这是不正确的。客户端清理不会阻止 XSS。
  • @JosiahKeller 请进行谷歌搜索并提供任何表明客户端清理可防止 XSS 攻击的来源。客户端的任何东西都可以被绕过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 2011-02-25
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
相关资源
最近更新 更多