引子
偶的在一次面试
A:怎样保证用户输入的数据合法和安全。
B:可以使用数据验证,数据验证分为客服端数据验证和服务器端数据验证。
客服端数据验证一般使用JavaScript来实现,但是这种验证方式容易被用户禁用或者被不怀好意的人绕过,存在不稳定性和安全性。
服务器端数据验证一般ASP.NET程序里面验证,但是这样验证就会增加服务器负担。处于性能问题和用户体验考虑一般结合两种验证方式一起使用。
A:你觉得数据验证是属于哪一层处理的(因为在次之前谈一个网站采用了简单三层架构)。
B:界面层(当时这样想的,JavaScript还有ASP.NET验证控件在界面层)。
A:你再考虑一下。
B:业务逻辑层(界面层是不处理数据的逻辑的所以这样回答)。
今天看到关于数据验证,突然想起和大家分享一下,指出当时面试中出现的一些问题。
问题一.我当时该回答使用ASP.NET验证控件来验证数据。
这些控件可以实现能够同时实现客服端数据验证和服务器端数据验证。控件还能够智能的判断客户端的浏览器设备而自动生成不同的客服端脚本,或者完全禁用客户端数据验证。
ASP.NET共有六种验证控件,分别如下:
控件名 功能描叙
RequiredFieldValidator(必须字段验证) 用于检查是否有输入值
CompareValidator(比较验证) 按设定比较两个输入
RangeValidator(范围验证) 输入是否在指定范围
RegularExpressionValidator(正则表达式验证) 正则表达式验证控件
CustomValidator(自定义验证) 自定义验证控件
ValidationSummary(验证总结) 总结验证结果
问题二.数据验证属于哪一层,就要问提问者是服务端数据验证还是客户端数据验证。如果是服务器端数据验证应该属于业务逻辑层处理,如果是客户端数据验证应该属于界面层处理。
其中具体的细节请参考其他资料。