数据验证之类型与格式

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

    我一向给予用户最大的自由和最严格的限制。这两点并不矛盾,对于用户的输入,能不做限制的地方尽量不做限制,但是一旦做出限制,就要进行严格的验证。比如在允许用户输入字符的地方,我会允许用户输入任何字符;在要求用户输入日期的地方,则对日期格式进行验证。
    对于接收到的数据,安全的做法是验证其是否为空,长度及数据类型是否符合要求(与数据库字段定义是否一致),格式是否符合要求,甚至需要验证其来源。这样做,不仅是为了避免服务器返回错误,还可以避免遭受功击。
    让我们看一下攻击者是怎么做的吧。以SQL注入为例,假如你有一个页面是list.asp?id=1,攻击者做的第一步是在这个URL后面加上and 1=1,如果你对接收到的id的值没有做数据类型的验证,攻击者会得到一个正常的页面,这就等于告诉他们,他们终究会得到他们想要的东西。
    下面给出几个我常用的用于验证数据类型及格式的自定义函数

Rem 验证自然数
function CheckNar(thisnar)
   dim patrn,matc
   patrn = "^[1-9]{1}(/d)*$"
   matc = CheckExp(patrn,thisnar)
   CheckNar = matc
end function

Rem 验证电子邮件地址
function CheckMail(thismail)
   dim patrn,matc
   patrn = "^((/w)+[.-_]?(/w)+)+[@]{1}(/w)+([.]{1}(/w)+){1,3}$"
   matc = CheckExp(patrn,thismail)
   CheckMail = matc
end function

Rem 验证电话号码
function CheckTel(thistel)
   dim patrn,matc
   patrn = "^([0]{1}(/d)+[-]{1})?([1-9]{1}(/d)+[-]{1})?[1-9]{1}(/d)*$"
   matc = CheckExp(patrn,thistel)
   CheckTel = matc
end function

Rem 验证邮编
function CheckZip(thiszip)
   dim patrn,matc
   patrn = "^[0-9]{6}$"
   matc = CheckExp(patrn,thiszip)
   CheckZip = matc
end function

Rem 验证日期
function CheckDate(thisdate)
   dim patrn,matc,theyear,themonth,theday,thisdate_s
   patrn = "^(19|20){1}(/d){2}[-]{1}[01]?(/d){1}[-]{1}[0-3]?(/d){1}$"
   matc = CheckExp(patrn,thisdate)
   if matc = true then
      thisdate_s = split(thisdate,"-")
      theyear  = cint(thisdate_s(0))
      themonth = cint(thisdate_s(1))
      theday   = cint(thisdate_s(2))
      if theday = 0 then matc = false
      if themonth > 12 or themonth=0 then matc = false
      if themonth = 2 then
         '闰年
         if (theyear mod 4 = 0) and (theyear mod 100 <> 0) or (theyear mod 400 = 0) then
            if theday > 29 then matc = false
         else
            if theday > 28 then matc = false
         end if
      end if
      if themonth = 4 or themonth = 6 or themonth = 9 or themonth = 11 then
         if theday > 30 then matc = false
      else
         if theday > 31 then matc = false
      end if
   end if
   CheckDate = matc
end function

Rem 正则表达式
function CheckExp(patrn,Strng)
   dim re,matchs
   Set re=new RegExp
   re.IgnoreCase =true
   re.Global=True
   re.Pattern = patrn
   matchs = re.Test(Strng)
   CheckExp = matchs 
   set re=Nothing
end function

    以上自定义函数全部利用了正则表达式。
    电子邮件地址,允许在邮件名(@以前的部分)使用.、-、_三个字符。
    电话号码,只允许输入数字及连字符"-",对于010-88888888-8或88888888或13888888888等格式返回True
    对于日期的验证,原本我们可以使用ASP内置的CData()函数:

    function checkDate(dt)
       on error resume next
       tmp = cdate(dt)
       if err.number <> 0 then
          checkDate = false
       else
          checkDate = true
       end if
    end function

    对于2005-1-1,05-1-1,05/1/1,2000-2-29返回True,对于2005-13-1,2005-2-29返回False,看上去似乎没有问题,但是对于05/2/29,也返回True,因为函数误认为我们要验证的是1929-2-5或2029-2-5,于是,我只好自己写一个函数了。该函数只可验证1900-2099之间的日期,通用性有一定限制,而且只允许以类似2005-7-15的格式输入日期,不过,它很准确。

    [本文仅发表于 www.netop.ccblog.csdn.net/netopsnetops.blogchina.com 若见于其它各处,皆为转载]
