我们正在开发Android移动应用程序,将有大约8-10个屏幕,每个屏幕上约10个领域。在每个屏幕上,我们需要向服务器“提交”数据。我们应该在哪里执行与长度、格式相关的验证-在服务器端还是在应用程序端?如果我们在应用程序端做这件事,我们使用JavaScript做这件事是有限制的。我们希望视图考虑到性能影响和调试的简易性。
发布于 2014-03-01 22:30:04
您应该在客户端和服务器端都进行验证。
客户端:客户端上的验证使您的应用程序更快,因为在向用户显示有关不正确的格式、长度或必填字段的任何信息之前,您不必等待服务器的响应。它还使您能够实时处理验证,这将导致大量的用户体验。我不明白你为什么要用javascript,因为你正在写一个Android应用程序。This文章中有一些关于它的信息。
服务器端:这是防止错误数据的地方。服务器端的检查几乎永远不需要,因为客户端已经进行了检查。检查只是为了防止任何人绕过客户端检查并传递虚假数据。
如果你只想或者可以实现其中的一个,那就应该是服务器端的检查。
发布于 2014-03-01 22:34:00
UI逻辑的复杂性是常见的问题。但很明显,当您可以添加任何检查时,您应该以这样的方式组织代码。要调试应用程序(在手机上运行),你可以尝试使用Android4.4和remote debugging of WebView。
另外,我想你应该在服务器端执行验证。逻辑必须接受或拒绝进入处理链的数据。也有可能有人会调用你的逻辑,而不仅仅是你自己的应用程序。
发布于 2014-03-01 22:39:07
最好的解决方案是在客户端和服务器端执行双重验证。
假设数据验证是一个简单的CPU限制操作,并且可以由任何移动设备在合理的时间内快速完成(即不会影响性能),第一次客户端验证可以防止您的应用程序执行可能无用的网络请求,这意味着网络无用流量的生成以及取决于用户与其电信运营商的合同可能意味着成本。此外,这是后端系统处理无效数据的额外工作,即使一个单一的验证是一个简单的操作,因为您可能(希望)在几个设备上安装了许多应用程序实例,因此此工作将成倍增加,并对服务器造成很大的负载。
然而,你无法避免最终的服务器端验证,因为我们生活在现实世界中,而不是理想的世界中,任何客户端操作都不能被认为是安全的!
您正在使用的技术(在您的情况下是javascript)不会影响或影响上述考虑!所有技术都提供了足够的现成的验证和调试工具!
https://stackoverflow.com/questions/22115515
复制相似问题