服务端校验and客户端校验

Vezn 2016-08-06 03:24:41
今天加班。。看着代码突然有个问题。目前公司软件以web为主做ERP,大家应该知道ERP对于数据的完整性和准确性相对要求比较高,但是我发现我们公司系统有这么几个问题:
1.大部分的数据校验都是在客户端用js,比如字段必填检查等;
2.很多计算都是js前端计算好,保存后服务端直接存储,基本没有在服务端进行校验和检查

如果浏览器的js被禁用,那这个系统不就瘫了,垃圾数据会很多咯,当然,一般企业应用的不会去特地把js给禁了。可是这样的做法总感觉不妥。

不知道各位是怎么处理的。一般来说,服务端再进行重算或校验是最保险的,但是数据一大肯定很影响性能。而且客户端校验一次,服务端校验一次,岂不是很低效吗?

突然想到的困惑。好奇各位一般是如何处理的。
...全文
506 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vezn 2016-08-08
  • 打赏
  • 举报
回复
引用 6 楼 daixf_csdn 的回复:
4、客户端校验和服务端校验应该明确分工,避免不合理的客户端校验代替服务端校验。比如你们公司这个问题可能就比较严重。 比如使用ajax向服务端发起无刷新校验,这种校验方式原则上并不适合客户端,应该将校验提交到服务端来处理。ajax的无刷新体验不可滥用。举例说明一个情形: 假设你以客户端ajax调用服务端方法来进行校验,那么理论上服务端就可以不校验了。但是客户端ajax被禁止了怎么办?服务端又没校验,系统就裸奔了。 -》 因此,服务端必须校验。 -》但是,客户端也校验了,服务端也校验了,两次调用服务器,造成服务器资源浪费 -》 所以,客户端不应该使用ajax调用服务端的校验,这样整个提交过程,只需要一次服务器校验 客户端校验一般适用于纯页面数据的校验。
听你这么一提,我发现其实好像还真是好多地方用ajax去校验,一样很危险。而大部分都是客户端校验。。这种系统如果有人恶意禁用js来操作,搞破坏,是不是就完蛋了。。。。感觉好像很多公司都有这种问题。。
Vezn 2016-08-08
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
从更高层面,比如说许多“小老板”,皮包公司,他们认为从网上随便 down 一个商城系统就能成为淘宝网,而在实际操作时他们有容易仅仅相信前端工程师的谎言。 淘宝网如果只有前端工程师,除了浪费发工资的钱,能有什么好处?前端越来越倾向于使用自己研发的 CMS 等等来适配业务人员、客户的定制需求,而不是纯粹手工编程。关键是,核心就在于服务。 前端在必要时应该非常低廉的成本外包出去。这才是web应用长期发展的观念。
之前了解到node.js,据说可以在服务端运行,似乎是全栈最好的利器,我没具体了解过。请问下,假如真的用node.js这种去服务端做处理,优势是什么呢?如果真是这样,岂不是大家只要学好js,不必再分前后端语言了?好像听起来对java,c#这种传统服务端语言有所冲击,是不是这样呢?
圣殿骑士18 2016-08-08
  • 打赏
  • 举报
回复
引用 7 楼 Vezn_King 的回复:
[quote=引用 3 楼 sp1234 的回复:] 从更高层面,比如说许多“小老板”,皮包公司,他们认为从网上随便 down 一个商城系统就能成为淘宝网,而在实际操作时他们有容易仅仅相信前端工程师的谎言。 淘宝网如果只有前端工程师,除了浪费发工资的钱,能有什么好处?前端越来越倾向于使用自己研发的 CMS 等等来适配业务人员、客户的定制需求,而不是纯粹手工编程。关键是,核心就在于服务。 前端在必要时应该非常低廉的成本外包出去。这才是web应用长期发展的观念。
之前了解到node.js,据说可以在服务端运行,似乎是全栈最好的利器,我没具体了解过。请问下,假如真的用node.js这种去服务端做处理,优势是什么呢?如果真是这样,岂不是大家只要学好js,不必再分前后端语言了?好像听起来对java,c#这种传统服务端语言有所冲击,是不是这样呢?[/quote] node.js不能包办一切,虽然我不会这东东,但也看过一些文章,它的优势是“高并发的、简单的、多任务系统”。 解释型语言是无法代替编译型语言的。后端的业务逻辑复杂度可以是前端的几十几百倍,前端能很好的应付UI领域的需求,但满足不了后端更复杂的业务领域的需求。
圣殿骑士18 2016-08-07
  • 打赏
  • 举报
