2

我正在创建一个简单的注册表单,我想知道是否有人可以给我一些最佳实践的列表。我知道注册表之间可能会有所不同,但可能需要注意一些准则或注意事项,例如漏洞。我的数据访问层将使用 Entity FrameWork 和 linq 来处理查询。

我认为有意义的做法:

  • 当模型绑定到业务对象时验证表单(完成此操作的最佳方法是什么?)
  • 服务器端验证和客户端验证
  • 检查 SQL 注入?(这方面有什么最佳实践吗?)
  • 为我的客户经理对象使用依赖注入

我的注册字段将如下所示:

  • 电子邮件(必须是来自少数几个网站的电子邮件,例如@gmail.com、@yahoo.com、@live.com)
  • 学校
  • 密码
  • 状态(3 个左右选项的静态下拉列表)

我也非常希望电子邮件激活以及用户必须转到他或她的电子邮件才能使他们的帐户处于活动状态。

4

2 回答 2

2
  • 使用System.ComponentModel.DataAnnotations命名空间来验证您的视图模型。
  • 是的,进行服务器和客户端验证
  • 实体框架已经处理 SQL 注入
  • 如果您担心机器人向您的表单提交发送垃圾邮件,请考虑使用“验证码”

对于电子邮件部分:

过去,我创建了一个将电子邮件映射到随机生成的字符串的数据库表。当您发送完整的注册电子邮件时,请提供一个使用该随机字符串或 guid 或其他内容的链接:

mydomain/completeregistration/7593098573903 whatever

现在,一旦客户点击该链接,并且您处理了该请求,请在数据库中将其注册标记为完成。(这也应该具有阻止对该 URL 的后续请求的效果)

于 2012-07-30T17:24:48.803 回答
2

使用客户端和服务器端验证永远不要只信任客户端验证

使用 DataAnnotations 和 jQuery 验证插件。您不需要编写客户端验证功能。当您使用 HTML Helper 方法呈现 HTML 元素时,MVC 将执行此操作。

实体框架将构建参数化查询。所以你不需要担心 SQL 注入。但是,如果您使用实体框架手动执行 SQL 语句/存储过程,则将其参数化是您的责任。

于 2012-07-30T17:24:57.983 回答