数据格式验证和清理工具的优缺点有哪些? 数据格式验证和清理工具的优缺点 一、数据格式验证工具 (一)优点 提高数据准确性 能够精确地检查数据是否符合预定义的格式规则。例如,在处理金融数据时,数据格式验证工具可以确保金额数据遵循特定的数字格式(如小数点后两位),避免因格式错误导致的计算错误。 对于日期、时间等具有特定格式要求的数据验证工具可以防止输入符合标准格式(如“yyyy - mm - dd”的日期格式)的数据进入后续处理流程,从而提高整个数据处理和分析的准确性。 增强数据一致性 可以在多个数据源或数据输入点强制执行相同的格式 阅读详情

相关推荐

数据格式验证和清理对数据分析有什么影响?

数据格式验证和清理对数据分析的影响 一、提高数据质量 (一)准确性 数据格式验证的作用 通过验证数值类数据是否符合要求,例如确保数字列中只包含数字字符,可以避免在数据分析过程中出现类转换错误。例如,在计算销售额总和时,如果销售额列中存在非数字字符,进行验证会导致求和函数无法正确计算,得出错误的结果。 对于日期和时间类数据,正确的格式验证能保证日期相关的计算(如计算两个日期之间的天数、计算季度等)准确无误。如果日期格式错误,如将“2023 - 01 - 01”写成“01 - 01 - 23”且

alankuo的专栏 713

数据格式验证问题

NotEmpty : /.+/,  Email : /^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/,  Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^  Currency : /^\d+(\.\d+)?$/,  Number : /^\d+$/,

keleguohn的专栏 576

数据清洗验证系统

Pandas Great Expectations 的深度结合,使数据清洗效率提升 60%,验证实现全量自动化,数据质量问题发现从 T+3 天缩短至实时。AI 驱动优化:利用 Transformer 模自动生成 Expectations 规则联邦学习集成:构建分布式数据质量模,解决数据孤岛问题知识图谱赋能:将业务规则融入验证流程,提升数据合规性技术栈建议调度层:Airflow 2.7+(支持动态 DAG 生成)存储层:Delta Lake(支持数据版本回溯质量快照)

weixin_44975687的博客 1612

Excel——数据验证,保证数据录入更规范

珞珈AI办公的个人空间-珞珈AI办公个人主页-哔哩哔哩视频公众号【珞珈AI办公】回复【B站】领取30套顶级商业PPT模板商业表格素材❤️跟着我,从零到一学会EXCEL❤️。

龙皮皮的博客 7630

常见数据格式校验

常用数字处理校验(包含前后端)

weixin_45176509的博客 878

前端数值类格式校验

前端数值类格式校验(转换),包括纯整数,一位小数,两位小数等。

weixin_46801673的博客 505

验证数据的四种方法

/ false - instanceof 支持 基本数据的校验。// false - instanceof 支持 基本数据的校验。// false - instanceof 支持 基本数据的校验。// 4. Object.prototype.toString.call() 测试 - 我称它为 大BOSS。

前端泡面人 519

【SpringMVC】数据格式化+数据验证

在上一节的内容中,我们着重了解了SpringMVC的视图解析器。理清了一个请求从发送到响应的整个大致流程,最主要的是在Controller中为什么可以通过return一个字符串,就可以跳转到响应的页面。这节我们来了解一下SpingMVC其余的一些内容。在此之前,我们先提出一个需求:当我们需要对提交数据的类进行限制的时候,应该如何来处理❓✅利用之前所学的知识 ,我们可以通过前端js来做限制,也可以通过在后端Servlet中根据需求来做一些数据的转化工作。

喃灬疯的博客 541

FastStream消息验证:Schema验证数据格式检查

在现代分布式系统中,消息队列(Message Queue)已成为微服务架构的核心组件。然而,随着系统复杂度增加,消息格式一致、数据验证缺失等问题频繁出现,导致系统稳定性下降。FastStream作为新一代Python异步消息处理框架,提供了强大的消息验证机制,帮助开发者构建健壮的消息驱动应用。 本文将深入探讨FastStream的消息验证功能,涵盖Schema验证数据格式检查、自定义验证器等...

gitblog_00770的博客 1017

YOLOV5---数据格式转化及训练集和验证集划分

YOLOV5---数据格式转化及训练集和验证集划分VOC标签格式转yolo格式并划分训练集和测试集标签为yolo格式数据集划分训练集和验证集 VOC标签格式转yolo格式并划分训练集和测试集 yolov5训练所需要的文件格式是txt格式的,基于labelimage标注的格式有VOC(xml格式),同时训练自己的yolov5检测模的时候,数据集需要划分为训练集和验证集。 本文基于python,实现了将xml格式的标签文件转换为txt文件,同时按比例划分为训练集和验证集的功能。 import xml.etr

