我想在Web窗体上验证用户输入,例如有效数字,日期等。哪一种是更好的验证方法,使用Javascript函数或在SQL Server中使用约束?
我希望尽可能减少代码,并希望充分利用SQL Server本身的强大功能。
答案 0 :(得分:9)
你必须同时做到这两点。客户端验证可以防止所有敏感的输入和服务器端(包括在访问数据库之前的代码中),以防止更多恶意企图做事。
因此,在ASP.NET中,至少使用内置的验证器控件,如果需要,它会发出JavaScript。然后,在单击提交按钮时发生的服务器端事件中,选中Page.IsValid
以确保未绕过JavaScript。接下来,确保使用参数化查询来阻止SQL注入。最后,如果所有其他方法都失败,请始终使用约束来确保数据的正确性。
答案 1 :(得分:2)
我建议在客户端和服务器端,因为可能有人可以禁用Javascript并仍然能够提交无效内容。
我建议您在服务器端(在您的操作中)编写约束,然后在客户端JS编写约束;或者您可以查看ASP.Net MVC,它允许您在模型类(.cs)中编写验证,然后通过AJAX表单自动执行客户端验证。
答案 2 :(得分:1)
两者都是因为:
1)如果您允许Web表单传递无效输入,则会浪费带宽。另外,你必须准备另一个页面,上面写着“哦,你输错了,请再试一次哈哈”
2)如果您允许数据库接受无效输入,则其完全错误,因为您可能会破坏数据(例如,当javascript验证失败或遗漏某些内容时)
答案 3 :(得分:1)
这真的取决于你在寻找什么。如果你想要一些快速且非常负载的东西,那么使用Javascript是最好的方法,因为没有往返服务器和等待客户端的时间。缺点是可以禁用Javascript。这意味着您还必须在ASP中进行验证。除了关系数据库所需的限制之外,我不会在数据库中使用约束,因为这只会使您的站点中断。
答案 4 :(得分:1)
通过网络表单提交数据时的一般规则是,必须在服务器端进行验证,而您也可能验证客户端。
如果“SQL vs. JavaScript”是指服务器与客户端,则SQL必不可少; JavaScript是可选的,但在现代应用程序中,您需要验证以避免往返服务器。请注意,您可以在数据库之外执行服务器端验证,但在许多情况下,正如您所说的那样,“使用SQL Server的强大功能”是合适的。
答案 5 :(得分:0)
我想这取决于您是否将从其他应用程序写入数据库。我是在数据库级别以及客户端应用程序级别强制执行数据限制的主要支持者,因为您永远不知道何时需要编写随机脚本来批量导入来自不同来源的数据等。