javascript - 何时清除用户输入中的尾随/前导空格 - 输入时或数据库插入之前?

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

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

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

我认为这可能会在几个阶段发生:

  1. 用户表单输入后立即 - ala Javascript 函数在输入/预提交时进行剥离
  2. 在 Controller 内部提交参数
  3. 中间模型/属性方法
  4. 数据库持久化之前或之后

这方面的最佳实践是什么,特别是在某个阶段或多个阶段这样做的优点/缺点?)

最佳答案

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

  • 对于标准的网络应用程序,我想说您肯定希望在提交之前清理浏览器上的数据,以便您可以验证它(例如,如果电子邮件有前导空格或长度检查)。尽可能在不向服务器发送数据的情况下进行验证会更好。

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

  • 如果不良数据可能导致安全问题(XSS 或 SQL 注入(inject)),那么您需要在服务器和客户端上清除它。即使在网络应用程序上,也无法阻止恶意用户伪造来自网络浏览器的请求。如果数据中的空格不会破坏任何内容,那么这可能没有必要(如果有人“恶意”在他们的博客标题中添加前导空格,这可能看起来很奇怪,但这只会伤害他们)

关于javascript - 何时清除用户输入中的尾随/前导空格 - 输入时或数据库插入之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42730684/

相关文章:

javascript - 如何使用jquery替换html标签

ruby-on-rails - 如何启动 rails server localhost :3000 on ubuntu 12. 04

ruby-on-rails - Rails session 在 DELETE 请求时被销毁

mysql - 数据库中的数据太多 - 需要做出 "replication"决策

mysql - 插入前触发不起作用

javascript - 如何在 Gulp 任务中为多个管道制作外观

javascript - 我无法理解代码的执行

javascript - 在使用 JavaScript 更改 CSS 类时转义正斜杠 ("/")

ruby-on-rails - 设计不使用 LDAP 进行身份验证

sql - 在 Phonegap 中运行 SQL 查询