q1552211的博客 2万+

SpringBoot 接口API对数据格式验证 数据验证 格式验证 Validation

【代码】SpringBoot 接口API对数据格式验证 数据验证 格式验证 Validation。

生产队的驴 621

validator输出验证:输出数据格式验证

在日常开发中,我们经常遇到这样的问题:API接口返回的数据格式符合预期,导致前端解析失败;配置文件输出格式错误,导致系统启动异常;数据导出文件格式规范,影响下游系统处理。这些问题往往在运行时才被发现,给开发和运维带来巨大困扰。 Go-Playground Validator(简称validator)作为Go语言生态中最强大的数据验证库,仅能验证输入数据,更能为输出数据格式验证提供完整解决...

gitblog_00068的博客 491

如何处理导入 Excel时 数据格式验证和清理?

基于正则表达式验证对于一些文本格式数据,如邮箱地址,可以使用正则表达式进行验证。在监听器的invoke方法中对每一行数据进行验证。例如:= null &&!throw new RuntimeException("邮箱格式错误: " + user . getEmail());} // 其他数据处理 } @Override public void doAfterAllAnalyzed(AnalysisContext analysisContext) {

alankuo的专栏 1281

Univer表格终极指南:数据验证条件格式完整教程

在日常工作中,你是否经常遇到因数据录入错误导致统计报表准确的问题?或者面对密密麻麻的表格数据,难以快速发现关键信息?Univer作为一款企业级文档数据协作解决方案,其强大的数据验证和条件格式功能正是解决这些痛点的利器。本文将带你从零开始,全面掌握这两项核心功能的使用方法,让你的表格数据处理效率提升数倍!✨ ## 一、数据验证:构建智能数据防线 数据验证功能就像是表格的"智能守门员",能够确

gitblog_00480的博客 1015

KMP OpenHarmony 数据验证工具 - 验证各种数据格式

本文介绍了基于Kotlin Multiplatform(KMP)的跨端数据验证工具实现方案。该工具支持多种常见数据格式验证,包括电子邮件、电话号码、URL、身份证号、银行卡号、IP地址和日期格式。核心功能采用正则表达式实现严格验证规则,并提供详细错误反馈。工具特点包括多格式支持、自定义规则扩展、高性能批量验证和跨平台兼容性。代码示例展示了电子邮件、电话号码和URL的验证实现,涵盖格式检查、长度限制和特殊字符处理等关键验证逻辑,确保数据验证的一致性和可靠性。

2501_94445135的博客 880

validator CSV验证:CSV数据格式验证

在日常数据处理中,CSV(Comma-Separated Values,逗号分隔值)文件是最常见的数据交换格式之一。然而,CSV数据格式验证往往成为开发者的痛点:字段缺失、数据错误、格式规范等问题频发。使用Go-Playground Validator库,我们可以构建强大的CSV数据验证解决方案,确保数据质量和系统稳定性。 读完本文你将掌握: - ✅ CSV数据验证的核心挑战解决方案 ...

gitblog_00613的博客 484

SpringMVC系列九: 数据格式验证及国际化

SpringMVC系列九: 数据格式验证及国际化

你好, 我在学java的博客 952

SpringMVC数据验证——注册用户格式验证实例

服务器端的数据验证,对于一个WEB应用来说是非常重要的,而Spring从3.0开始支持JSR-303规范,它定义了一些标准的验证约束,同时也提供了一个可扩展的自定义方式来满足同的开发需要,大象以SSM3为基础,结合实例来说明如何通过Spring MVC用自定义约束注解的方式来实现Validator验证。 validation-api是JSR-303规范的标准接口,hibernate-validator则是这套接口的一个实现,而hibernate-validator的实现里面又会用到slf4j,所以还需要加

Evankaka的专栏 1万+

nuclei输入验证:目标格式检查数据清洗

在网络安全扫描领域,输入验证是确保扫描准确性和可靠性的第一道防线。nuclei作为一款现代化的高性能漏洞扫描器,其输入验证机制仅保证了扫描目标的正确解析,还通过智能的数据清洗和格式转换,显著降低了误报率并提升了扫描效率。 **输入验证的核心价值**: - 防止无效目标浪费扫描资源 - 确保协议特定的格式要求得到满足 - 支持多种输入格式的智能转换 - 提供灵活的数据清洗和标准化 ## nuc...

gitblog_00300的博客 821
上一篇: 数据验证之特殊字符处理
下一篇: 数据验证之完整示例
netops
博客等级 码龄22年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值