回复
4、客户端校验和服务端校验应该明确分工,避免不合理的客户端校验代替服务端校验。比如你们公司这个问题可能就比较严重。 比如使用ajax向服务端发起无刷新校验,这种校验方式原则上并不适合客户端,应该将校验提交到服务端来处理。ajax的无刷新体验不可滥用。举例说明一个情形: 假设你以客户端ajax调用服务端方法来进行校验,那么理论上服务端就可以不校验了。但是客户端ajax被禁止了怎么办?服务端又没校验,系统就裸奔了。 -》 因此,服务端必须校验。 -》但是,客户端也校验了,服务端也校验了,两次调用服务器,造成服务器资源浪费 -》 所以,客户端不应该使用ajax调用服务端的校验,这样整个提交过程,只需要一次服务器校验 客户端校验一般适用于纯页面数据的校验。
圣殿骑士18 2016-08-07
  • 打赏
  • 举报
回复
1、服务端校验是必须的,完整的,这和性能无关,也就是说,再怎么影响性能,你都要做 2、客户端校验不是为了省去服务端校验,而是为了减少客户端向服务端发起的无效请求,这也减轻了服务器的压力 3、客户端校验一次,服务端校验一次,并不低效。从性能上看,并无低效一说,客户端校验是聪明的利用客户端的资源,来节省服务器资源。从代码层面看,似乎服务器端,客户端都要写一次校验代码,但你可能知道asp.net mvc就有一套代码同时实现(至少是部分实现)服务端客户端校验的功能,换句话说,这种问题正在被解决。
  • 打赏
  • 举报
回复
引用 楼主 Vezn_King 的回复:
不知道各位是怎么处理的。一般来说,服务端再进行重算或校验是最保险的,但是数据一大肯定很影响性能。而且客户端校验一次,服务端校验一次,岂不是很低效吗?
“越低级的东西越高效,乱的东西反而‘很爽’,简单的只会做点皮毛的人有时候一不小心反而升为开发管理人员”,这其实就是许多别有用心的人到处去忽悠的。因为这种初级的东西,会很容易迷惑住少量不懂开发管理的投资者的眼睛,促成冲动性投资。
  • 打赏
  • 举报
回复
从更高层面,比如说许多“小老板”,皮包公司,他们认为从网上随便 down 一个商城系统就能成为淘宝网,而在实际操作时他们有容易仅仅相信前端工程师的谎言。 淘宝网如果只有前端工程师,除了浪费发工资的钱,能有什么好处?前端越来越倾向于使用自己研发的 CMS 等等来适配业务人员、客户的定制需求,而不是纯粹手工编程。关键是,核心就在于服务。 前端在必要时应该非常低廉的成本外包出去。这才是web应用长期发展的观念。
  • 打赏
  • 举报
回复
这个问题不是你说的这些点,实际上是更普遍的一个问题。 你看比较垃圾的“网络”软件,其实就是一个简单的前端,然后就对远程数据库“增删改查”。这样的程序会让纯粹业余编程爱好者觉得“很爽”,而让大系统的负责人觉得很恐怖。这就是成熟度问题。 一个业务的逻辑设计,在服务器端一定有所体现。例如用户的电子邮件地址中必须包含且只包含一个@符号,后边的看起来是个域名,只要是业务逻辑设计文档中有这个,那么服务器端就必须有这个。管它客户端是什么操作系统、什么编程语言开发的呢? 反过来看,为什么没有这种观念?还不就是一些抵挡的前端人员突然觉得“全栈很简单”,觉得只要会增删改查就可以不要服务器端系统了,不就是这种人存在么!在桌面开发中,15年前,这种人才被清理出专业开发人员队伍。但是最近3年,一些web前端人员又来整这种东西了,因为web前端开发阵营还是非常混乱的,没有把那些不合格的业余编程爱好者(尽管有些人应为懂点 javascript 框架而被一些开源社区成为“布道师”,其实多系统架构特别是大型服务系统完全无知)清除出专业架构师行列,让这些人在一些 web 项目中暂时降低了、损害了 web后端系统设计水平。
Poopaye 2016-08-06
  • 打赏
  • 举报
回复
请问您的系统以下哪方面更重要? ( ) A. 效率 B. 安全

7,763

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