ASP.NET 表单验证方法与客户端(浏览器)服务器交互机制的故事
想到这个问题完全是一个意外吧,是在寻找另外一个问题答案的过程中,才对验证方法与浏览器服务器交互机制的关系有了清晰的认识。
先说下验证方法,验证方法分为前台验证和后台验证。
前台验证就是类似jQuery.Validate这类的插件,当然也可以我们自己写。
后台验证就是ASP.NET自带的验证控件,如RequiredFieldValidator。
记得初学.NET的时候,那会儿接触验证控件,也知道验证分为前台,后台。但是随着时间的推移,由于做的项目基本上都是公司内部使用的软件,比如OA。因为这种项目对安全性要求没有那么高。所以追随着老员工直接就用前台验证去做每个项目,代替的是慢慢的忘记了两者是有不同的这个事实。直到昨天,才好像唤起了以前的记忆,恍然大悟的感觉。
对于验证,如果我们同时加前台验证和后台验证,这样会使项目的安全性提高,但相对的来说,会消耗一些性能。选择哪样就要看你更需要哪样。
再说下客户端(浏览器)服务器交互机制
有点大白话:浏览器会封装一个请求报文(可以理解为信),发给服务器,服务器解析这个报文,进行重组,生成一个响应报文,回发给浏览器
(回信),浏览器收到后再对其进行解析,就生成了我们看到的网页和一些我们看不到的数据。它们之间的通信都是遵循HTTP协议。
那两者会有怎样的“故事”呢?
是这样的,如果我只使用前台验证,也就是在我点击提交按钮之后,浏览器封装请求报文之前去验证,如果发现有不合格的地方,就直接提示错误,也就不会有之后的请求报文,也就不会与服务器有交互的动作,所有动作都是在客户端本地去做的。
如果只使用后台验证,那么无论表单上的内容合格不合格,这个请求报文是指定发出去了,服务器收到后去做验证,之后把验证结果返给浏览器。
所以说前台验证安全性差,后台验证安全性强,但是会增加服务器端的负荷。
通常如果项目是内部使用的,如OA之类的,其实完全可以只使用前台验证,这就明白了为什么单位的老员工都只写前台验证方法了。
如果项目是对外使用的话,那么就用后台验证就可以了,不过加上前台验证的话,会更好一些,因为加了前台验证,会大大减轻服务器的负荷,比如验证个非空,就可以直接在前台干掉,不用访问服务器。如果验证与数据相关,那样才有必要访问服务器。
这就是它和它的故事,比较基础的知识点,作为一个记录,高手勿喷~
ASP.NET 表单验证方法与客户端(浏览器)服务器交互机制的故事的更多相关文章
- SharePoint2010基于表单验证方法总结(转载)
系统环境: win2008r2+ sql2008r2 +Visual Studio2010+sharepoint 2010 A.如果已经建立了web application 例如名字为: http: ...
- ASP.NET 表单验证实现浅析
首先,自然是配置 Web.config,在 <system.web> 下设定: <authentication mode="Forms"> <form ...
- 原生js制作表单验证,基本的表单验证方法
表单验证是web前端最常见的功能之一,也属于前端开发的基本功.自己完成一个表单验证的开发,也有助于加深对字符串处理和正则表达式的理解. 基本的表单验证包括如:字母验证.数字验证.字母和数字验证.汉字验 ...
- jquery的表单验证方法,一个function能不能同时捕捉点击事件和按键事件?能不能再优化下,有代码。
// 该jquery扩展引自 http://www.ghostsf.com/tools/389.html 方法名是作者博客的命名 $.fn.ghostsf_serialize = function ( ...
- Model中设置表单验证方法
Model类里面定义$_validate属性支持的验证因子格式: 格式:array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间). 验证条件: (1)Model::EXISTS_TO_ ...
- ASP.NET 表单验证
静态脚本 oncilentClick() 静态使用方法 也可以$获取ID动态添加脚本 1.Response.Write(); 2.通过Register方式 3.Attribus方式根据控件ID进行添加 ...
- 常用JS表单验证方法
/*输入:str返回:如果全是空返回true,否则返回false*/function isNull(str) {if (str == "") return true;var reg ...
- 常用javascript表单验证方法
//座机电话验证(支持分机) function chekeTel(tel) { var Tel = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/; if (Tel.test(tel)) ...
- js 表单验证方法二
function ckReight () { var pass = true; var new = $("#new"); if( new.find('input[name=name ...
随机推荐
- C# winform中listview排序
本文解决方案是采用下面链接中的解决方案.十分感谢这篇文章的作者bright:http://blog.163.com/shensc@126/blog/static/1312896522010614103 ...
- LOJ#2076. 「JSOI2016」炸弹攻击(模拟退火)
题面 传送门 题解 退火就好了 记得因为答案比较小,但是温度比较高,所以在算\(\exp\)的时候最好把相差的点数乘上一个常数来让选取更劣解的概率降低 话虽如此然而我自己打的退火答案永远是\(0\)- ...
- Prufer codes与Generalized Cayley's Formula学习笔记
\(Prufer\)序列 在一棵\(n\)个点带标号无根树里,我们定义这棵树的\(Prufer\)序列为执行以下操作后得到的序列 1.若当前树中只剩下两个节点,退出,否则执行\(2\) 2.令\(u\ ...
- ecshop后台0day漏洞原理+利用方法 XSS+Getshll
发布日期:2012-10.25 发布作者:dis9@ztz 漏洞类型:跨站攻击 代码执行 0x0 后台getshell 在 includes/cls_template.php fetch函数 /** ...
- rpm -ivh 这个ivh是干什么的
安装的时候显示安装进度 --从百度知道复制过来的 RMP 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了.这种软件安装包通常是一个RPM包(Redhat Linux Packet Ma ...
- linux互传文件nc命令
使用nc命令可以很快的在两台主机传递文件,且不需要在同一网段,只要设置好端口即可. 一.安装(CentOS下) yum install -y nc (需要root权限,可以用加上sudo) 二.使用 ...
- Gym-101873D-Pants On Fire(闭包)
原题链接:2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017) Pants On Fire Donald and M ...
- Xcode升级到9.3之后pod问题
最近新建了一个项目,然后在终端pod init的时候出现了问题,复制粘贴部分错误信息 MacBook-Pro:testDemo xywy$ pod init [in /Users/xywy/Deskt ...
- 架构师养成记--18.NIO
有人叫new IO 我这里就叫Non-block IO 经典概念: Buffer(缓冲区):之前直接通过流,现在提供一个buffer存放数据. Channel:管道,包括ServerSocketCha ...
- Machine learning 第7周编程作业 SVM
1.Gaussian Kernel function sim = gaussianKernel(x1, x2, sigma) %RBFKERNEL returns a radial basis fun ...