何时从用户输入清除尾随/前导空格 - 在输入时或在DB插入之前?

时间:2017-03-11 02:36:57

标签: javascript ruby-on-rails database forms model-view-controller

我有一个适用于基于MVC的平台的问题,但我想也适用于处理用户表单输入的任何基于Web的平台。

从用户输入中删除尾随/前导空格的最佳实践和理想阶段是什么?

我发现这可能发生在几个阶段:

  1. 立即在用户表单输入 - ala Javascript函数在键入/提交前删除
  2. 在Params提交的控制器内部
  3. 中级模型/属性方法
  4. 数据库持久性之前或之后
  5. 这方面的最佳做法是什么,特别是在某个阶段或多个阶段进行此操作的专业人士/企业?

2 个答案:

答案 0 :(得分:1)

我认为这取决于应用程序的类型:

  • 对于标准的网络应用程序,我会说你肯定想在提交之前的某个时间清理浏览器上的数据,以便你可以验证它(例如,如果它有一个领先的空间或者一个电子邮件将无法验证长度检查)。最好在不在可能的情况下将数据发送到服务器进行验证。

  • 如果您正在编写API,尤其是公共API,我肯定会清理数据服务器端或返回错误。您无法信任客户端向您发送干净的数据。我可能会在验证之前在模型中执行此操作,这不应该自动执行。

  • 如果错误数据可能导致安全问题(XSS或SQL注入),那么您希望在服务器和客户端上清除它。即使在Web应用程序上,也没有任何东西阻止恶意用户伪造来自Web浏览器的请求。如果数据中的空格不会破坏任何内容,那么这可能就没有必要了(如果有人恶意地为他们的博客标题添加了一个领先的空间,它可能看起来很奇怪,但它只会伤害他们)

答案 1 :(得分:0)

我认为这是一个非常基于意见的问题。这取决于正在实施的人员以及申请。 如果您在用户输入后不必立即清理,我会说避免#1,因为它会在用户输入时让您感到困惑,而且它会对较慢/较小的设备产生性能影响。 #2#3都非常相似,关于#3的一个好处是,如果你在很多地方使用相同的属性,你的修剪逻辑将只存在于一个地方,但两者都将在你的服务器上运行,从客户端设备上取消了这一点。

#4取决于您的DBMS可能非常容易或难以实施。

我会亲自选择#2#3,但我的意见和其他人的意见完全不同于我。

如果你有一个正确的阶段,你肯定不需要做多次。